255 lines
10 KiB
Markdown
255 lines
10 KiB
Markdown
# 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_config(Salesforce 系统配置表)
|
||
```
|
||
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) - 服务器 URL(Instance 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:错误码映射
|