datai/docs/archive/REQ-010.md

230 lines
13 KiB
Markdown
Raw Permalink Normal View History

# Requirements - Salesforce元数据拉取和部署
## 需求信息
- **需求名称**: Salesforce元数据拉取和部署
- **需求类型**: 功能需求
- **需求编号**: REQ-010
- **创建日期**: 2026-01-17
- **需求版本**: v1.0.0
- **需求提出人**: 系统管理员
- **需求状态**: 待审核
## 输入引用
引用相关的 docs 文档链接:
- [0000-template.md](0000-template.md) - 需求文档模板
- [元数据模块设计](../reference-code/metadata/001-元数据模块设计) - 数据库设计和模块架构
- [元数据拉取参考网页地址](../reference-code/metadata/002-元数据拉取参考网页地址) - 官方文档和开源项目参考
- [元数据拉取和部署数据库设计推荐](../reference-code/metadata/003-元数据拉取和部署数据库设计推荐) - 数据库设计推荐
- [元数据部署网页资料链接地址](../reference-code/metadata/004-元数据部署网页资料链接地址) - 部署相关参考资料
## Context Maps
强制列出本次需求依赖的 Canvas 文件:
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
- **相关节点**: [集成核心](node_integration_core) - 提供与Salesforce的各种连接方式
- **相关节点**: [SessionManager](node_session_manager_detail) - 会话管理,提供登录服务
- **相关节点**: [集成任务](node_integration_task) - 处理Salesforce的定时同步任务
- **相关节点**: [通用常量](node_common_constant) - Salesforce相关常量定义
## 需求目标
本需求的目标是实现一个健壮的Salesforce元数据拉取和部署系统支持多环境管理、版本回溯、增量比对和自动化运维。通过Metadata API实现元数据的拉取、存储、管理和部署确保开发团队能够高效地进行代码版本控制、环境迁移和CI/CD集成。
## 需求描述
### 概述
本需求旨在实现Salesforce元数据的完整生命周期管理包括元数据拉取、存储、版本控制、增量比对和部署功能。系统支持多环境配置Dev/UAT/Prod、定时任务调度、异步执行、文件哈希对比、Quick Deploy和Destructive Changes等高级功能。
### 详细需求
#### 1. 基础配置管理
- **需求描述**: 提供Salesforce组织配置管理功能支持多环境配置、OAuth认证管理、存储配置管理等。创建sf_org_config表存储组织信息、认证配置、环境类型、存储配置等。
- **优先级**: 高
- **验收标准**:
- 能够成功添加、编辑、删除Salesforce组织配置
- 支持OAuth认证配置client_id、client_secret、refresh_token、instance_url
- 支持环境类型选择Sandbox/Production
- 支持多种存储渠道配置local/minio/oss
- 支持存储类型选择和切换
- 支持存储桶配置bucketName、basePath、permission等
- 本地存储路径格式验证正确,支持相对路径和绝对路径
- MinIO存储配置支持URL、AccessKey、SecretKey
- OSS存储配置支持Endpoint、AccessKey、SecretKey、BucketName
- 支持存储权限配置public/private
- 支持主存储渠道配置
- 支持连接状态管理Active/Inactive/Auth_Invalid
- 能够自动刷新OAuth Access Token
- 存储配置中的敏感信息AccessKey、SecretKey必须加密存储
- sf_org_config表创建成功包含所有必需字段
- **依赖关系**: 依赖于认证模块、集成模块和datai-scene-file模块
- **实现建议**: 基于现有的认证功能扩展组织配置管理使用SessionManager进行会话管理使用datai-scene-file模块提供的StorageBucket抽象接口和StorageUtils工具类进行存储管理
#### 2. 任务定义管理
- **需求描述**: 提供元数据任务定义功能支持配置拉取规则、package.xml内容、API版本、调度类型等。创建sf_metadata_task表存储任务名称、组织关联、package_xml_content、api_version、schedule_type、cron_expression等。
- **优先级**: 高
- **验收标准**:
- 能够成功创建、编辑、删除元数据任务
- 支持package.xml内容配置支持多种元数据类型
- 支持API版本选择
- 支持调度类型选择Manual/Cron
- 支持Cron表达式配置
- sf_metadata_task表创建成功包含所有必需字段
- package.xml格式符合Salesforce Metadata API规范
- **依赖关系**: 依赖于基础配置模块
- **实现建议**: 基于现有的任务调度功能扩展元数据任务管理支持package.xml可视化编辑
#### 3. 元数据拉取
- **需求描述**: 实现Salesforce元数据拉取功能使用Metadata API的retrieve()方法支持异步执行、状态轮询、Zip文件下载、文件解压和存储。创建sf_job_execution表记录每次拉取的执行信息创建sf_metadata_component表记录元数据组件详情和文件哈希。
- **优先级**: 高
- **验收标准**:
- 能够成功调用Metadata API retrieve()方法
- 支持异步执行流程发送请求→获取Job ID→轮询状态→下载Zip
- 支持状态监控Pending/Processing/Success/Failed/Partial_Success
- 支持Zip文件下载和解压
- 支持文件存储到OSS/本地文件系统
- 存储路径结构符合规范:/{org_name}/{task_name}/{job_id_timestamp}/src/
- 支持文件哈希计算MD5/SHA256
- sf_job_execution表创建成功记录执行历史
- sf_metadata_component表创建成功记录组件详情和哈希值
- 支持文件数量统计和错误信息记录
- **依赖关系**: 依赖于基础配置模块、任务定义模块和会话管理
- **实现建议**: 基于现有的集成核心功能集成Salesforce Metadata API实现异步拉取逻辑参考官方Java示例代码
#### 4. 元数据部署
- **需求描述**: 实现Salesforce元数据部署功能使用Metadata API的deploy()方法支持异步执行、状态轮询、Quick Deploy、Destructive Changes、单元测试要求等。创建sf_deploy_history表记录每次部署的执行信息。
- **优先级**: 高
- **验收标准**:
- 能够成功调用Metadata API deploy()方法
- 支持异步执行流程发送请求→获取Job ID→轮询状态→获取结果
- 支持部署选项配置checkOnly、testLevel、runTests等
- 支持Quick Deploy功能使用ValidationID进行秒级部署
- 支持Destructive Changes删除元数据
- 支持单元测试要求生产环境75%代码覆盖率)
- 支持部署结果解析(错误信息、代码覆盖率等)
- 支持部署包Zip结构规范package.xml在根目录元数据在对应文件夹
- sf_deploy_history表创建成功记录部署历史
- 支持部署状态监控Pending/Processing/Success/Failed/Partial_Success
- 支持API版本一致性检查
- **依赖关系**: 依赖于基础配置模块和元数据资产模块
- **实现建议**: 基于现有的集成核心功能集成Salesforce Metadata API实现异步部署逻辑参考Ant Migration Tool实现
#### 5. 元数据资产管理
- **需求描述**: 实现元数据资产索引和查询功能支持元数据组件的结构化存储、版本回溯、增量比对等。通过sf_metadata_component表的哈希值对比实现增量检测和变更分析。
- **优先级**: 中
- **验收标准**:
- 能够查询元数据组件详情(类型、名称、文件路径、哈希值)
- 支持按Job ID查询组件列表
- 支持按组件类型和名称查询
- 支持哈希值对比,检测文件变更
- 支持版本回溯(查询历史版本的组件)
- 支持增量比对对比两次Job的差异
- 支持变更统计(新增、修改、删除的组件数量)
- sf_metadata_component表包含所有必需字段
- **依赖关系**: 依赖于元数据拉取模块
- **实现建议**: 基于现有的数据访问层,实现元数据组件的查询和比对功能
#### 6. 执行监控与日志
- **需求描述**: 提供执行监控和日志功能记录拉取和部署操作的执行状态、结果和异常信息。创建sf_job_log表记录详细的执行步骤鉴权成功→开始下载→解压完成→上传OSS完成
- **优先级**: 中
- **验收标准**:
- 能够实时监控拉取和部署操作的执行状态
- 能够查看操作的详细日志
- 能够统计操作的执行情况(成功率、平均耗时等)
- sf_job_log表创建成功记录详细步骤
- 支持日志查询、导出和详情查看
- 支持错误信息详细记录
- 支持执行时间统计
- **依赖关系**: 依赖于元数据拉取和部署模块
- **实现建议**: 基于现有的日志功能,扩展执行监控的支持,创建专门的作业日志表
#### 7. 异常处理
- **需求描述**: 实现拉取和部署异常的处理机制确保操作的可靠性。支持Session过期处理、API限制处理、网络异常处理等。
- **优先级**: 中
- **验收标准**:
- 能够正确捕获和处理拉取异常
- 能够正确捕获和处理部署异常
- 支持Session过期自动重新登录
- 支持API限制处理Zip大小限制、24小时API调用次数限制
- 支持网络异常重试
- 能够提供异常信息的详细记录
- 支持常见部署错误分类和解析
- **依赖关系**: 依赖于集成模块和异常处理机制
- **实现建议**: 基于现有的异常处理功能,扩展拉取和部署异常的处理支持
## 约束
- **技术栈限制**: 基于现有的Spring Boot3+Vue3技术栈
- **性能要求**: 拉取和部署操作不能影响系统的正常运行,大文件操作必须异步执行
- **安全性要求**: 确保OAuth认证信息的安全存储加密存储不存明文密码确保文件传输和存储安全存储配置中的敏感信息如AccessKey、SecretKey必须加密存储
- **兼容性要求**: 支持不同版本的Salesforce API建议使用最新稳定版本
- **API限制**: 遵守Salesforce的API使用限制单次拉取Zip大小限制、24小时API调用次数限制
- **存储限制**: 支持多种存储渠道local/minio/oss必须使用datai-scene-file模块提供的StorageBucket抽象接口和StorageUtils工具类进行存储管理
- **时间限制**: 需要在规定的时间内完成实现
- **其他约束**: 需要遵守Salesforce Metadata API的调用规范和Zip文件结构规范
## Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
**具体规则**
- 必须使用 Canvas 中定义的类名和方法名
- 必须遵循 Canvas 中定义的调用关系
- 必须参考 Canvas 中的流程图逻辑
- 必须使用SessionManager进行会话管理和自动重新登录
- 必须使用现有的认证模块进行OAuth认证
- 必须使用现有的集成核心功能进行API调用
## 验收标准
- **功能完整性**: 所有拉取和部署功能能够正常工作支持全量拉取、增量检测、Quick Deploy、Destructive Changes等
- **性能指标**: 拉取和部署操作的执行时间在可接受范围内,大文件操作不影响系统响应
- **安全性要求**: OAuth认证信息加密存储文件传输和存储安全Session过期自动处理
- **用户体验**: 操作界面友好易用,提供清晰的执行状态和错误信息
- **数据准确性**: 拉取和部署的数据准确无误,哈希值对比正确,版本回溯功能正常
- **可靠性**: 异常处理机制完善支持Session过期自动重新登录支持网络异常重试
- **可维护性**: 代码结构清晰,遵循现有架构规范,易于扩展和维护
## 风险
- **技术实现风险**: Salesforce API的变更可能影响拉取和部署功能需要关注API版本更新
- **时间风险**: 实现复杂度较高,可能需要额外的开发时间
- **成本风险**: 可能需要额外的资源投入OSS存储、开发人力等
- **质量风险**: 元数据拉取和部署的准确性可能受到影响,需要充分测试
- **API限制风险**: Salesforce的API限制可能影响大规模元数据操作需要合理规划
- **网络风险**: 网络连接不稳定可能影响拉取和部署的可靠性,需要实现重试机制
- **安全风险**: OAuth认证信息存储不当可能导致安全风险需要加密存储
## 需求变更记录
| 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 |
|------|---------|---------|--------|--------|------|
| 2026-01-17 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 |
## 相关人员
- **需求提出人**: 系统管理员 - 联系方式
- **需求负责人**: 系统管理员 - 联系方式
- **技术负责人**: 开发工程师 - 联系方式
- **测试负责人**: 测试工程师 - 联系方式
- **其他相关人员**: 运维工程师 - 联系方式
## 评审信息
- **评审日期**: -
- **评审人员**: -
- **评审结果**: -
- **评审意见**: -
- **修改建议**: -