# 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:错误码映射