1310 lines
41 KiB
Markdown
1310 lines
41 KiB
Markdown
# REQ-010 子需求拆分文档
|
||
|
||
## 文档信息
|
||
|
||
- **父需求**: REQ-010 - Salesforce元数据拉取和部署
|
||
- **创建日期**: 2026-01-17
|
||
- **拆分原则**: 独立性、优先级、粒度(3-5人天)、完整性、可测试性
|
||
- **子需求总数**: 17个
|
||
|
||
---
|
||
|
||
## 子需求 1: 数据库表结构设计和创建
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-1
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 数据需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 3人天
|
||
|
||
### 需求描述
|
||
设计和创建Salesforce元数据拉取和部署系统所需的9张核心数据库表,包括datai_meta_org_config、datai_meta_task、datai_meta_package_item、datai_meta_component、datai_meta_component_version、datai_meta_job_execution、datai_meta_job_log、datai_meta_deploy_history、datai_meta_deploy_component_result。
|
||
|
||
### 功能范围
|
||
- 设计datai_meta_org_config表结构(组织配置表)
|
||
- 设计datai_meta_task表结构(任务定义表)
|
||
- 设计datai_meta_package_item表结构(元数据包定义明细表)
|
||
- 设计datai_meta_component表结构(元数据组件索引表)
|
||
- 设计datai_meta_component_version表结构(元数据版本内容表)
|
||
- 设计datai_meta_job_execution表结构(作业执行流水表)
|
||
- 设计datai_meta_job_log表结构(作业详细日志表)
|
||
- 设计datai_meta_deploy_history表结构(部署历史表)
|
||
- 设计datai_meta_deploy_component_result表结构(部署组件结果明细表)
|
||
- 创建数据库表DDL脚本
|
||
- 创建索引优化查询性能
|
||
- 添加外键约束保证数据完整性
|
||
|
||
### 验收标准
|
||
- 所有9张表的DDL脚本创建成功
|
||
- 表结构符合参考资料中的设计规范
|
||
- 所有必需字段都包含在内
|
||
- 主键、外键、索引创建正确
|
||
- DDL脚本可以在MySQL中成功执行
|
||
- 表结构支持后续功能扩展
|
||
- 字段类型和长度合理
|
||
- 添加必要的注释说明
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: 无
|
||
- **被依赖**: REQ-010-2, REQ-010-3, REQ-010-4, REQ-010-6, REQ-010-8, REQ-010-11, REQ-010-14, REQ-010-15
|
||
|
||
### 技术要点
|
||
- 使用MyBatis Plus的@Table注解定义表名
|
||
- 使用@TableName注解指定表名
|
||
- 设计合理的字段类型(VARCHAR、TEXT、BIGINT、DATETIME等)
|
||
- 考虑字符集和排序规则(utf8mb4)
|
||
- 设计合理的索引策略
|
||
- 考虑分表分库的扩展性
|
||
|
||
### 数据库设计
|
||
- **datai_meta_org_config**: id, org_name, org_id, environment_type, auth_config(JSON), storage_root_path, status, created_time, updated_time
|
||
- **datai_meta_task**: id, org_config_id, task_name, package_xml_content(TEXT), api_version, schedule_type, cron_expression, created_time, updated_time
|
||
- **datai_meta_package_item**: id, group_id, metadata_type, member_name, description, created_time, updated_time
|
||
- **datai_meta_component**: id, job_id, component_type, component_name, file_path, file_hash, file_size, created_time, updated_time
|
||
- **datai_meta_component_version**: id, component_id, version_number, content_hash, content_body(LONGTEXT), is_binary, commit_message, job_execution_id, created_at
|
||
- **datai_meta_job_execution**: id, task_id, start_time, end_time, status, storage_path, file_count, zip_file_location, error_message(TEXT), created_time, updated_time
|
||
- **datai_meta_job_log**: id, job_id, step_name, step_status, start_time, end_time, log_message(TEXT), created_time
|
||
- **datai_meta_deploy_history**: id, task_id, start_time, end_time, status, deploy_options(JSON), deploy_result(JSON), validation_id, created_time, updated_time
|
||
- **datai_meta_deploy_component_result**: id, deploy_history_id, component_name, component_type, file_name, is_success, is_changed, line_number, column_number, problem(TEXT), problem_type, created_time
|
||
|
||
### API接口
|
||
无
|
||
|
||
### 风险点
|
||
- 表结构设计不合理可能导致后续扩展困难
|
||
- 索引设计不当可能影响查询性能
|
||
- 字段类型选择不当可能导致数据丢失
|
||
- 外键约束可能影响数据插入性能
|
||
|
||
---
|
||
|
||
## 子需求 2: 基础实体类和Mapper创建
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-2
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 4人天
|
||
|
||
### 需求描述
|
||
为9张数据库表创建对应的Java实体类、Mapper接口和XML映射文件,使用MyBatis Plus框架。
|
||
|
||
### 功能范围
|
||
- 创建DataiMetaOrgConfig实体类
|
||
- 创建DataiMetaTask实体类
|
||
- 创建DataiMetaPackageItem实体类
|
||
- 创建DataiMetaComponent实体类
|
||
- 创建DataiMetaComponentVersion实体类
|
||
- 创建DataiMetaJobExecution实体类
|
||
- 创建DataiMetaJobLog实体类
|
||
- 创建DataiMetaDeployHistory实体类
|
||
- 创建DataiMetaDeployComponentResult实体类
|
||
- 创建对应的Mapper接口
|
||
- 创建对应的Mapper XML文件
|
||
- 添加基础CRUD方法
|
||
|
||
### 验收标准
|
||
- 9个实体类创建成功,使用MyBatis Plus注解
|
||
- 9个Mapper接口创建成功,继承BaseMapper
|
||
- 9个Mapper XML文件创建成功
|
||
- 实体类字段与数据库表字段一一对应
|
||
- Mapper接口包含基础的CRUD方法
|
||
- XML映射文件配置正确
|
||
- 代码符合项目编码规范
|
||
- 添加必要的注释说明
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-1
|
||
- **被依赖**: REQ-010-3, REQ-010-4, REQ-010-6, REQ-010-8, REQ-010-11, REQ-010-14, REQ-010-15
|
||
|
||
### 技术要点
|
||
- 使用MyBatis Plus的@TableName注解
|
||
- 使用@TableId注解标识主键
|
||
- 使用@TableField注解处理字段映射
|
||
- 继承BaseMapper获取基础CRUD方法
|
||
- 使用@Mapper注解标记Mapper接口
|
||
- 配置XML映射文件的namespace
|
||
- 处理JSON类型字段的序列化和反序列化
|
||
- 处理TEXT类型大字段
|
||
|
||
### 数据库设计
|
||
无(使用REQ-010-1创建的表)
|
||
|
||
### API接口
|
||
无
|
||
|
||
### 风险点
|
||
- 实体类字段映射错误可能导致数据读写失败
|
||
- Mapper XML配置错误可能导致SQL执行失败
|
||
- JSON类型字段处理不当可能导致数据丢失
|
||
- 大字段处理不当可能导致性能问题
|
||
|
||
---
|
||
|
||
## 子需求 3: Salesforce组织配置管理
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-3
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 5人天
|
||
|
||
### 需求描述
|
||
提供Salesforce组织配置的CRUD管理功能,支持多环境配置、OAuth认证管理、存储路径配置等。
|
||
|
||
### 功能范围
|
||
- 创建SfOrgConfigService服务接口
|
||
- 创建SfOrgConfigServiceImpl服务实现
|
||
- 创建SfOrgConfigController控制器
|
||
- 实现组织配置的增删改查功能
|
||
- 实现OAuth认证信息加密存储
|
||
- 实现环境类型选择(Sandbox/Production)
|
||
- 实现存储根路径配置
|
||
- 实现连接状态管理(Active/Inactive/Auth_Invalid)
|
||
- 实现配置验证功能
|
||
- 实现配置查询接口
|
||
|
||
### 验收标准
|
||
- 能够成功添加Salesforce组织配置
|
||
- 能够成功编辑组织配置
|
||
- 能够成功删除组织配置
|
||
- 能够查询组织配置列表
|
||
- OAuth认证信息加密存储成功
|
||
- 支持环境类型选择
|
||
- 支持存储根路径配置
|
||
- 支持连接状态管理
|
||
- 配置验证功能正常工作
|
||
- API接口符合RESTful规范
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-1, REQ-010-2
|
||
- **被依赖**: REQ-010-4, REQ-010-6, REQ-010-8
|
||
|
||
### 技术要点
|
||
- 使用SessionManager获取当前登录信息
|
||
- 使用AES加密算法加密OAuth认证信息
|
||
- 使用枚举类型管理环境类型和连接状态
|
||
- 使用@Valid注解进行参数验证
|
||
- 使用统一的异常处理机制
|
||
- 使用统一的响应格式
|
||
- 遵循RESTful API设计规范
|
||
- 使用事务管理保证数据一致性
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_org_config表
|
||
|
||
### 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 - 验证组织配置
|
||
|
||
### 风险点
|
||
- OAuth认证信息加密不当可能导致安全风险
|
||
- 配置验证逻辑复杂可能导致验证不准确
|
||
- 多环境配置管理复杂可能导致配置混乱
|
||
- 连接状态管理不当可能导致状态不一致
|
||
|
||
---
|
||
|
||
## 子需求 4: 元数据任务定义管理
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-4
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 5人天
|
||
|
||
### 需求描述
|
||
提供元数据任务定义的CRUD管理功能,支持配置拉取规则、package.xml内容、API版本、调度类型等。
|
||
|
||
### 功能范围
|
||
- 创建SfMetadataTaskService服务接口
|
||
- 创建SfMetadataTaskServiceImpl服务实现
|
||
- 创建SfMetadataTaskController控制器
|
||
- 实现任务定义的增删改查功能
|
||
- 实现package.xml内容配置
|
||
- 实现package.xml可视化编辑
|
||
- 实现API版本选择
|
||
- 实现调度类型选择(Manual/Cron)
|
||
- 实现Cron表达式配置
|
||
- 实现任务验证功能
|
||
- 实现任务查询接口
|
||
|
||
### 验收标准
|
||
- 能够成功创建元数据任务
|
||
- 能够成功编辑元数据任务
|
||
- 能够成功删除元数据任务
|
||
- 能够查询元数据任务列表
|
||
- package.xml内容配置成功
|
||
- package.xml格式符合Salesforce Metadata API规范
|
||
- 支持API版本选择
|
||
- 支持调度类型选择
|
||
- 支持Cron表达式配置
|
||
- 任务验证功能正常工作
|
||
- API接口符合RESTful规范
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-1, REQ-010-2, REQ-010-3
|
||
- **被依赖**: REQ-010-6, REQ-010-8
|
||
|
||
### 技术要点
|
||
- 使用XML解析库处理package.xml
|
||
- 使用Cron表达式解析库验证Cron表达式
|
||
- 使用枚举类型管理调度类型
|
||
- 使用@Valid注解进行参数验证
|
||
- 使用统一的异常处理机制
|
||
- 使用统一的响应格式
|
||
- 遵循RESTful API设计规范
|
||
- 使用事务管理保证数据一致性
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_task表
|
||
|
||
### API接口
|
||
- POST /api/metadata/task - 创建元数据任务
|
||
- PUT /api/metadata/task/{id} - 更新元数据任务
|
||
- DELETE /api/metadata/task/{id} - 删除元数据任务
|
||
- GET /api/metadata/task/{id} - 查询元数据任务详情
|
||
- GET /api/metadata/task - 查询元数据任务列表
|
||
- POST /api/metadata/task/{id}/validate - 验证元数据任务
|
||
|
||
### 风险点
|
||
- package.xml格式验证复杂可能导致验证不准确
|
||
- Cron表达式解析错误可能导致任务调度失败
|
||
- 任务验证逻辑复杂可能导致验证不准确
|
||
- 多任务管理复杂可能导致任务冲突
|
||
|
||
---
|
||
|
||
## 子需求 5: Metadata API客户端封装
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-5
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 5人天
|
||
|
||
### 需求描述
|
||
封装Salesforce Metadata API客户端,提供retrieve()和deploy()方法的调用接口,支持异步执行和状态轮询。
|
||
|
||
### 功能范围
|
||
- 创建MetadataApiClient客户端类
|
||
- 实现retrieve()方法调用
|
||
- 实现deploy()方法调用
|
||
- 实现异步执行机制
|
||
- 实现状态轮询机制
|
||
- 实现Job ID获取
|
||
- 实现Zip文件下载
|
||
- 实现部署结果解析
|
||
- 实现错误处理机制
|
||
- 集成SessionManager进行会话管理
|
||
|
||
### 验收标准
|
||
- MetadataApiClient创建成功
|
||
- retrieve()方法调用成功
|
||
- deploy()方法调用成功
|
||
- 异步执行机制正常工作
|
||
- 状态轮询机制正常工作
|
||
- Job ID获取成功
|
||
- Zip文件下载成功
|
||
- 部署结果解析成功
|
||
- 错误处理机制正常工作
|
||
- 与SessionManager集成成功
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-1, REQ-010-2
|
||
- **被依赖**: REQ-010-6, REQ-010-8
|
||
|
||
### 技术要点
|
||
- 使用Salesforce WSC (Web Service Connector)库
|
||
- 使用SessionManager获取当前会话
|
||
- 使用异步线程池执行长时间任务
|
||
- 使用轮询机制检查任务状态
|
||
- 使用HTTP客户端下载Zip文件
|
||
- 使用ZipInputStream处理Zip文件
|
||
- 使用JSON解析库处理API响应
|
||
- 使用统一的异常处理机制
|
||
- 遵循Salesforce Metadata API调用规范
|
||
|
||
### 数据库设计
|
||
无
|
||
|
||
### API接口
|
||
无(内部服务类)
|
||
|
||
### 风险点
|
||
- WSC库版本兼容性问题
|
||
- 异步执行机制复杂可能导致状态管理困难
|
||
- 状态轮询频率不当可能导致API限流
|
||
- Zip文件处理不当可能导致内存溢出
|
||
- 错误处理不完善可能导致任务失败无法恢复
|
||
|
||
---
|
||
|
||
## 子需求 6: 元数据拉取核心功能
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-6
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 5人天
|
||
|
||
### 需求描述
|
||
实现Salesforce元数据拉取的核心功能,使用Metadata API的retrieve()方法,支持异步执行、状态轮询、Zip文件下载。
|
||
|
||
### 功能范围
|
||
- 创建MetadataRetrieveService服务接口
|
||
- 创建MetadataRetrieveServiceImpl服务实现
|
||
- 创建MetadataRetrieveController控制器
|
||
- 实现手动触发拉取功能
|
||
- 实现异步拉取执行
|
||
- 实现状态监控(Pending/Processing/Success/Failed/Partial_Success)
|
||
- 实现拉取历史记录
|
||
- 实现拉取进度查询
|
||
- 实现拉取取消功能
|
||
- 集成MetadataApiClient
|
||
- 集成SessionManager
|
||
|
||
### 验收标准
|
||
- 能够成功手动触发拉取
|
||
- 异步拉取执行正常工作
|
||
- 状态监控正常工作
|
||
- 拉取历史记录成功
|
||
- 拉取进度查询成功
|
||
- 拉取取消功能正常工作
|
||
- 与MetadataApiClient集成成功
|
||
- 与SessionManager集成成功
|
||
- API接口符合RESTful规范
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-1, REQ-010-2, REQ-010-3, REQ-010-4, REQ-010-5
|
||
- **被依赖**: REQ-010-7, REQ-010-11, REQ-010-14, REQ-010-15
|
||
|
||
### 技术要点
|
||
- 使用MetadataApiClient调用retrieve()方法
|
||
- 使用异步线程池执行拉取任务
|
||
- 使用状态机管理拉取状态
|
||
- 使用轮询机制检查拉取状态
|
||
- 使用SessionManager获取当前会话
|
||
- 使用事务管理保证数据一致性
|
||
- 使用统一的异常处理机制
|
||
- 使用统一的响应格式
|
||
- 遵循RESTful API设计规范
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_job_execution表
|
||
|
||
### API接口
|
||
- POST /api/metadata/retrieve/{taskId} - 触发元数据拉取
|
||
- GET /api/metadata/retrieve/{jobId} - 查询拉取进度
|
||
- GET /api/metadata/retrieve/history - 查询拉取历史
|
||
- DELETE /api/metadata/retrieve/{jobId} - 取消拉取任务
|
||
|
||
### 风险点
|
||
- 异步执行机制复杂可能导致状态管理困难
|
||
- 状态轮询频率不当可能导致API限流
|
||
- 拉取取消功能复杂可能导致资源泄漏
|
||
- 拉取历史记录过多可能影响查询性能
|
||
|
||
---
|
||
|
||
## 子需求 7: 文件存储和解压处理
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-7
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 4人天
|
||
|
||
### 需求描述
|
||
实现拉取的Zip文件的存储和解压处理,支持OSS和本地文件系统存储,符合规范的目录结构。
|
||
|
||
### 功能范围
|
||
- 创建FileStorageService服务接口
|
||
- 创建FileStorageServiceImpl服务实现
|
||
- 实现Zip文件存储功能
|
||
- 实现Zip文件解压功能
|
||
- 实现文件哈希计算(MD5/SHA256)
|
||
- 实现文件数量统计
|
||
- 实现存储路径管理
|
||
- 支持OSS存储
|
||
- 支持本地文件系统存储
|
||
- 实现文件清理功能
|
||
- 集成MetadataRetrieveService
|
||
|
||
### 验收标准
|
||
- Zip文件存储成功
|
||
- Zip文件解压成功
|
||
- 文件哈希计算成功
|
||
- 文件数量统计成功
|
||
- 存储路径管理成功
|
||
- OSS存储功能正常工作
|
||
- 本地文件系统存储功能正常工作
|
||
- 文件清理功能正常工作
|
||
- 与MetadataRetrieveService集成成功
|
||
- 存储路径结构符合规范:/{org_name}/{task_name}/{job_id_timestamp}/src/
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-1, REQ-010-2, REQ-010-6
|
||
- **被依赖**: REQ-010-11, REQ-010-15
|
||
|
||
### 技术要点
|
||
- 使用ZipInputStream处理Zip文件
|
||
- 使用MessageDigest计算文件哈希
|
||
- 使用OSS SDK上传文件到OSS
|
||
- 使用File API操作本地文件系统
|
||
- 使用递归算法遍历文件目录
|
||
- 使用线程池并行处理文件
|
||
- 使用事务管理保证数据一致性
|
||
- 使用统一的异常处理机制
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_job_execution表和datai_meta_component表
|
||
|
||
### API接口
|
||
无(内部服务类)
|
||
|
||
### 风险点
|
||
- Zip文件处理不当可能导致内存溢出
|
||
- 文件哈希计算不当可能导致性能问题
|
||
- OSS存储不稳定可能导致文件丢失
|
||
- 文件清理不当可能导致误删重要文件
|
||
- 并发文件处理可能导致文件冲突
|
||
|
||
---
|
||
|
||
## 子需求 8: 元数据部署核心功能
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-8
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 5人天
|
||
|
||
### 需求描述
|
||
实现Salesforce元数据部署的核心功能,使用Metadata API的deploy()方法,支持异步执行、状态轮询、部署结果解析。
|
||
|
||
### 功能范围
|
||
- 创建MetadataDeployService服务接口
|
||
- 创建MetadataDeployServiceImpl服务实现
|
||
- 创建MetadataDeployController控制器
|
||
- 实现手动触发部署功能
|
||
- 实现异步部署执行
|
||
- 实现状态监控(Pending/Processing/Success/Failed/Partial_Success)
|
||
- 实现部署历史记录
|
||
- 实现部署进度查询
|
||
- 实现部署取消功能
|
||
- 实现部署选项配置(checkOnly、testLevel、runTests等)
|
||
- 集成MetadataApiClient
|
||
- 集成SessionManager
|
||
|
||
### 验收标准
|
||
- 能够成功手动触发部署
|
||
- 异步部署执行正常工作
|
||
- 状态监控正常工作
|
||
- 部署历史记录成功
|
||
- 部署进度查询成功
|
||
- 部署取消功能正常工作
|
||
- 部署选项配置成功
|
||
- 与MetadataApiClient集成成功
|
||
- 与SessionManager集成成功
|
||
- API接口符合RESTful规范
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-1, REQ-010-2, REQ-010-3, REQ-010-5
|
||
- **被依赖**: REQ-010-9, REQ-010-10, REQ-010-14, REQ-010-15, REQ-010-16
|
||
|
||
### 技术要点
|
||
- 使用MetadataApiClient调用deploy()方法
|
||
- 使用异步线程池执行部署任务
|
||
- 使用状态机管理部署状态
|
||
- 使用轮询机制检查部署状态
|
||
- 使用SessionManager获取当前会话
|
||
- 使用事务管理保证数据一致性
|
||
- 使用统一的异常处理机制
|
||
- 使用统一的响应格式
|
||
- 遵循RESTful API设计规范
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_deploy_history表
|
||
|
||
### API接口
|
||
- POST /api/metadata/deploy/{taskId} - 触发元数据部署
|
||
- GET /api/metadata/deploy/{jobId} - 查询部署进度
|
||
- GET /api/metadata/deploy/history - 查询部署历史
|
||
- DELETE /api/metadata/deploy/{jobId} - 取消部署任务
|
||
|
||
### 风险点
|
||
- 异步执行机制复杂可能导致状态管理困难
|
||
- 状态轮询频率不当可能导致API限流
|
||
- 部署取消功能复杂可能导致资源泄漏
|
||
- 部署历史记录过多可能影响查询性能
|
||
- 部署选项配置复杂可能导致配置错误
|
||
|
||
---
|
||
|
||
## 子需求 9: Quick Deploy功能实现
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-9
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 3人天
|
||
|
||
### 需求描述
|
||
实现Quick Deploy功能,使用ValidationID进行秒级部署,提高部署效率。
|
||
|
||
### 功能范围
|
||
- 实现ValidationID保存功能
|
||
- 实现Quick Deploy调用
|
||
- 实现ValidationID查询
|
||
- 实现Quick Deploy状态监控
|
||
- 实现Quick Deploy历史记录
|
||
- 集成MetadataDeployService
|
||
- 集成MetadataApiClient
|
||
|
||
### 验收标准
|
||
- ValidationID保存成功
|
||
- Quick Deploy调用成功
|
||
- ValidationID查询成功
|
||
- Quick Deploy状态监控成功
|
||
- Quick Deploy历史记录成功
|
||
- 与MetadataDeployService集成成功
|
||
- 与MetadataApiClient集成成功
|
||
- Quick Deploy能够在几秒内完成
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-8
|
||
- **被依赖**: REQ-010-16
|
||
|
||
### 技术要点
|
||
- 使用MetadataApiClient调用Quick Deploy
|
||
- 使用ValidationID进行快速部署
|
||
- 使用状态机管理Quick Deploy状态
|
||
- 使用轮询机制检查Quick Deploy状态
|
||
- 使用事务管理保证数据一致性
|
||
- 使用统一的异常处理机制
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_deploy_history表,添加validation_id字段
|
||
|
||
### API接口
|
||
- POST /api/metadata/deploy/quick/{validationId} - 触发Quick Deploy
|
||
- GET /api/metadata/deploy/validation/{jobId} - 查询ValidationID
|
||
|
||
### 风险点
|
||
- ValidationID过期可能导致Quick Deploy失败
|
||
- Quick Deploy状态监控复杂可能导致状态管理困难
|
||
- ValidationID查询不当可能导致查询失败
|
||
|
||
---
|
||
|
||
## 子需求 10: Destructive Changes功能实现
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-10
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 高
|
||
- **预计工作量**: 4人天
|
||
|
||
### 需求描述
|
||
实现Destructive Changes功能,支持删除Salesforce中的元数据(字段、类、对象等)。
|
||
|
||
### 功能范围
|
||
- 实现destructiveChanges.xml生成
|
||
- 实现destructiveChanges.xml解析
|
||
- 实现删除元数据功能
|
||
- 实现删除预览功能
|
||
- 实现删除历史记录
|
||
- 实现删除回滚功能
|
||
- 集成MetadataDeployService
|
||
- 集成MetadataApiClient
|
||
|
||
### 验收标准
|
||
- destructiveChanges.xml生成成功
|
||
- destructiveChanges.xml解析成功
|
||
- 删除元数据功能正常工作
|
||
- 删除预览功能正常工作
|
||
- 删除历史记录成功
|
||
- 删除回滚功能正常工作
|
||
- 与MetadataDeployService集成成功
|
||
- 与MetadataApiClient集成成功
|
||
- destructiveChanges.xml格式符合Salesforce Metadata API规范
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-8
|
||
- **被依赖**: REQ-010-16
|
||
|
||
### 技术要点
|
||
- 使用XML解析库处理destructiveChanges.xml
|
||
- 使用MetadataApiClient调用deploy()方法
|
||
- 使用状态机管理删除状态
|
||
- 使用轮询机制检查删除状态
|
||
- 使用事务管理保证数据一致性
|
||
- 使用统一的异常处理机制
|
||
- 遵循Salesforce Metadata API调用规范
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_deploy_history表
|
||
|
||
### API接口
|
||
- POST /api/metadata/deploy/destructive - 触发删除部署
|
||
- GET /api/metadata/deploy/destructive/preview - 预览删除内容
|
||
- GET /api/metadata/deploy/destructive/history - 查询删除历史
|
||
|
||
### 风险点
|
||
- destructiveChanges.xml格式错误可能导致删除失败
|
||
- 删除操作不可逆可能导致数据丢失
|
||
- 删除回滚功能复杂可能导致回滚失败
|
||
- 删除预览功能不准确可能导致误删
|
||
|
||
---
|
||
|
||
## 子需求 11: 元数据组件索引和查询
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-11
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 中
|
||
- **预计工作量**: 4人天
|
||
|
||
### 需求描述
|
||
实现元数据组件的结构化存储和查询功能,支持按类型、名称、Job ID等多维度查询。
|
||
|
||
### 功能范围
|
||
- 创建SfMetadataComponentService服务接口
|
||
- 创建SfMetadataComponentServiceImpl服务实现
|
||
- 创建SfMetadataComponentController控制器
|
||
- 实现组件详情查询
|
||
- 实现按Job ID查询组件列表
|
||
- 实现按组件类型查询
|
||
- 实现按组件名称查询
|
||
- 实现组件分页查询
|
||
- 实现组件统计功能
|
||
- 集成FileStorageService
|
||
|
||
### 验收标准
|
||
- 组件详情查询成功
|
||
- 按Job ID查询组件列表成功
|
||
- 按组件类型查询成功
|
||
- 按组件名称查询成功
|
||
- 组件分页查询成功
|
||
- 组件统计功能正常工作
|
||
- 与FileStorageService集成成功
|
||
- API接口符合RESTful规范
|
||
- 查询性能满足要求
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-1, REQ-010-2, REQ-010-7
|
||
- **被依赖**: REQ-010-12, REQ-010-13
|
||
|
||
### 技术要点
|
||
- 使用MyBatis Plus的QueryWrapper构建查询条件
|
||
- 使用分页插件实现分页查询
|
||
- 使用聚合查询实现统计功能
|
||
- 使用索引优化查询性能
|
||
- 使用统一的异常处理机制
|
||
- 使用统一的响应格式
|
||
- 遵循RESTful API设计规范
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_component表
|
||
|
||
### API接口
|
||
- GET /api/metadata/component/{id} - 查询组件详情
|
||
- GET /api/metadata/component/job/{jobId} - 按Job ID查询组件列表
|
||
- GET /api/metadata/component/type/{type} - 按组件类型查询
|
||
- GET /api/metadata/component/name/{name} - 按组件名称查询
|
||
- GET /api/metadata/component - 分页查询组件
|
||
- GET /api/metadata/component/statistics - 组件统计
|
||
|
||
### 风险点
|
||
- 查询条件复杂可能导致SQL性能问题
|
||
- 分页查询不当可能导致内存溢出
|
||
- 组件统计功能复杂可能导致统计不准确
|
||
- 索引设计不当可能影响查询性能
|
||
|
||
---
|
||
|
||
## 子需求 12: 文件哈希对比和增量检测
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-12
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 中
|
||
- **预计工作量**: 4人天
|
||
|
||
### 需求描述
|
||
实现文件哈希对比功能,通过对比datai_meta_component表的哈希值,实现增量检测和变更分析。
|
||
|
||
### 功能范围
|
||
- 实现哈希值对比算法
|
||
- 实现增量检测功能
|
||
- 实现变更分析功能
|
||
- 实现变更统计(新增、修改、删除)
|
||
- 实现变更报告生成
|
||
- 实现变更历史查询
|
||
- 集成SfMetadataComponentService
|
||
- 集成FileStorageService
|
||
|
||
### 验收标准
|
||
- 哈希值对比算法正确
|
||
- 增量检测功能正常工作
|
||
- 变更分析功能正常工作
|
||
- 变更统计功能正常工作
|
||
- 变更报告生成成功
|
||
- 变更历史查询成功
|
||
- 与SfMetadataComponentService集成成功
|
||
- 与FileStorageService集成成功
|
||
- 增量检测性能满足要求
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-11
|
||
- **被依赖**: REQ-010-13
|
||
|
||
### 技术要点
|
||
- 使用MessageDigest计算文件哈希
|
||
- 使用哈希值对比算法检测变更
|
||
- 使用集合操作计算差异(新增、修改、删除)
|
||
- 使用递归算法遍历文件目录
|
||
- 使用线程池并行处理文件
|
||
- 使用事务管理保证数据一致性
|
||
- 使用统一的异常处理机制
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_component表
|
||
|
||
### API接口
|
||
- POST /api/metadata/component/compare - 对比两次Job的差异
|
||
- GET /api/metadata/component/increment/{jobId} - 查询增量变更
|
||
- GET /api/metadata/component/change-report/{jobId} - 生成变更报告
|
||
- GET /api/metadata/component/change-history - 查询变更历史
|
||
|
||
### 风险点
|
||
- 哈希值对比算法不当可能导致检测不准确
|
||
- 增量检测复杂可能导致性能问题
|
||
- 变更分析复杂可能导致分析不准确
|
||
- 变更报告生成复杂可能导致报告不完整
|
||
|
||
---
|
||
|
||
## 子需求 13: 版本回溯功能
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-13
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 中
|
||
- **预计工作量**: 4人天
|
||
|
||
### 需求描述
|
||
实现版本回溯功能,支持查询历史版本的元数据组件,并支持恢复到指定版本。
|
||
|
||
### 功能范围
|
||
- 实现历史版本查询
|
||
- 实现版本对比功能
|
||
- 实现版本恢复功能
|
||
- 实现版本预览功能
|
||
- 实现版本标签管理
|
||
- 实现版本历史导出
|
||
- 集成SfMetadataComponentService
|
||
- 集成FileStorageService
|
||
|
||
### 验收标准
|
||
- 历史版本查询成功
|
||
- 版本对比功能正常工作
|
||
- 版本恢复功能正常工作
|
||
- 版本预览功能正常工作
|
||
- 版本标签管理成功
|
||
- 版本历史导出成功
|
||
- 与SfMetadataComponentService集成成功
|
||
- 与FileStorageService集成成功
|
||
- 版本回溯性能满足要求
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-11, REQ-010-12
|
||
- **被依赖**: REQ-010-16
|
||
|
||
### 技术要点
|
||
- 使用时间戳标识版本
|
||
- 使用哈希值对比算法对比版本
|
||
- 使用文件复制算法恢复版本
|
||
- 使用递归算法遍历文件目录
|
||
- 使用线程池并行处理文件
|
||
- 使用事务管理保证数据一致性
|
||
- 使用统一的异常处理机制
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_component表
|
||
|
||
### API接口
|
||
- GET /api/metadata/component/version/{jobId} - 查询历史版本
|
||
- POST /api/metadata/component/compare - 对比两个版本
|
||
- POST /api/metadata/component/restore/{jobId} - 恢复到指定版本
|
||
- GET /api/metadata/component/preview/{jobId} - 预览指定版本
|
||
- POST /api/metadata/component/tag - 添加版本标签
|
||
- GET /api/metadata/component/export/{jobId} - 导出版本历史
|
||
|
||
### 风险点
|
||
- 版本恢复不当可能导致数据覆盖
|
||
- 版本对比复杂可能导致对比不准确
|
||
- 版本预览功能复杂可能导致预览不完整
|
||
- 版本标签管理复杂可能导致标签混乱
|
||
|
||
---
|
||
|
||
## 子需求 14: 作业执行监控
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-14
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 中
|
||
- **预计工作量**: 3人天
|
||
|
||
### 需求描述
|
||
实现作业执行监控功能,实时监控拉取和部署操作的执行状态、进度和结果。
|
||
|
||
### 功能范围
|
||
- 创建JobMonitorService服务接口
|
||
- 创建JobMonitorServiceImpl服务实现
|
||
- 创建JobMonitorController控制器
|
||
- 实现实时状态监控
|
||
- 实现进度查询
|
||
- 实现执行统计(成功率、平均耗时等)
|
||
- 实现告警功能
|
||
- 实现监控大屏展示
|
||
- 集成MetadataRetrieveService
|
||
- 集成MetadataDeployService
|
||
|
||
### 验收标准
|
||
- 实时状态监控正常工作
|
||
- 进度查询成功
|
||
- 执行统计功能正常工作
|
||
- 告警功能正常工作
|
||
- 监控大屏展示成功
|
||
- 与MetadataRetrieveService集成成功
|
||
- 与MetadataDeployService集成成功
|
||
- 监控数据实时性满足要求
|
||
- API接口符合RESTful规范
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-6, REQ-010-8
|
||
- **被依赖**: REQ-010-15
|
||
|
||
### 技术要点
|
||
- 使用WebSocket实现实时推送
|
||
- 使用定时任务统计执行数据
|
||
- 使用缓存提高查询性能
|
||
- 使用告警规则引擎实现告警
|
||
- 使用图表库展示监控数据
|
||
- 使用统一的异常处理机制
|
||
- 使用统一的响应格式
|
||
- 遵循RESTful API设计规范
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_job_execution表和datai_meta_deploy_history表
|
||
|
||
### API接口
|
||
- GET /api/metadata/monitor/status - 查询实时状态
|
||
- GET /api/metadata/monitor/progress/{jobId} - 查询执行进度
|
||
- GET /api/metadata/monitor/statistics - 查询执行统计
|
||
- POST /api/metadata/monitor/alert - 配置告警规则
|
||
- GET /api/metadata/monitor/dashboard - 监控大屏数据
|
||
|
||
### 风险点
|
||
- 实时推送频率不当可能导致性能问题
|
||
- 监控数据量大可能导致查询缓慢
|
||
- 告警规则复杂可能导致告警不准确
|
||
- 监控大屏展示复杂可能导致展示不完整
|
||
|
||
---
|
||
|
||
## 子需求 15: 详细日志记录和查询
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-15
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 中
|
||
- **预计工作量**: 4人天
|
||
|
||
### 需求描述
|
||
实现详细日志记录功能,记录拉取和部署操作的详细执行步骤(鉴权成功→开始下载→解压完成→上传OSS完成)。
|
||
|
||
### 功能范围
|
||
- 创建JobLogService服务接口
|
||
- 创建JobLogServiceImpl服务实现
|
||
- 创建JobLogController控制器
|
||
- 实现详细日志记录
|
||
- 实现日志查询
|
||
- 实现日志分页
|
||
- 实现日志导出
|
||
- 实现日志详情查看
|
||
- 实现日志统计
|
||
- 集成MetadataRetrieveService
|
||
- 集成MetadataDeployService
|
||
- 集成FileStorageService
|
||
|
||
### 验收标准
|
||
- 详细日志记录成功
|
||
- 日志查询成功
|
||
- 日志分页成功
|
||
- 日志导出成功
|
||
- 日志详情查看成功
|
||
- 日志统计功能正常工作
|
||
- 与MetadataRetrieveService集成成功
|
||
- 与MetadataDeployService集成成功
|
||
- 与FileStorageService集成成功
|
||
- 日志记录完整性满足要求
|
||
- API接口符合RESTful规范
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-1, REQ-010-2, REQ-010-6, REQ-010-7, REQ-010-8
|
||
- **被依赖**: REQ-010-16
|
||
|
||
### 技术要点
|
||
- 使用AOP切面记录日志
|
||
- 使用异步日志写入提高性能
|
||
- 使用分页插件实现分页查询
|
||
- 使用Excel导出库实现日志导出
|
||
- 使用日志分析库实现日志统计
|
||
- 使用事务管理保证数据一致性
|
||
- 使用统一的异常处理机制
|
||
- 使用统一的响应格式
|
||
- 遵循RESTful API设计规范
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_job_log表
|
||
|
||
### API接口
|
||
- POST /api/metadata/log - 记录日志
|
||
- GET /api/metadata/log/{id} - 查询日志详情
|
||
- GET /api/metadata/log/job/{jobId} - 按Job ID查询日志
|
||
- GET /api/metadata/log - 分页查询日志
|
||
- GET /api/metadata/log/export - 导出日志
|
||
- GET /api/metadata/log/statistics - 日志统计
|
||
|
||
### 风险点
|
||
- 日志记录过多可能影响性能
|
||
- 日志导出复杂可能导致内存溢出
|
||
- 日志统计复杂可能导致统计不准确
|
||
- 异步日志写入可能导致日志丢失
|
||
|
||
---
|
||
|
||
## 子需求 16: 异常处理机制完善
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-16
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 中
|
||
- **预计工作量**: 4人天
|
||
|
||
### 需求描述
|
||
完善拉取和部署操作的异常处理机制,确保操作的可靠性,支持Session过期处理、API限制处理、网络异常处理等。
|
||
|
||
### 功能范围
|
||
- 创建MetadataExceptionHandler异常处理器
|
||
- 实现Session过期自动重新登录
|
||
- 实现API限制处理
|
||
- 实现网络异常重试
|
||
- 实现常见部署错误分类和解析
|
||
- 实现异常信息详细记录
|
||
- 实现异常告警
|
||
- 实现异常统计
|
||
- 集成SessionManager
|
||
- 集成MetadataRetrieveService
|
||
- 集成MetadataDeployService
|
||
|
||
### 验收标准
|
||
- Session过期自动重新登录成功
|
||
- API限制处理正常工作
|
||
- 网络异常重试成功
|
||
- 常见部署错误分类和解析成功
|
||
- 异常信息详细记录成功
|
||
- 异常告警功能正常工作
|
||
- 异常统计功能正常工作
|
||
- 与SessionManager集成成功
|
||
- 与MetadataRetrieveService集成成功
|
||
- 与MetadataDeployService集成成功
|
||
- 异常处理覆盖率满足要求
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-6, REQ-010-8, REQ-010-9, REQ-010-10, REQ-010-13, REQ-010-15
|
||
- **被依赖**: REQ-010-17
|
||
|
||
### 技术要点
|
||
- 使用@ExceptionHandler注解处理异常
|
||
- 使用重试机制处理网络异常
|
||
- 使用限流算法处理API限制
|
||
- 使用错误码分类解析部署错误
|
||
- 使用告警规则引擎实现异常告警
|
||
- 使用事务管理保证数据一致性
|
||
- 使用统一的异常处理机制
|
||
- 使用统一的响应格式
|
||
|
||
### 数据库设计
|
||
使用REQ-010-1创建的datai_meta_job_execution表和datai_meta_deploy_history表
|
||
|
||
### API接口
|
||
无(内部异常处理)
|
||
|
||
### 风险点
|
||
- 异常处理逻辑复杂可能导致处理不准确
|
||
- 重试机制不当可能导致重复操作
|
||
- API限制处理复杂可能导致限流不准确
|
||
- 异常告警规则复杂可能导致告警不准确
|
||
|
||
---
|
||
|
||
## 子需求 17: 性能优化和限流处理
|
||
|
||
### 需求信息
|
||
- **子需求编号**: REQ-010-17
|
||
- **父需求**: REQ-010
|
||
- **需求类型**: 功能需求
|
||
- **优先级**: 中
|
||
- **预计工作量**: 4人天
|
||
|
||
### 需求描述
|
||
实现性能优化和限流处理,确保系统在大规模元数据操作时的稳定性和性能。
|
||
|
||
### 功能范围
|
||
- 实现API调用限流
|
||
- 实现并发控制
|
||
- 实现缓存优化
|
||
- 实现数据库查询优化
|
||
- 实现文件处理优化
|
||
- 实现异步任务优化
|
||
- 实现性能监控
|
||
- 实现性能报告生成
|
||
- 集成MetadataRetrieveService
|
||
- 集成MetadataDeployService
|
||
|
||
### 验收标准
|
||
- API调用限流正常工作
|
||
- 并发控制正常工作
|
||
- 缓存优化有效提高性能
|
||
- 数据库查询优化有效提高性能
|
||
- 文件处理优化有效提高性能
|
||
- 异步任务优化有效提高性能
|
||
- 性能监控正常工作
|
||
- 性能报告生成成功
|
||
- 与MetadataRetrieveService集成成功
|
||
- 与MetadataDeployService集成成功
|
||
- 系统性能满足要求
|
||
- 代码符合项目架构规范
|
||
|
||
### 依赖关系
|
||
- **前置依赖**: REQ-010-16
|
||
- **被依赖**: 无
|
||
|
||
### 技术要点
|
||
- 使用令牌桶算法实现限流
|
||
- 使用线程池实现并发控制
|
||
- 使用Redis实现缓存
|
||
- 使用索引优化数据库查询
|
||
- 使用流式处理优化文件处理
|
||
- 使用异步任务队列优化异步任务
|
||
- 使用性能监控工具监控性能
|
||
- 使用性能分析工具分析性能瓶颈
|
||
|
||
### 数据库设计
|
||
无
|
||
|
||
### API接口
|
||
- GET /api/metadata/performance/monitor - 性能监控数据
|
||
- GET /api/metadata/performance/report - 性能报告
|
||
- POST /api/metadata/performance/configure - 配置性能参数
|
||
|
||
### 风险点
|
||
- 限流算法复杂可能导致限流不准确
|
||
- 并发控制复杂可能导致资源竞争
|
||
- 缓存策略不当可能导致缓存不一致
|
||
- 性能优化复杂可能导致优化效果不明显
|
||
|
||
---
|
||
|
||
## 子需求依赖关系图
|
||
|
||
```
|
||
REQ-010-1 (数据库表结构)
|
||
↓
|
||
REQ-010-2 (实体类和Mapper)
|
||
↓
|
||
├→ REQ-010-3 (组织配置管理)
|
||
│ ↓
|
||
│ ├→ REQ-010-4 (任务定义管理)
|
||
│ │ ↓
|
||
│ │ ├→ REQ-010-6 (元数据拉取)
|
||
│ │ │ ↓
|
||
│ │ │ ├→ REQ-010-7 (文件存储和解压)
|
||
│ │ │ │ ↓
|
||
│ │ │ │ ├→ REQ-010-11 (组件索引和查询)
|
||
│ │ │ │ │ ↓
|
||
│ │ │ │ │ ├→ REQ-010-12 (哈希对比和增量检测)
|
||
│ │ │ │ │ │ ↓
|
||
│ │ │ │ │ │ └→ REQ-010-13 (版本回溯)
|
||
│ │ │ │ │ │ ↓
|
||
│ │ │ │ │ │ └→ REQ-010-16 (异常处理)
|
||
│ │ │ │ │ ↓ ↓
|
||
│ │ │ │ │ └→ REQ-010-14 (作业执行监控) └→ REQ-010-17 (性能优化)
|
||
│ │ │ │ ↓
|
||
│ │ │ │ └→ REQ-010-15 (详细日志)
|
||
│ │ │ ↓ ↓
|
||
│ │ │ └→ REQ-010-15 (详细日志) └→ REQ-010-16 (异常处理)
|
||
│ │ ↓
|
||
│ └→ REQ-010-5 (Metadata API客户端封装)
|
||
│ ↓
|
||
│ ├→ REQ-010-6 (元数据拉取)
|
||
│ └→ REQ-010-8 (元数据部署)
|
||
│ ↓
|
||
│ ├→ REQ-010-9 (Quick Deploy)
|
||
│ └→ REQ-010-10 (Destructive Changes)
|
||
│ ↓
|
||
│ └→ REQ-010-16 (异常处理)
|
||
↓
|
||
└→ REQ-010-8 (元数据部署)
|
||
↓
|
||
├→ REQ-010-14 (作业执行监控)
|
||
└→ REQ-010-15 (详细日志)
|
||
```
|
||
|
||
## 子需求优先级排序
|
||
|
||
### 第一批(高优先级,无依赖)
|
||
1. REQ-010-1: 数据库表结构设计和创建
|
||
2. REQ-010-2: 基础实体类和Mapper创建
|
||
|
||
### 第二批(高优先级,依赖第一批)
|
||
3. REQ-010-3: Salesforce组织配置管理
|
||
4. REQ-010-5: Metadata API客户端封装
|
||
|
||
### 第三批(高优先级,依赖第二批)
|
||
5. REQ-010-4: 元数据任务定义管理
|
||
6. REQ-010-6: 元数据拉取核心功能
|
||
7. REQ-010-8: 元数据部署核心功能
|
||
|
||
### 第四批(高优先级,依赖第三批)
|
||
8. REQ-010-7: 文件存储和解压处理
|
||
9. REQ-010-9: Quick Deploy功能实现
|
||
10. REQ-010-10: Destructive Changes功能实现
|
||
|
||
### 第五批(中优先级,依赖第四批)
|
||
11. REQ-010-11: 元数据组件索引和查询
|
||
12. REQ-010-14: 作业执行监控
|
||
13. REQ-010-15: 详细日志记录和查询
|
||
|
||
### 第六批(中优先级,依赖第五批)
|
||
14. REQ-010-12: 文件哈希对比和增量检测
|
||
15. REQ-010-16: 异常处理机制完善
|
||
|
||
### 第七批(中优先级,依赖第六批)
|
||
16. REQ-010-13: 版本回溯功能
|
||
17. REQ-010-17: 性能优化和限流处理
|
||
|
||
## 总体工作量估算
|
||
|
||
| 批次 | 子需求 | 工作量(人天) |
|
||
|------|--------|----------------|
|
||
| 第一批 | REQ-010-1, REQ-010-2 | 7 |
|
||
| 第二批 | REQ-010-3, REQ-010-5 | 10 |
|
||
| 第三批 | REQ-010-4, REQ-010-6, REQ-010-8 | 15 |
|
||
| 第四批 | REQ-010-7, REQ-010-9, REQ-010-10 | 11 |
|
||
| 第五批 | REQ-010-11, REQ-010-14, REQ-010-15 | 11 |
|
||
| 第六批 | REQ-010-12, REQ-010-16 | 8 |
|
||
| 第七批 | REQ-010-13, REQ-010-17 | 8 |
|
||
| **总计** | **17个子需求** | **70人天** |
|
||
|
||
## 验收标准总结
|
||
|
||
### 完整性检查
|
||
- ✅ 所有子需求覆盖REQ-010的所有功能点
|
||
- ✅ 每个子需求都有明确的范围和边界
|
||
- ✅ 每个子需求都包含完整的CRUD操作
|
||
|
||
### 独立性检查
|
||
- ✅ 每个子需求都可以独立开发
|
||
- ✅ 每个子需求都可以独立测试
|
||
- ✅ 每个子需求都可以独立部署
|
||
|
||
### 可追溯性检查
|
||
- ✅ 每个子需求都能追溯到REQ-010的具体需求项
|
||
- ✅ 每个子需求都引用了相关的参考资料
|
||
|
||
### 可测试性检查
|
||
- ✅ 每个子需求都有清晰的验收标准
|
||
- ✅ 每个子需求的验收标准都是可测试的
|
||
- ✅ 每个子需求都有明确的交付物
|
||
|
||
### 可行性检查
|
||
- ✅ 每个子需求的工作量评估合理(3-5人天)
|
||
- ✅ 每个子需求的技术方案都是可行的
|
||
- ✅ 每个子需求都符合现有的项目架构
|
||
|
||
### 依赖关系检查
|
||
- ✅ 子需求之间的依赖关系清晰明确
|
||
- ✅ 没有循环依赖
|
||
- ✅ 优先级排序合理
|
||
|
||
## 风险总结
|
||
|
||
### 拆分粒度风险
|
||
- **风险**: 子需求拆分过细或过粗,影响开发效率
|
||
- **缓解**: 控制每个子需求的工作量在3-5人天
|
||
|
||
### 依赖关系风险
|
||
- **风险**: 子需求之间的依赖关系不清晰,导致开发阻塞
|
||
- **缓解**: 绘制依赖关系图,明确依赖关系
|
||
|
||
### 工作量评估风险
|
||
- **风险**: 工作量评估不准确,影响项目进度
|
||
- **缓解**: 参考类似项目的经验,预留缓冲时间
|
||
|
||
### 技术方案风险
|
||
- **风险**: 某些子需求的技术方案可能存在技术难点
|
||
- **缓解**: 提前进行技术预研,识别技术难点
|
||
|
||
### 优先级风险
|
||
- **风险**: 子需求的优先级排序不合理,影响整体进度
|
||
- **缓解**: 按依赖关系和业务价值排序优先级
|
||
|
||
## 下一步行动
|
||
|
||
1. **评审子需求拆分文档**: 组织团队评审子需求拆分的合理性
|
||
2. **调整子需求**: 根据评审结果调整子需求的范围和优先级
|
||
3. **制定开发计划**: 根据子需求的优先级和依赖关系制定开发计划
|
||
4. **分配开发资源**: 根据子需求的工作量分配开发资源
|
||
5. **开始开发**: 按照优先级顺序开始开发子需求
|