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

255 lines
10 KiB
Markdown
Raw Normal View History

2026-01-22 10:52:30 +08:00
# 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错误码映射