REQ-010-1 完成内容: - 创建 6 个数据库表设计(datai_meta_org_config、datai_meta_task、datai_meta_job_execution、datai_meta_component、datai_meta_deploy_history、datai_meta_job_log) - 设计了合理的索引策略 - 对敏感字段进行了加密存储设计 - 表名前缀统一为 datai_meta_ - 所有表包含标准基础字段 REQ-010-2 完成内容: - 补充用户故事和细化验收标准 - 创建架构决策记录(MyBatis Plus 注解 + XML 映射文件混合方案) - 对比了 3 种备选方案 - 分析了决策对系统架构、开发流程、运维管理的影响 - 识别了技术风险、业务风险和实施风险 - 定义了回滚策略和验收标准 文档更新: - 创建 0010-database-table-design.md 架构决策记录 - 创建 0011-entity-mapper-create.md 架构决策记录 - 创建 0020-database-table-design-create.md 变更记录 - 创建 20260117-database-table-design-create.md 会话记录 - 创建 20260117-database-table-design-create-retro.md 复盘报告 - 创建 011-database-table-design-create.md 提示词文档 - 更新 REQ-010-2.md 需求文档 - 更新 docs/index.md 和 CHANGELOG.md
12 KiB
12 KiB
Requirements - Salesforce元数据拉取和部署
需求信息
- 需求名称: Salesforce元数据拉取和部署
- 需求类型: 功能需求
- 需求编号: REQ-010
- 创建日期: 2026-01-17
- 需求版本: v1.0.0
- 需求提出人: 系统管理员
- 需求状态: 待审核
输入引用
引用相关的 docs 文档链接:
- 0000-template.md - 需求文档模板
- 元数据模块设计 - 数据库设计和模块架构
- 元数据拉取参考网页地址 - 官方文档和开源项目参考
- 元数据拉取和部署数据库设计推荐 - 数据库设计推荐
- 元数据部署网页资料链接地址 - 部署相关参考资料
Context Maps
强制列出本次需求依赖的 Canvas 文件:
- Authentication.canvas - 项目架构视觉化展示
- 相关节点: 集成核心 - 提供与Salesforce的各种连接方式
- 相关节点: SessionManager - 会话管理,提供登录服务
- 相关节点: 集成任务 - 处理Salesforce的定时同步任务
- 相关节点: 通用常量 - 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)
- 支持存储根路径配置
- 支持连接状态管理(Active/Inactive/Auth_Invalid)
- 能够自动刷新OAuth Access Token
- sf_org_config表创建成功,包含所有必需字段
- 依赖关系: 依赖于认证模块和集成模块
- 实现建议: 基于现有的认证功能,扩展组织配置管理,使用SessionManager进行会话管理
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认证信息的安全存储(加密存储,不存明文密码),确保文件传输和存储安全
- 兼容性要求: 支持不同版本的Salesforce API(建议使用最新稳定版本)
- API限制: 遵守Salesforce的API使用限制(单次拉取Zip大小限制、24小时API调用次数限制)
- 存储限制: 支持OSS和本地文件系统存储
- 时间限制: 需要在规定的时间内完成实现
- 其他约束: 需要遵守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 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 |
相关人员
- 需求提出人: 系统管理员 - 联系方式
- 需求负责人: 系统管理员 - 联系方式
- 技术负责人: 开发工程师 - 联系方式
- 测试负责人: 测试工程师 - 联系方式
- 其他相关人员: 运维工程师 - 联系方式
评审信息
- 评审日期: -
- 评审人员: -
- 评审结果: -
- 评审意见: -
- 修改建议: -