2026-01-18 19:44:13 +08:00
|
|
|
|
# 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. 基础配置管理
|
|
|
|
|
|
|
2026-01-26 23:10:05 +08:00
|
|
|
|
- **需求描述**: 提供Salesforce组织配置管理功能,支持多环境配置、OAuth认证管理、存储配置管理等。创建sf_org_config表,存储组织信息、认证配置、环境类型、存储配置等。
|
2026-01-18 19:44:13 +08:00
|
|
|
|
- **优先级**: 高
|
|
|
|
|
|
- **验收标准**:
|
|
|
|
|
|
- 能够成功添加、编辑、删除Salesforce组织配置
|
|
|
|
|
|
- 支持OAuth认证配置(client_id、client_secret、refresh_token、instance_url)
|
|
|
|
|
|
- 支持环境类型选择(Sandbox/Production)
|
2026-01-26 23:10:05 +08:00
|
|
|
|
- 支持多种存储渠道配置(local/minio/oss)
|
|
|
|
|
|
- 支持存储类型选择和切换
|
|
|
|
|
|
- 支持存储桶配置(bucketName、basePath、permission等)
|
|
|
|
|
|
- 本地存储路径格式验证正确,支持相对路径和绝对路径
|
|
|
|
|
|
- MinIO存储配置支持URL、AccessKey、SecretKey
|
|
|
|
|
|
- OSS存储配置支持Endpoint、AccessKey、SecretKey、BucketName
|
|
|
|
|
|
- 支持存储权限配置(public/private)
|
|
|
|
|
|
- 支持主存储渠道配置
|
2026-01-18 19:44:13 +08:00
|
|
|
|
- 支持连接状态管理(Active/Inactive/Auth_Invalid)
|
|
|
|
|
|
- 能够自动刷新OAuth Access Token
|
2026-01-26 23:10:05 +08:00
|
|
|
|
- 存储配置中的敏感信息(AccessKey、SecretKey)必须加密存储
|
2026-01-18 19:44:13 +08:00
|
|
|
|
- sf_org_config表创建成功,包含所有必需字段
|
2026-01-26 23:10:05 +08:00
|
|
|
|
- **依赖关系**: 依赖于认证模块、集成模块和datai-scene-file模块
|
|
|
|
|
|
- **实现建议**: 基于现有的认证功能,扩展组织配置管理,使用SessionManager进行会话管理,使用datai-scene-file模块提供的StorageBucket抽象接口和StorageUtils工具类进行存储管理
|
2026-01-18 19:44:13 +08:00
|
|
|
|
|
|
|
|
|
|
#### 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技术栈
|
|
|
|
|
|
- **性能要求**: 拉取和部署操作不能影响系统的正常运行,大文件操作必须异步执行
|
2026-01-26 23:10:05 +08:00
|
|
|
|
- **安全性要求**: 确保OAuth认证信息的安全存储(加密存储,不存明文密码),确保文件传输和存储安全;存储配置中的敏感信息(如AccessKey、SecretKey)必须加密存储
|
2026-01-18 19:44:13 +08:00
|
|
|
|
- **兼容性要求**: 支持不同版本的Salesforce API(建议使用最新稳定版本)
|
|
|
|
|
|
- **API限制**: 遵守Salesforce的API使用限制(单次拉取Zip大小限制、24小时API调用次数限制)
|
2026-01-26 23:10:05 +08:00
|
|
|
|
- **存储限制**: 支持多种存储渠道(local/minio/oss),必须使用datai-scene-file模块提供的StorageBucket抽象接口和StorageUtils工具类进行存储管理
|
2026-01-18 19:44:13 +08:00
|
|
|
|
- **时间限制**: 需要在规定的时间内完成实现
|
|
|
|
|
|
- **其他约束**: 需要遵守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 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 |
|
|
|
|
|
|
|
|
|
|
|
|
## 相关人员
|
|
|
|
|
|
|
|
|
|
|
|
- **需求提出人**: 系统管理员 - 联系方式
|
|
|
|
|
|
- **需求负责人**: 系统管理员 - 联系方式
|
|
|
|
|
|
- **技术负责人**: 开发工程师 - 联系方式
|
|
|
|
|
|
- **测试负责人**: 测试工程师 - 联系方式
|
|
|
|
|
|
- **其他相关人员**: 运维工程师 - 联系方式
|
|
|
|
|
|
|
|
|
|
|
|
## 评审信息
|
|
|
|
|
|
|
|
|
|
|
|
- **评审日期**: -
|
|
|
|
|
|
- **评审人员**: -
|
|
|
|
|
|
- **评审结果**: -
|
|
|
|
|
|
- **评审意见**: -
|
|
|
|
|
|
- **修改建议**: -
|