# 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 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 | ## 相关人员 - **需求提出人**: 系统管理员 - 联系方式 - **需求负责人**: 系统管理员 - 联系方式 - **技术负责人**: 开发工程师 - 联系方式 - **测试负责人**: 测试工程师 - 联系方式 - **其他相关人员**: 运维工程师 - 联系方式 ## 评审信息 - **评审日期**: - - **评审人员**: - - **评审结果**: - - **评审意见**: - - **修改建议**: -