datai/docs/requirements/2026-01-21-003-01-salesforce-multi-system-config.md

255 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Salesforce 多系统配置需求
## 元数据
- 需求编号2026-01-21-003-01
- 父需求编号2026-01-21-003
- 创建时间2026-01-21
- 创建人SSOT 架构师
- 状态:待开始
- 优先级:高
## 需求概述
实现 Salesforce 多系统配置功能,支持配置多个不同类型的 Salesforce 系统,支持用户自定义系统类型,支持区分源 org 和目标 org支持同一系统既是源 org 又是目标 org支持配置系统名称、自定义类型、登录方式等支持启用/停用系统,系统配置变更无需审批流程,系统配置无权限限制,密码、安全令牌等敏感信息使用 EncryptUtils 加密存储。
## 目标
1. **多系统配置**:支持配置多个不同类型的 Salesforce 系统
2. **用户自定义类型**:支持用户自定义系统类型(不限于 production/sandbox/developer
3. **源目标区分**:支持区分源 org 和目标 org支持同一系统既是源 org 又是目标 org
4. **系统管理**:支持配置系统名称、自定义类型、登录方式等
5. **状态管理**:支持启用/停用系统
6. **无审批流程**:系统配置变更无需审批流程
7. **无权限限制**:系统配置无权限限制
8. **敏感信息加密**:密码、安全令牌等敏感信息使用 EncryptUtils 加密存储
## 业务上下文
### 当前问题
- 系统只支持单个 Salesforce 系统配置
- 缺乏对不同类型 Salesforce 系统的支持
- 缺乏源 org 和目标 org 的区分
### 业务场景
```
Salesforce 多系统配置
├─ 支持多个 Salesforce 系统
├─ 支持用户自定义系统类型
├─ 支持区分源 org 和目标 org
├─ 支持同一系统既是源 org 又是目标 org
├─ 敏感信息加密存储(使用 EncryptUtils
└─ 无需审批,无权限限制
```
### 应用场景
1. **多环境管理**:管理生产环境、沙盒环境、自定义环境等多个 Salesforce 系统
2. **灵活配置**:用户可以自定义系统类型,无需审批和权限限制
## 功能需求
### 核心功能
#### 功能 1系统配置管理
- **描述**:支持配置多个不同类型的 Salesforce 系统
- **验收标准**
1. 支持添加 Salesforce 系统
2. 支持编辑 Salesforce 系统
3. 支持删除 Salesforce 系统
4. 支持查询 Salesforce 系统列表
5. 支持分页查询
6. 支持按系统名称、系统类型、org 类型筛选查询
7. 支持按状态筛选查询(正常/停用)
8. 系统名称必须唯一
- **优先级**:高
- **依赖关系**:依赖数据库表设计
#### 功能 2系统类型管理
- **描述**:支持用户自定义系统类型
- **验收标准**
1. 支持用户自定义系统类型(不限于 production/sandbox/developer
2. 系统类型为自由文本字段
3. 不限制系统类型的取值范围
- **优先级**:高
- **依赖关系**:依赖系统配置管理功能
#### 功能 3源目标区分
- **描述**:支持区分源 org 和目标 org支持同一系统既是源 org 又是目标 org
- **验收标准**
1. 支持标记系统为源 org
2. 支持标记系统为目标 org
3. 支持同一系统既是源 org 又是目标 org
4. 支持查询所有源 org
5. 支持查询所有目标 org
6. 支持根据 org 类型筛选系统
- **优先级**:高
- **依赖关系**:依赖系统配置管理功能
#### 功能 4登录方式配置
- **描述**:支持配置不同的登录方式
- **验收标准**
1. 支持配置 OAuth2 登录方式oauth2
2. 支持配置 Session ID 登录方式session_id
3. 支持配置 Salesforce CLI 登录方式cli
4. 支持配置 Legacy Credential 登录方式legacy_credential
5. OAuth2 登录方式需要配置login_url、client_id、client_secret、grant_type、username、password、security_token
6. Session ID 登录方式需要配置login_url、session_id、server_url
7. Salesforce CLI 登录方式需要配置org_alias、private_key_path、private_key_password
8. Legacy Credential 登录方式需要配置login_url、username、password、security_token
9. OAuth2 授权类型支持password密码授权、client_credentials客户端凭证授权、authorization_code授权码授权
10. 授权码授权方式需要配置code、state 参数(用于防止 CSRF 攻击)
- **优先级**:高
- **依赖关系**:依赖系统配置管理功能
#### 功能 5敏感信息加密
- **描述**:密码、安全令牌等敏感信息使用 EncryptUtils 加密存储
- **验收标准**
1. 密码使用 EncryptUtils 加密存储
2. 安全令牌使用 EncryptUtils 加密存储
3. OAuth 客户端密钥使用 EncryptUtils 加密存储
4. 私有密钥密码使用 EncryptUtils 加密存储
5. 读取时自动解密
6. 存储时自动加密
- **优先级**:高
- **依赖关系**:依赖系统配置管理功能
#### 功能 6状态管理
- **描述**:支持启用/停用系统
- **验收标准**
1. 支持启用系统
2. 支持停用系统
3. 停用的系统不能用于登录
4. 支持按状态筛选查询(正常/停用)
- **优先级**:高
- **依赖关系**:依赖系统配置管理功能
## 非功能需求
### 性能需求
- **查询时间**:系统列表查询响应时间 < 1
- **并发用户数**支持 100+ 并发用户
### 安全需求
- **数据安全**密码安全令牌等敏感信息使用 EncryptUtils 加密存储
- **无权限限制**系统配置无权限限制
### 可维护性需求
- **代码可读性**代码符合项目编码规范注释完整
- **测试覆盖率**单元测试覆盖率 80%
## 数据需求
### 数据模型
#### datai_sf_system_configSalesforce 系统配置表)
```
datai_sf_system_config (Salesforce 系统配置表)
├─ id (BIGINT) - 主键ID
├─ system_name (VARCHAR) - 系统名称(唯一)
├─ system_type (VARCHAR) - 系统类型(用户自定义)
├─ org_type (VARCHAR) - 组织类型S=源 org T=目标 org ST=源和目标 org可同时选中
├─ login_type (VARCHAR) - 登录类型oauth2/session_id/cli/legacy_credential
├─ login_url (VARCHAR) - 登录 URL如 https://login.salesforce.com
├─ client_id (VARCHAR) - OAuth 客户端 ID
├─ client_secret (VARCHAR) - OAuth 客户端密钥(使用 EncryptUtils 加密存储)
├─ grant_type (VARCHAR) - OAuth 授权类型password/client_credentials/authorization_code
├─ username (VARCHAR) - 用户名
├─ password (VARCHAR) - 密码(使用 EncryptUtils 加密存储)
├─ security_token (VARCHAR) - 安全令牌(使用 EncryptUtils 加密存储)
├─ session_id (VARCHAR) - Session ID由 Salesforce 登录后返回)
├─ server_url (VARCHAR) - 服务器 URLInstance URL
├─ refresh_token (VARCHAR) - 刷新令牌
├─ token_expires_at (DATETIME) - 令牌过期时间
├─ org_alias (VARCHAR) - Salesforce CLI 组织别名
├─ private_key_path (VARCHAR) - 私有密钥路径
├─ private_key_password (VARCHAR) - 私有密钥密码(使用 EncryptUtils 加密存储)
├─ code (VARCHAR) - OAuth 授权码
├─ state (VARCHAR) - OAuth state 参数,用于防止 CSRF 攻击
├─ sf_user_id (VARCHAR) - Salesforce 用户 ID由 Salesforce 登录后返回)
├─ user_id (VARCHAR) - 用户 ID由 Salesforce 登录后返回)
├─ org_id (VARCHAR) - 组织 ID由 Salesforce 登录后返回)
├─ org_name (VARCHAR) - 组织名称(由 Salesforce 登录后返回)
├─ status (CHAR) - 状态0正常 1停用
├─ sort_order (INT) - 排序
├─ create_by (VARCHAR) - 创建者
├─ create_time (DATETIME) - 创建时间
├─ update_by (VARCHAR) - 更新者
└─ update_time (DATETIME) - 更新时间
```
### 数据存储需求
- **数据库类型**MySQL 8.3.0
- **存储容量**单表支持 1000 + 数据
- **数据备份策略**每日备份保留 7
### 数据流转需求
```
系统配置
└─ 管理员添加/编辑/删除 Salesforce 系统
└─ 更新数据库中的系统配置
└─ 密码、安全令牌等敏感信息使用 EncryptUtils 加密存储
└─ 无需审批流程
└─ 无权限限制
```
## 业务规则
1. **系统名称唯一性**系统名称system_name必须唯一
2. **用户自定义类型**系统类型system_type由用户自定义不限制为固定值
3. **源目标区分**每个系统可以标记为源 org 或目标 org支持同一系统既是源 org 又是目标 org
4. **敏感信息加密**密码安全令牌等敏感信息必须使用 EncryptUtils 加密存储
5. **无审批流程**系统配置变更无需审批流程
6. **无权限限制**系统配置无权限限制
7. **停用系统限制**停用的系统不能用于登录
## 接口需求
### 系统配置管理接口
1. **添加系统配置**
- 接口路径POST /api/salesforce/system/config
- 请求参数系统配置信息
- 响应系统配置 ID
2. **编辑系统配置**
- 接口路径PUT /api/salesforce/system/config/{id}
- 请求参数系统配置信息
- 响应成功/失败
3. **删除系统配置**
- 接口路径DELETE /api/salesforce/system/config/{id}
- 响应成功/失败
4. **查询系统配置列表**
- 接口路径GET /api/salesforce/system/config/list
- 请求参数分页参数筛选参数
- 响应系统配置列表
5. **查询系统配置详情**
- 接口路径GET /api/salesforce/system/config/{id}
- 响应系统配置详情
6. **启用系统**
- 接口路径PUT /api/salesforce/system/config/{id}/enable
- 响应成功/失败
7. **停用系统**
- 接口路径PUT /api/salesforce/system/config/{id}/disable
- 响应成功/失败
8. **查询源 org 列表**
- 接口路径GET /api/salesforce/system/config/source
- 响应 org 列表
9. **查询目标 org 列表**
- 接口路径GET /api/salesforce/system/config/target
- 响应目标 org 列表
## 依赖关系
- 依赖 `datai-common` 模块的 `EncryptUtils` 工具类
- 依赖 `datai-system` 模块的基础功能
- 依赖 `datai-salesforce-common` 模块的 Salesforce API 封装
## 后续需求
- 2026-01-21-003-02策略模式登录
- 2026-01-21-003-03登录历史
- 2026-01-21-003-04缓存优化
- 2026-01-21-003-05会话管理
- 2026-01-21-003-06登录状态查询
- 2026-01-21-003-07错误码映射