# Requirements - Destructive Changes功能实现 ## 需求信息 - **需求名称**: Destructive Changes功能实现 - **需求类型**: 功能需求 - **需求编号**: REQ-010-10 - **父需求**: REQ-010 - **创建日期**: 2026-01-17 - **需求版本**: v1.0.0 - **需求提出人**: 系统管理员 - **需求状态**: 待审核 ## 输入引用 引用相关的 docs 文档链接: - [REQ-010.md](REQ-010.md) - Salesforce元数据拉取和部署主需求文档 - [REQ-010-1.md](REQ-010-1.md) - 数据库表结构设计和创建 - [REQ-010-2.md](REQ-010-2.md) - 基础实体类和Mapper创建 - [REQ-010-8.md](REQ-010-8.md) - 元数据部署核心功能 - [004-元数据部署网页资料链接地址](../reference-code/metadata/004-元数据部署网页资料链接地址) - 官方文档和开源项目参考 - [010-metadata-retrieve-deploy-sub-requirements.md](010-metadata-retrieve-deploy-sub-requirements.md) - REQ-010子需求拆分文档 - [metadata-module.md](../reference-code/com/docs/metadata-module.md) - Salesforce Metadata API 模块说明(唯一真源) - [index.md](../reference-code/com/docs/index.md) - Salesforce SOAP API Java 客户端参考文档(唯一真源) ## Context Maps 强制列出本次需求依赖的 Canvas 文件: - [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示 - **相关节点**: [集成核心](node_integration_core) - 提供与Salesforce的各种连接方式 ## 需求目标 实现Destructive Changes功能,支持部署时删除指定的元数据组件,使用destructiveChanges.xml配置删除规则。 ## 需求描述 ### 概述 本需求旨在实现Destructive Changes功能,包括destructiveChanges.xml配置、Destructive Changes部署、Destructive Changes验证、Destructive Changes历史记录等。 ### 详细需求 #### 1. destructiveChanges.xml配置 - **需求描述**: 实现destructiveChanges.xml配置功能,支持可视化编辑 - **优先级**: 高 - **验收标准**: - destructiveChanges.xml配置成功 - destructiveChanges.xml格式符合Salesforce Metadata API规范 - 支持多种元数据类型配置 - 支持通配符配置 - destructiveChanges.xml验证功能正常工作 - 使用DataiMetaTask实体类的destructiveChangesXml字段存储配置 - 使用IDestructiveChangesConfigService服务接口和DestructiveChangesConfigServiceImpl实现类 - 使用DestructiveChangesXmlParser工具类解析destructiveChanges.xml - 使用DestructiveChangesXmlBuilder工具类构建destructiveChanges.xml - 提供POST /metadata/destructive-changes/config接口保存配置 - 提供GET /metadata/destructive-changes/config/{taskId}接口查询配置 - 提供POST /metadata/destructive-changes/validate接口验证配置 - 使用DestructiveChangesConfigRequest接收配置请求 - 使用DestructiveChangesConfigResponse返回配置响应 - 使用DestructiveChangesValidateRequest接收验证请求 - 使用DestructiveChangesValidateResponse返回验证响应 - 支持添加、删除、修改删除规则 - 支持批量保存删除规则 - 支持按任务ID查询配置 - 使用Java XML解析库(如JAXB或DOM4J)处理destructiveChanges.xml - 使用正则表达式验证删除规则 - 提供详细的错误信息,包括错误位置和错误原因 - 支持批量验证,提高验证效率 - **依赖关系**: 依赖于REQ-010-1, REQ-010-2 - **实现建议**: 使用DataiMetaTask实体类的destructiveChangesXml字段存储配置,使用IDestructiveChangesConfigService服务接口和DestructiveChangesConfigServiceImpl实现类,使用DestructiveChangesXmlParser和DestructiveChangesXmlBuilder工具类处理destructiveChanges.xml,提供可视化编辑器 #### 2. Destructive Changes部署 - **需求描述**: 实现Destructive Changes部署功能,支持删除指定的元数据组件 - **优先级**: 高 - **验收标准**: - Destructive Changes部署成功 - 支持删除指定的元数据组件 - 支持批量删除 - 删除操作安全可靠 - API接口符合RESTful规范 - 使用IDestructiveChangesService服务接口和DestructiveChangesServiceImpl实现类 - 使用DestructiveChangesController控制器 - 提供POST /metadata/destructive-changes/deploy接口 - 接收任务ID、组织配置ID作为参数 - 调用IMetadataApiService的deploy()方法,传入destructiveChanges.xml - 使用DataiMetaJobExecution实体类存储部署信息 - 设置jobType为"DESTRUCTIVE_CHANGES" - 设置初始状态为Pending - 记录创建时间(startTime)和创建人(createdBy) - 使用Spring的@Async注解和自定义线程池避免阻塞主线程 - 复用自定义线程池(ThreadPoolTaskExecutor)管理异步任务 - 使用Future对象跟踪异步任务状态 - 使用ConcurrentHashMap缓存异步任务Future对象 - 支持并发Destructive Changes部署(核心线程数5,最大线程数10,队列容量100) - 异步方法:deployAsync(Long jobExecutionId, Long taskId, Long orgConfigId, File destructiveChangesFile) - 更新作业执行记录状态为Processing - 调用IMetadataApiService.deploy()方法执行Destructive Changes部署 - 部署完成后更新作业执行记录状态为Success或Failed - 解析部署结果并存储到datai_meta_job_execution表 - 使用DestructiveChangesDeployRequest接收部署请求 - 使用DestructiveChangesDeployResponse返回部署响应 - 返回Job ID和初始状态 - 使用DestructiveChangesXmlBuilder构建destructiveChanges.xml - 使用DestructiveChangesXmlBuilder保存destructiveChanges.xml到文件 - 支持删除前备份元数据组件 - 使用事务确保删除和备份的原子性 - 提供删除日志记录,记录删除的详细信息 - 支持批量删除,提高删除效率 - 提供删除验证功能,验证删除的完整性 - **依赖关系**: 依赖于destructiveChanges.xml配置和REQ-010-8 - **实现建议**: 使用DestructiveChangesController控制器,提供POST /metadata/destructive-changes/deploy接口,调用IDestructiveChangesService的deploy()方法,调用IMetadataApiService的deploy()方法,传入destructiveChanges.xml,使用异步执行避免阻塞主线程,使用DataiMetaJobExecution实体类存储部署信息 #### 3. Destructive Changes验证 - **需求描述**: 实现Destructive Changes验证功能,验证删除规则 - **优先级**: 高 - **验收标准**: - Destructive Changes验证功能正常工作 - destructiveChanges.xml格式验证正确 - 删除规则验证正确 - 验证失败返回详细错误信息 - 使用IDestructiveChangesConfigService服务接口和DestructiveChangesConfigServiceImpl实现类 - 使用DestructiveChangesXmlParser工具类验证destructiveChanges.xml格式 - 使用Java XML解析库(如JAXB或DOM4J)验证destructiveChanges.xml格式 - 使用正则表达式验证删除规则 - 提供详细的错误信息,包括错误位置和错误原因 - 支持批量验证,提高验证效率 - 提供POST /metadata/destructive-changes/validate接口 - 使用DestructiveChangesValidateRequest接收验证请求 - 使用DestructiveChangesValidateResponse返回验证响应 - 验证根元素必须为"Package" - 验证types元素必须包含至少一个members元素 - 验证types元素必须包含且仅包含一个name元素 - 验证XML格式符合Salesforce Metadata API规范 - 验证元数据类型是否有效 - 验证成员名称格式是否正确 - 支持通配符验证 - 提供预验证功能,在部署前验证配置 - **依赖关系**: 依赖于destructiveChanges.xml配置 - **实现建议**: 使用IDestructiveChangesConfigService服务接口和DestructiveChangesConfigServiceImpl实现类,使用DestructiveChangesXmlParser工具类验证destructiveChanges.xml格式,使用正则表达式验证删除规则,提供详细的错误信息 #### 4. Destructive Changes历史记录 - **需求描述**: 实现Destructive Changes历史记录功能 - **优先级**: 高 - **验收标准**: - Destructive Changes历史记录成功 - 支持分页查询 - 支持条件查询 - 历史记录完整 - 使用DataiMetaJobExecution表存储Destructive Changes历史记录 - 使用jobType字段区分Destructive Changes和普通部署(jobType = "DESTRUCTIVE_CHANGES") - 使用IDestructiveChangesService服务接口和DestructiveChangesServiceImpl实现类 - 使用MyBatis Plus的BaseMapper实现历史记录查询 - 使用Page对象实现分页查询 - 使用QueryWrapper实现条件查询 - 提供GET /metadata/destructive-changes/history接口 - 支持按组织配置ID、状态、时间范围、创建人查询 - 使用DestructiveChangesHistoryResponse返回历史记录响应 - 按createTime降序排列 - 返回总记录数、当前页、每页大小、记录列表 - 支持查询部署状态、部署时间、部署结果、错误信息 - 支持查询删除的组件信息 - 支持查询备份信息 - 支持查询部署详情 - 支持查询部署进度 - 支持查询部署耗时 - 支持查询组件统计信息 - 支持查询测试统计信息 - 支持查询测试结果 - 分页查询100条记录无性能下降 - 历史记录查询响应时间 < 1s - **依赖关系**: 依赖于Destructive Changes部署 - **实现建议**: 使用DataiMetaJobExecution表存储Destructive Changes历史记录,使用jobType字段区分Destructive Changes和普通部署,使用MyBatis Plus的BaseMapper实现历史记录查询,使用Page对象实现分页查询,使用QueryWrapper实现条件查询 #### 5. Destructive Changes回滚 - **需求描述**: 实现Destructive Changes回滚功能,支持恢复被删除的元数据组件 - **优先级**: 高 - **验收标准**: - Destructive Changes回滚功能正常工作 - 支持恢复被删除的元数据组件 - 回滚操作安全可靠 - 回滚日志记录完整 - 使用IDestructiveChangesService服务接口和DestructiveChangesServiceImpl实现类 - 使用DestructiveChangesController控制器 - 提供POST /metadata/destructive-changes/rollback/{jobId}接口 - 接收Job ID作为参数 - 验证Job是否存在 - 验证Job状态必须为Success才能回滚 - 验证备份数据是否存在 - 使用DataiMetaJobExecution实体类的backupData字段存储备份数据 - 使用Spring的@Async注解和自定义线程池避免阻塞主线程 - 复用自定义线程池(ThreadPoolTaskExecutor)管理异步任务 - 使用Future对象跟踪异步任务状态 - 使用ConcurrentHashMap缓存异步任务Future对象 - 异步方法:rollbackAsync(Long jobId, Long orgConfigId, String backupData) - 更新作业执行记录状态为Rollback_Processing - 调用IMetadataApiService的rollback()方法执行回滚 - 回滚完成后更新作业执行记录状态为Rollback_Success或Rollback_Failed - 解析回滚结果并存储到datai_meta_job_execution表 - 使用DestructiveChangesRollbackRequest接收回滚请求 - 使用DestructiveChangesRollbackResponse返回回滚响应 - 返回Job ID和回滚状态 - 使用备份的元数据组件进行回滚 - 使用事务确保回滚的原子性 - 提供回滚日志记录,记录回滚的详细信息 - 支持批量回滚,提高回滚效率 - 提供回滚验证功能,验证回滚的完整性 - 支持回滚进度查询 - 支持回滚历史记录查询 - 支持回滚取消功能 - 使用Future.cancel()取消异步回滚任务 - 确保取消后资源正确释放 - 记录取消日志 - 从ConcurrentHashMap中移除Future对象和进度缓存 - 回滚响应时间 < 2s - 回滚操作安全可靠,无数据丢失 - 回滚日志记录完整,便于审计和问题排查 - **依赖关系**: 依赖于Destructive Changes部署和历史记录 - **实现建议**: 使用DestructiveChangesController控制器,提供POST /metadata/destructive-changes/rollback/{jobId}接口,调用IDestructiveChangesService的rollback()方法,使用备份的元数据组件进行回滚,使用事务确保回滚的原子性,提供回滚日志记录,使用异步执行避免阻塞主线程 ## 约束 - **技术栈限制**: 必须基于现有的Spring Boot 3 + Vue 3技术栈 - **架构约束**: 必须遵循Authentication.canvas中定义的架构和调用关系 - **模块约束**: 必须在datai-salesforce-metadata模块下实现 - **数据库约束**: 必须使用MyBatis Plus作为持久层框架 - **API约束**: 必须使用现有的集成核心功能进行Salesforce API调用 - **文档约束**: 必须遵循REQ-010中定义的验收标准 - **依赖约束**: 必须依赖于REQ-010-1, REQ-010-2, REQ-010-8 - **控制器约束**: 必须使用DestructiveChangesController控制器 - **服务接口约束**: 必须实现IDestructiveChangesService和IDestructiveChangesConfigService接口 - **服务实现约束**: 必须实现DestructiveChangesServiceImpl和DestructiveChangesConfigServiceImpl实现类 - **实体类约束**: 必须使用DataiMetaTask实体类的destructiveChangesXml字段存储配置 - **作业执行实体约束**: 必须使用DataiMetaJobExecution实体类存储部署信息 - **作业类型约束**: 必须设置jobType为"DESTRUCTIVE_CHANGES" - **Mapper约束**: 必须使用DataiMetaJobExecutionMapper进行数据库操作 - **异步注解约束**: 必须使用Spring的@Async注解标记异步方法 - **线程池约束**: 必须复用自定义线程池(ThreadPoolTaskExecutor)管理异步任务 - **线程池配置约束**: 核心线程数5,最大线程数10,队列容量100,线程名称前缀deploy-async-,拒绝策略CallerRunsPolicy - **Future对象约束**: 必须使用Future对象跟踪异步任务状态 - **ConcurrentHashMap约束**: 必须使用ConcurrentHashMap缓存异步任务Future对象和部署进度信息 - **XML解析库约束**: 必须使用Java XML解析库(如JAXB或DOM4J)处理destructiveChanges.xml - **XML工具类约束**: 必须使用DestructiveChangesXmlParser和DestructiveChangesXmlBuilder工具类 - **正则表达式约束**: 必须使用正则表达式验证删除规则 - **事务管理约束**: 必须使用@Transactional注解管理事务 - **RESTful API约束**: 必须符合RESTful规范 - **接口路径约束**: 必须使用/metadata/destructive-changes作为基础路径 - **配置接口约束**: 必须实现POST /metadata/destructive-changes/config接口 - **查询配置接口约束**: 必须实现GET /metadata/destructive-changes/config/{taskId}接口 - **验证接口约束**: 必须实现POST /metadata/destructive-changes/validate接口 - **部署接口约束**: 必须实现POST /metadata/destructive-changes/deploy接口 - **历史记录接口约束**: 必须实现GET /metadata/destructive-changes/history接口 - **回滚接口约束**: 必须实现POST /metadata/destructive-changes/rollback/{jobId}接口 - **响应格式约束**: 必须使用R统一响应格式 - **DTO约束**: 必须实现DestructiveChangesConfigRequest、DestructiveChangesConfigResponse、DestructiveChangesValidateRequest、DestructiveChangesValidateResponse、DestructiveChangesDeployRequest、DestructiveChangesDeployResponse、DestructiveChangesHistoryResponse、DestructiveChangesRollbackRequest、DestructiveChangesRollbackResponse等DTO类 - **日志记录约束**: 必须遵循现有的日志记录规范 - **异常处理约束**: 必须遵循现有的异常处理机制 - **Lombok约束**: 必须使用Lombok的@Data、@Slf4j等注解简化代码 - **Swagger约束**: 必须使用Swagger注解(@Schema)标注API文档 - **Excel约束**: 必须使用@Excel注解标注导出字段 - **Jackson约束**: 必须使用Jackson的@JsonFormat注解格式化日期时间 - **分页查询约束**: 必须使用Page对象实现分页查询 - **条件查询约束**: 必须使用QueryWrapper实现条件查询 - **查询条件约束**: 必须支持按组织配置ID、状态、时间范围、创建人查询 - **状态枚举约束**: 必须复用现有的状态枚举(Pending/Processing/Success/Failed/Rollback_Processing/Rollback_Success/Rollback_Failed) - **状态转换约束**: 必须支持状态转换验证 - **备份字段约束**: 必须使用DataiMetaJobExecution实体类的backupData字段存储备份数据 - **备份验证约束**: 必须验证备份数据是否存在 - **回滚验证约束**: 必须验证Job状态必须为Success才能回滚 - **回滚状态约束**: 必须设置回滚状态为Rollback_Processing、Rollback_Success或Rollback_Failed - **回滚取消约束**: 必须支持回滚取消功能 - **Future.cancel约束**: 必须使用Future.cancel()取消异步回滚任务 - **资源释放约束**: 必须确保取消后资源正确释放 - **取消日志约束**: 必须记录取消日志 - **缓存清理约束**: 必须从ConcurrentHashMap中移除Future对象和进度缓存 - **部署方法约束**: 必须调用IMetadataApiService的deploy()方法执行Destructive Changes部署 - **回滚方法约束**: 必须调用IMetadataApiService的rollback()方法执行回滚 - **初始化记录约束**: 必须初始化作业执行记录到datai_meta_job_execution表 - **初始状态约束**: 必须设置初始状态为Pending - **创建时间约束**: 必须记录创建时间(startTime) - **创建人约束**: 必须记录创建人(createdBy) - **状态更新方法约束**: 必须实现updateJobStatus()方法更新作业状态 - **结果解析方法约束**: 必须实现parseDeployResult()和parseRollbackResult()方法解析部署和回滚结果 - **部署方法约束**: 必须实现deploy()方法触发Destructive Changes部署 - **异步部署方法约束**: 必须实现deployAsync()方法执行异步Destructive Changes部署 - **回滚方法约束**: 必须实现rollback()方法触发回滚 - **异步回滚方法约束**: 必须实现rollbackAsync()方法执行异步回滚 - **配置保存方法约束**: 必须实现saveConfig()方法保存配置 - **配置查询方法约束**: 必须实现getConfig()方法查询配置 - **配置验证方法约束**: 必须实现validateConfig()方法验证配置 - **历史查询方法约束**: 必须实现getHistory()方法查询历史记录 - **XML构建方法约束**: 必须实现buildXml()方法构建destructiveChanges.xml - **XML保存方法约束**: 必须实现saveXmlToFile()方法保存destructiveChanges.xml到文件 - **XML解析方法约束**: 必须实现parseXml()方法解析destructiveChanges.xml - **性能约束**: destructiveChanges.xml配置响应时间 < 1s,Destructive Changes部署触发响应时间 < 1s,Destructive Changes验证响应时间 < 500ms,Destructive Changes历史记录查询响应时间 < 1s,Destructive Changes回滚响应时间 < 2s,并发触发10个Destructive Changes部署任务无性能下降,分页查询100条记录无性能下降 - **安全性约束**: Destructive Changes操作需要认证,部署数据传输加密,敏感信息不记录到日志,部署历史记录权限控制,删除操作需要二次确认 - **兼容性约束**: 必须使用现有的集成核心功能进行Salesforce API调用,必须使用现有的认证模块进行OAuth认证,必须遵循现有的异常处理机制,必须遵循现有的日志记录规范 - **复用约束**: 必须复用现有的状态枚举、状态管理逻辑、AsyncConfig配置类、线程池、部署结果解析逻辑、部署历史记录逻辑 - **XML格式约束**: destructiveChanges.xml格式必须符合Salesforce Metadata API规范 - **根元素约束**: 根元素必须为"Package" - **types元素约束**: types元素必须包含至少一个members元素 - **name元素约束**: types元素必须包含且仅包含一个name元素 - **元数据类型约束**: 元数据类型必须有效 - **成员名称约束**: 成员名称格式必须正确 - **通配符支持约束**: 必须支持通配符配置 - **批量操作约束**: 必须支持批量删除、批量回滚、批量验证 - **删除前备份约束**: 必须支持删除前备份元数据组件 - **事务原子性约束**: 必须使用事务确保删除和备份的原子性 - **删除日志约束**: 必须提供删除日志记录,记录删除的详细信息 - **删除验证约束**: 必须提供删除验证功能,验证删除的完整性 - **回滚验证约束**: 必须提供回滚验证功能,验证回滚的完整性 - **回滚进度约束**: 必须支持回滚进度查询 - **回滚历史约束**: 必须支持回滚历史记录查询 - **回滚取消约束**: 必须支持回滚取消功能 - **预验证约束**: 必须提供预验证功能,在部署前验证配置 - **错误信息约束**: 必须提供详细的错误信息,包括错误位置和错误原因 - **批量验证约束**: 必须支持批量验证,提高验证效率 ## Rule Set "请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。" **具体规则**: - 必须使用Canvas中定义的类名和方法名 - 必须遵循Canvas中定义的调用关系 - 必须参考Canvas中的流程图逻辑 ## 验收标准 - **功能完整性**: 所有Destructive Changes功能能够正常工作 - **安全性**: 删除操作安全可靠,支持回滚 - **代码规范性**: 代码符合项目编码规范,有清晰的注释 - **可维护性**: 代码结构清晰,易于扩展和维护 - **可测试性**: 代码易于单元测试和集成测试 ## 风险 - **删除操作风险**: 删除操作不可逆可能导致数据丢失 - **缓解措施**: 提供备份和回滚功能,使用事务确保删除和备份的原子性,删除操作需要二次确认,提供删除预览功能 - **监控指标**: 监控删除操作的成功率和失败原因,监控备份成功率,监控回滚成功率 - **验证风险**: 验证逻辑不完善可能导致误删除 - **缓解措施**: 仔细验证destructiveChanges.xml格式和删除规则,提供详细的错误信息,提供预验证功能,在部署前验证配置 - **监控指标**: 监控验证的成功率和失败原因,监控误删除率 - **回滚风险**: 回滚功能不完善可能导致无法恢复 - **缓解措施**: 使用备份的元数据组件进行回滚,使用事务确保回滚的原子性,提供回滚验证功能,提供回滚进度查询 - **监控指标**: 监控回滚的成功率和失败原因,监控回滚完成时间 - **历史记录风险**: Destructive Changes历史记录过多可能影响查询性能 - **缓解措施**: 使用分页查询,定期清理过期历史记录,使用索引优化查询 - **监控指标**: 监控历史记录查询性能,监控历史记录数量 - **XML解析风险**: XML解析失败可能导致配置错误 - **缓解措施**: 使用异常处理和重试机制,验证XML格式,提供详细的错误信息 - **监控指标**: 监控XML解析的成功率和错误率 - **XML格式风险**: XML格式不符合Salesforce Metadata API规范可能导致部署失败 - **缓解措施**: 仔细验证XML格式,参考Salesforce官方文档,提供格式检查功能 - **监控指标**: 监控XML格式验证的成功率和失败原因 - **元数据类型风险**: 元数据类型无效可能导致删除失败 - **缓解措施**: 验证元数据类型是否有效,提供元数据类型列表,支持自动补全 - **监控指标**: 监控元数据类型验证的成功率和失败原因 - **成员名称风险**: 成员名称格式不正确可能导致删除失败 - **缓解措施**: 验证成员名称格式是否正确,提供格式检查功能,支持通配符验证 - **监控指标**: 监控成员名称验证的成功率和失败原因 - **通配符风险**: 通配符使用不当可能导致误删除 - **缓解措施**: 提供通配符使用说明,提供通配符预览功能,限制通配符使用范围 - **监控指标**: 监控通配符使用的成功率和失败原因 - **备份风险**: 备份数据丢失可能导致无法回滚 - **缓解措施**: 使用可靠的存储介质,定期检查备份数据完整性,提供备份恢复测试 - **监控指标**: 监控备份数据的完整性和可用性 - **事务风险**: 事务管理不当可能导致数据不一致 - **缓解措施**: 合理设置事务边界,使用事务隔离级别,提供事务回滚机制 - **监控指标**: 监控事务的成功率和回滚率 - **异步执行风险**: 异步执行失败可能导致状态不一致 - **缓解措施**: 使用Future对象跟踪异步任务状态,提供状态同步机制,提供异常处理和重试机制 - **监控指标**: 监控异步任务的成功率和失败原因 - **线程池风险**: 线程池参数配置不当可能导致资源耗尽或任务积压 - **缓解措施**: 复用现有的线程池配置,根据实际负载调整线程池参数,监控线程池状态 - **监控指标**: 监控线程池的活跃线程数、队列大小、拒绝任务数 - **ConcurrentHashMap风险**: ConcurrentHashMap缓存数据丢失可能导致进度查询失败 - **缓解措施**: 使用持久化存储作为备份,定期检查缓存一致性,提供缓存恢复机制 - **监控指标**: 监控缓存的命中率和数据一致性 - **API调用风险**: API调用失败可能导致Destructive Changes部署失败 - **缓解措施**: 使用异常处理和重试机制,使用超时设置,使用降级机制 - **监控指标**: 监控API调用的成功率和响应时间 - **SessionManager风险**: SessionManager失效可能导致认证失败 - **缓解措施**: 复用现有的SessionManager逻辑,使用自动重新登录机制,提供认证状态检查 - **监控指标**: 监控SessionManager的成功率和错误率 - **OAuth认证风险**: OAuth认证失败可能导致API调用失败 - **缓解措施**: 复用现有的OAuth认证逻辑,使用Token刷新机制,提供认证状态检查 - **监控指标**: 监控OAuth认证的成功率和错误率 - **分页查询风险**: 分页查询参数不当可能导致查询性能下降 - **缓解措施**: 限制分页大小,使用索引优化查询,监控查询性能 - **监控指标**: 监控分页查询的响应时间和数据库负载 - **条件查询风险**: 条件查询过于复杂可能导致查询性能下降 - **缓解措施**: 限制查询条件数量,使用索引优化查询,监控查询性能 - **监控指标**: 监控条件查询的响应时间和数据库负载 - **正则表达式风险**: 正则表达式性能不佳可能导致验证缓慢 - **缓解措施**: 优化正则表达式,使用预编译正则表达式,限制正则表达式复杂度 - **监控指标**: 监控正则表达式的执行时间 - **错误信息风险**: 错误信息不完整可能导致问题排查困难 - **缓解措施**: 提供详细的错误信息,包括错误位置和错误原因,提供错误日志记录 - **监控指标**: 监控错误信息的完整性和准确性 - **批量操作风险**: 批量操作失败可能导致部分操作成功 - **缓解措施**: 使用事务确保批量操作的原子性,提供批量操作进度查询,提供批量操作回滚机制 - **监控指标**: 监控批量操作的成功率和失败原因 - **删除验证风险**: 删除验证不完善可能导致误删除 - **缓解措施**: 提供删除预览功能,提供删除验证功能,提供删除确认机制 - **监控指标**: 监控删除验证的成功率和失败原因 - **回滚验证风险**: 回滚验证不完善可能导致回滚失败 - **缓解措施**: 提供回滚验证功能,提供回滚进度查询,提供回滚确认机制 - **监控指标**: 监控回滚验证的成功率和失败原因 - **回滚取消风险**: 回滚取消不完善可能导致资源泄漏 - **缓解措施**: 使用Future.cancel()取消异步回滚任务,确保取消后资源正确释放,记录取消日志 - **监控指标**: 监控回滚取消的成功率和资源释放情况 - **预验证风险**: 预验证不完善可能导致部署失败 - **缓解措施**: 提供详细的预验证错误信息,提供预验证修复建议,支持预验证后自动修复 - **监控指标**: 监控预验证的成功率和失败原因 - **内存使用风险**: 内存使用不当可能导致内存溢出 - **缓解措施**: 复用现有的内存管理逻辑,限制内存使用,监控内存使用情况,使用内存优化技术 - **监控指标**: 监控内存使用情况和GC频率 - **CPU使用风险**: CPU使用过高可能导致系统性能下降 - **缓解措施**: 复用现有的异步处理逻辑,限制并发数,优化算法,监控CPU使用情况 - **监控指标**: 监控CPU使用情况和系统负载 - **网络风险**: 网络不稳定可能导致API调用失败 - **缓解措施**: 复用现有的网络处理逻辑,使用重试机制,使用超时设置,使用降级机制 - **监控指标**: 监控网络延迟和丢包率 - **并发控制风险**: 并发控制不当可能导致数据不一致 - **缓解措施**: 复用现有的并发控制逻辑,使用锁机制,使用事务管理,监控并发操作 - **监控指标**: 监控并发操作的成功率和冲突率 - **日志记录风险**: 日志记录不当可能导致问题排查困难 - **缓解措施**: 复用现有的日志记录逻辑,使用结构化日志,记录关键信息,提供日志查询功能 - **监控指标**: 监控日志的完整性和可读性 - **异常处理风险**: 异常处理不当可能导致系统崩溃 - **缓解措施**: 复用现有的异常处理逻辑,使用统一的异常处理机制,提供异常恢复机制 - **监控指标**: 监控异常的发生率和类型分布 - **性能风险**: 性能不佳可能导致用户体验差 - **缓解措施**: 复用现有的性能优化逻辑,使用缓存,使用异步处理,监控性能指标 - **监控指标**: 监控响应时间、吞吐量、资源使用情况 - **可扩展性风险**: 可扩展性不佳可能导致系统难以扩展 - **缓解措施**: 复用现有的可扩展性设计,使用模块化设计,使用接口抽象,监控扩展能力 - **监控指标**: 监控系统的扩展能力和扩展成本 - **可维护性风险**: 可维护性不佳可能导致代码难以维护 - **缓解措施**: 复用现有的可维护性设计,使用清晰的代码结构,使用注释,提供维护文档 - **监控指标**: 监控代码的复杂度和可读性 - **可测试性风险**: 可测试性不佳可能导致测试困难 - **缓解措施**: 复用现有的可测试性设计,使用依赖注入,使用接口抽象,提供测试文档 - **监控指标**: 监控测试覆盖率和测试成功率 - **安全性风险**: 安全性不佳可能导致数据泄露 - **缓解措施**: 复用现有的安全性设计,使用认证和授权,使用加密,监控安全事件 - **监控指标**: 监控安全事件和漏洞扫描结果 - **兼容性风险**: 兼容性不佳可能导致系统无法运行 - **缓解措施**: 复用现有的兼容性设计,使用版本控制,使用兼容性测试,监控兼容性问题 - **监控指标**: 监控兼容性问题和降级触发频率 - **可靠性风险**: 可靠性不佳可能导致系统不稳定 - **缓解措施**: 复用现有的可靠性设计,使用冗余设计,使用故障恢复,监控系统可用性 - **监控指标**: 监控系统的可用性和故障恢复时间 - **可观测性风险**: 可观测性不佳可能导致问题排查困难 - **缓解措施**: 复用现有的可观测性设计,使用日志,使用监控,使用追踪,监控可观测性指标 - **监控指标**: 监控日志的完整性,监控的覆盖率,追踪的成功率 - **复用逻辑风险**: 复用逻辑不当可能导致Destructive Changes功能异常 - **缓解措施**: 充分测试复用逻辑,确保复用逻辑的正确性,提供复用逻辑文档 - **监控指标**: 监控复用逻辑的成功率和错误率 - **依赖风险**: 依赖REQ-010-1, REQ-010-2, REQ-010-8可能导致依赖问题 - **缓解措施**: 确保依赖的需求已经完成,避免依赖问题,提供依赖检查机制 - **监控指标**: 监控依赖的可用性和兼容性 ## 需求变更记录 | 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 | |------|---------|---------|--------|--------|------| | 2026-01-17 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 | | 2026-01-26 | 优化需求文档 | 基于当前项目实际情况,优化需求文档,包括:1. 明确了使用DataiMetaTask实体类的destructiveChangesXml字段存储配置;2. 明确了使用IDestructiveChangesConfigService服务接口和DestructiveChangesConfigServiceImpl实现类;3. 明确了使用DestructiveChangesXmlParser和DestructiveChangesXmlBuilder工具类处理destructiveChanges.xml;4. 明确了使用IDestructiveChangesService服务接口和DestructiveChangesServiceImpl实现类;5. 明确了使用DestructiveChangesController控制器;6. 明确了使用DataiMetaJobExecution实体类存储部署信息;7. 明确了设置jobType为"DESTRUCTIVE_CHANGES";8. 明确了使用Spring的@Async注解和自定义线程池;9. 明确了复用DeployStatus枚举和状态管理逻辑;10. 明确了使用定时任务轮询部署状态;11. 明确了使用ConcurrentHashMap缓存部署进度信息;12. 明确了使用Future.cancel()取消异步任务;13. 明确了使用Java XML解析库(如JAXB或DOM4J)处理destructiveChanges.xml;14. 明确了使用正则表达式验证删除规则;15. 明确了使用MyBatis Plus的BaseMapper实现查询;16. 明确了使用Page对象实现分页查询;17. 明确了使用QueryWrapper实现条件查询;18. 明确了使用R统一响应格式;19. 明确了使用@Transactional注解管理事务;20. 明确了使用Lombok的@Data、@Slf4j等注解;21. 明确了使用Swagger注解标注API文档;22. 明确了使用@Excel注解标注导出字段;23. 明确了使用Jackson的@JsonFormat注解格式化日期时间;24. 明确了复用AsyncConfig配置类和线程池;25. 明确了使用DataiMetaJobExecution实体类的backupData字段存储备份数据;26. 明确了支持删除前备份元数据组件;27. 明确了使用事务确保删除和备份的原子性;28. 明确了支持回滚功能;29. 明确了支持回滚取消功能;30. 明确了支持回滚进度查询;31. 明确了支持回滚历史记录查询;32. 明确了支持预验证功能;33. 明确了支持通配符配置;34. 明确了支持批量操作;35. 明确了支持删除预览功能;36. 明确了支持删除验证功能;37. 明确了支持回滚验证功能;38. 明确了删除操作需要二次确认;39. 明确了提供详细的错误信息,包括错误位置和错误原因;40. 明确了使用IMetadataApiService的deploy()方法执行Destructive Changes部署;41. 明确了使用IMetadataApiService的rollback()方法执行回滚;42. 明确了验证Job状态必须为Success才能回滚;43. 明确了验证备份数据是否存在;44. 明确了验证根元素必须为"Package";45. 明确了验证types元素必须包含至少一个members元素;46. 明确了验证types元素必须包含且仅包含一个name元素;47. 明确了验证元数据类型是否有效;48. 明确了验证成员名称格式是否正确;49. 明确了destructiveChanges.xml格式必须符合Salesforce Metadata API规范;50. 增加了详细的约束条件;51. 增加了详细的风险评估和缓解措施 | 根据架构决策文档和提示词文档优化需求文档,确保需求与实际实现一致 | 系统管理员 | - | 待审核 | ## 相关人员 - **需求提出人**: 系统管理员 - 联系方式 - **需求负责人**: 系统管理员 - 联系方式 - **技术负责人**: 开发工程师 - 联系方式 - **测试负责人**: 测试工程师 - 联系方式 - **其他相关人员**: - 联系方式 ## 评审信息 - **评审日期**: - - **评审人员**: - - **评审结果**: - - **评审意见**: - - **修改建议**: -