# Prompt-013: Salesforce组织配置管理实现 ## 输入引用 引用相关的 docs 文档链接: - [REQ-010-3.md](../requirements/REQ-010-3.md) - Salesforce组织配置管理需求文档 - [REQ-010-1.md](../requirements/REQ-010-1.md) - 数据库表结构设计和创建 - [REQ-010-2.md](../requirements/REQ-010-2.md) - 基础实体类和Mapper创建 - [ADR-0012-org-config-management.md](../decisions/adr/0012-org-config-management.md) - Salesforce组织配置管理架构决策 - [010-metadata-retrieve-deploy-sub-requirements.md](../requirements/010-metadata-retrieve-deploy-sub-requirements.md) - REQ-010子需求拆分文档 ## Context Maps 强制列出本次 Prompt 依赖的 Canvas 文件: - [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示 - **相关节点**: [SessionManager](node_session_manager_detail) - 会话管理,提供登录服务 - **相关节点**: [集成核心](node_integration_core) - 提供与Salesforce的各种连接方式 ## 目标 实现 Salesforce 组织配置的完整管理功能,包括: 1. **组织配置 CRUD 功能**:实现组织配置的增删改查,支持多环境配置 2. **OAuth 认证信息加密存储**:使用 AES-256-CBC 加密算法加密存储 OAuth 认证信息 3. **环境类型管理**:使用枚举类型管理环境类型(Sandbox/Production) 4. **存储根路径配置**:支持 OSS 和本地文件系统存储路径配置 5. **连接状态管理**:使用枚举类型管理连接状态(Active/Inactive/Auth_Invalid) 6. **配置验证功能**:验证 OAuth 认证信息格式和连接可用性 ## 输出格式 ### 1. 代码结构 ``` datai-salesforce-metadata/ └── src/main/java/com/datai/metadata/ ├── controller/ │ └── DataiMetaOrgConfigController.java ├── service/ │ ├── DataiMetaOrgConfigService.java │ └── impl/ │ └── DataiMetaOrgConfigServiceImpl.java ├── util/ │ └── EncryptionUtil.java └── enums/ ├── EnvironmentType.java └── ConnectionStatus.java ``` ### 2. 代码要求 - **Controller 层**:使用 `@RestController`、`@RequestMapping`、`@PreAuthorize` 等注解 - **Service 层**:使用 `@Service`、`@Transactional` 等注解 - **Mapper 层**:继承 MyBatis Plus 的 `BaseMapper` - **参数验证**:使用 `@Valid`、`@NotNull`、`@NotBlank` 等注解 - **异常处理**:使用统一的异常处理机制 - **响应格式**:使用统一的响应格式(AjaxResult) ### 3. API 接口 - `POST /api/metadata/org-config` - 创建组织配置 - `PUT /api/metadata/org-config/{id}` - 更新组织配置 - `DELETE /api/metadata/org-config/{id}` - 删除组织配置 - `GET /api/metadata/org-config/{id}` - 查询组织配置详情 - `GET /api/metadata/org-config` - 查询组织配置列表(支持分页和条件查询) - `POST /api/metadata/org-config/{id}/validate` - 验证组织配置 ### 4. 单元测试 - 为 Service 层编写单元测试 - 为 Controller 层编写集成测试 - 测试覆盖率 >= 80% ## 约束 ### 技术栈限制 - 必须基于现有的 Spring Boot 3 + Vue 3 技术栈 - 必须使用 MyBatis Plus 作为持久层框架 - 必须使用现有的认证模块和 SessionManager 进行会话管理 - 必须使用现有的集成核心功能进行 Salesforce API 调用 ### 架构约束 - 必须遵循 Authentication.canvas 中定义的架构和调用关系 - 必须使用 Controller-Service-Mapper 三层架构 - 必须使用 SessionManager 进行会话管理和自动重新登录 - 必须使用现有的认证模块进行 OAuth 认证 ### 安全约束 - OAuth 认证信息必须加密存储,不存明文密码 - 必须使用 AES-256-CBC 加密算法 - 加密密钥必须安全存储 - 必须使用配置文件或环境变量管理加密密钥 ### API 约束 - API 接口必须符合 RESTful 规范 - 必须使用统一的响应格式 - 必须使用统一的异常处理机制 - 必须使用统一的日志记录规范 ### 代码规范约束 - 代码必须符合项目编码规范 - 必须有清晰的注释 - 必须使用 Lombok 减少样板代码 - 必须使用 Jackson 处理 JSON ## Rule Set "请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。" **具体规则**: - 必须使用 Canvas 中定义的类名和方法名 - 必须遵循 Canvas 中定义的调用关系 - 必须参考 Canvas 中的流程图逻辑 - 必须使用 SessionManager 进行会话管理和自动重新登录 - 必须使用现有的认证模块进行 OAuth 认证 - 必须使用现有的集成核心功能进行 API 调用 - 必须遵循现有的异常处理机制 - 必须遵循现有的日志记录规范 ## 验收标准 ### 功能验收标准 - [ ] 能够成功创建、编辑、删除、查询组织配置 - [ ] OAuth 认证信息加密存储成功,解密功能正常工作 - [ ] 环境类型和连接状态枚举管理正确 - [ ] 存储路径配置和验证功能正常工作 - [ ] 配置验证功能正常工作,返回详细的错误信息 - [ ] API 接口符合 RESTful 规范,支持分页和条件查询 ### 性能验收标准 - [ ] 加密解密性能满足要求,不影响系统响应 - [ ] 配置查询性能满足要求,支持分页查询 - [ ] 配置验证性能满足要求,不影响用户体验 ### 安全验收标准 - [ ] OAuth 认证信息加密存储,符合安全标准 - [ ] 加密密钥安全存储,不泄露 - [ ] 配置信息访问权限控制正确 ### 代码质量验收标准 - [ ] 代码符合项目编码规范,有清晰的注释 - [ ] 代码结构清晰,易于扩展和维护 - [ ] 单元测试覆盖率 >= 80% - [ ] 集成测试覆盖主要业务场景 ## 风险 ### 技术风险 - **加密密钥泄露**:如果加密密钥泄露,可能导致 OAuth 认证信息泄露 - **缓解措施**:加密密钥存储在配置文件中,使用环境变量或密钥管理服务 - **连接状态同步**:连接状态可能因为网络问题或 Salesforce API 限制而变化 - **缓解措施**:定期检查连接状态,使用 SessionManager 自动重新登录 - **路径验证失败**:路径验证可能因为权限问题或网络问题而失败 - **缓解措施**:提供详细的错误信息,支持手动配置路径 ### 业务风险 - **配置错误**:配置错误可能导致元数据拉取和部署失败 - **缓解措施**:提供配置验证功能,确保配置正确 - **多环境配置混乱**:多环境配置可能导致配置混乱 - **缓解措施**:使用环境类型枚举管理,提供清晰的配置界面 ## 使用记录 | 日期 | 使用场景 | 输入参数 | 输出结果 | 反馈 | 改进措施 | |------|---------|---------|---------|------|----------| | 2026-01-18 | 实现 Salesforce 组织配置管理功能 | REQ-010-3 需求文档、ADR-0012 架构决策 | 生成 Controller、Service、Mapper、加密工具类、枚举类代码 | - | - |