30 KiB
30 KiB
Requirements - Quick Deploy功能实现
需求信息
- 需求名称: Quick Deploy功能实现
- 需求类型: 功能需求
- 需求编号: REQ-010-9
- 父需求: REQ-010
- 创建日期: 2026-01-17
- 需求版本: v1.0.0
- 需求提出人: 系统管理员
- 需求状态: 待审核
输入引用
引用相关的 docs 文档链接:
- REQ-010.md - Salesforce元数据拉取和部署主需求文档
- REQ-010-1.md - 数据库表结构设计和创建
- REQ-010-2.md - 基础实体类和Mapper创建
- REQ-010-8.md - 元数据部署核心功能
- 004-元数据部署网页资料链接地址 - 官方文档和开源项目参考
- 010-metadata-retrieve-deploy-sub-requirements.md - REQ-010子需求拆分文档
- metadata-module.md - Salesforce Metadata API 模块说明(唯一真源)
- index.md - Salesforce SOAP API Java 客户端参考文档(唯一真源)
Context Maps
强制列出本次需求依赖的 Canvas 文件:
- Authentication.canvas - 项目架构视觉化展示
- 相关节点: 集成核心 - 提供与Salesforce的各种连接方式
需求目标
实现Quick Deploy功能,支持基于最近一次成功的部署记录快速重新部署,无需重新运行测试。
需求描述
概述
本需求旨在实现Quick Deploy功能,包括Quick Deploy触发、Quick Deploy历史记录、Quick Deploy状态监控、Quick Deploy结果解析等。
详细需求
1. Quick Deploy触发
- 需求描述: 实现Quick Deploy触发功能,基于最近一次成功的部署记录,使用RESTful API接口调用IMetadataApiService的quickDeploy()方法
- 优先级: 高
- 验收标准:
- Quick Deploy触发成功
- 支持选择组织配置(orgConfigId)
- 查询最近一次成功的部署记录(按createTime降序,LIMIT 1)
- 支持Quick Deploy验证(检查部署记录是否在30天内)
- 验证部署状态为Success
- 触发成功返回Job ID(datai_meta_job_execution.id)
- 初始化作业执行记录到datai_meta_job_execution表
- 设置jobType为"QUICK_DEPLOY"
- 设置初始状态为Pending
- 记录创建时间(startTime)
- 记录创建人(createdBy)
- API接口符合RESTful规范(POST /metadata/quick-deploy/trigger)
- 使用QuickDeployController控制器
- 调用IQuickDeployService.triggerQuickDeploy()方法
- 返回QuickDeployTriggerResponse响应
- 如果没有找到成功的部署记录,抛出DeployException
- 如果部署记录超过30天,抛出DeployException
- 依赖关系: 依赖于REQ-010-1, REQ-010-2, REQ-010-8
- 实现建议: 使用QuickDeployController控制器,提供POST /metadata/quick-deploy/trigger接口,调用IQuickDeployService的triggerQuickDeploy()方法,查询最近一次成功的部署记录,验证Quick Deploy可用性,使用异步线程池执行Quick Deploy任务
2. Quick Deploy历史记录
- 需求描述: 实现Quick Deploy历史记录功能,使用MyBatis Plus的BaseMapper实现查询
- 优先级: 高
- 验收标准:
- Quick Deploy历史记录成功
- 使用datai_meta_job_execution表存储Quick Deploy历史记录
- 使用jobType字段区分Quick Deploy和普通部署(jobType = "QUICK_DEPLOY")
- 支持分页查询(使用Page对象)
- 支持条件查询(使用QueryWrapper)
- 支持按组织配置ID查询(orgConfigId)
- 支持按状态查询(status)
- 支持按时间范围查询(startTime, endTime)
- 支持按创建人查询(createdBy)
- 历史记录完整
- 返回QuickDeployHistoryResponse响应
- 包含完整的部署信息(任务信息、组织信息、状态、时间、结果等)
- API接口符合RESTful规范(GET /metadata/quick-deploy/history)
- 按createTime降序排列
- 依赖关系: 依赖于Quick Deploy触发
- 实现建议: 使用MyBatis Plus的BaseMapper实现历史记录查询,使用Page对象实现分页查询,使用QueryWrapper实现条件查询,支持多种查询条件组合
3. Quick Deploy状态监控
- 需求描述: 实现Quick Deploy状态监控,使用状态机模式管理Quick Deploy状态(Pending/Processing/Success/Failed/Cancelled),复用现有的DeployStatus枚举和状态管理逻辑
- 优先级: 高
- 验收标准:
- 状态监控正常工作
- 复用DeployStatus枚举(Pending/Processing/Success/Failed/Partial_Success/Cancelled)
- 使用状态机模式管理Quick Deploy状态
- 支持状态查询(GET /metadata/quick-deploy/progress/{jobId})
- 状态更新及时
- 使用轮询机制检查Quick Deploy状态
- 使用定时任务轮询Quick Deploy状态(@Scheduled注解)
- 轮询间隔可配置(metadata.deploy.poll-interval,默认5000毫秒)
- 将状态更新到datai_meta_job_execution表
- 记录状态变更时间
- 支持状态转换验证(Pending -> Processing -> Success/Failed/Cancelled)
- 复用现有的状态机管理类
- 使用ConcurrentHashMap缓存Quick Deploy进度信息
- 缓存更新及时
- 返回QuickDeployProgressResponse响应
- 进度查询响应时间 < 500ms
- 依赖关系: 依赖于Quick Deploy触发
- 实现建议: 复用DeployStatus枚举和状态管理逻辑,使用轮询机制检查Quick Deploy状态,使用定时任务(@Scheduled注解)定期查询Quick Deploy状态,将状态更新到数据库,使用ConcurrentHashMap缓存Quick Deploy进度信息
4. Quick Deploy结果解析
- 需求描述: 实现Quick Deploy结果解析,提取错误信息,复用现有的部署结果解析逻辑
- 优先级: 高
- 验收标准:
- Quick Deploy结果解析成功
- 使用JSON解析库(Jackson)处理API响应
- 使用正则表达式提取错误信息
- 复用现有的部署结果解析逻辑
- 错误信息提取正确
- 支持多种部署状态(Success/Failed/Partial_Success)
- 错误信息详细(包含组件类型、文件名、错误消息、行号、列号等)
- 支持测试结果解析(runTestResult)
- 支持组件统计信息解析(numberComponentsTotal, numberComponentsDeployed, numberComponentErrors)
- 支持测试统计信息解析(numberTestsTotal, numberTestsCompleted, numberTestWarnings, numberTestErrors)
- 将解析结果存储到datai_meta_job_execution表
- 部署详情存储到deployDetails字段
- 错误信息存储到errorMessage字段
- 实现parseQuickDeployResult()方法
- 返回QuickDeployResult响应
- 支持多种错误类型识别
- 依赖关系: 依赖于Quick Deploy状态监控
- 实现建议: 复用现有的部署结果解析逻辑,使用Jackson解析API响应,使用正则表达式提取错误信息,将解析结果存储到数据库(datai_meta_job_execution表),支持多种部署状态和错误类型识别
5. Quick Deploy取消功能
- 需求描述: 实现Quick Deploy取消功能,使用Future.cancel()取消异步任务,使用状态机管理取消状态
- 优先级: 高
- 验收标准:
- Quick Deploy取消功能正常工作
- 支持取消正在进行的Quick Deploy任务(POST /metadata/quick-deploy/cancel/{jobId})
- 使用Future.cancel()取消异步任务
- 将状态更新为Cancelled
- 取消后资源正确释放
- 取消状态更新及时
- 记录取消日志
- 从ConcurrentHashMap中移除Future对象
- 从ConcurrentHashMap中移除进度缓存
- 支持取消验证(只能取消Processing状态的任务)
- 如果任务不存在或已完成,抛出DeployException
- API接口符合RESTful规范
- 返回取消结果(Boolean)
- 依赖关系: 依赖于Quick Deploy触发
- 实现建议: 使用Future.cancel()取消异步任务,使用状态机管理取消状态,确保资源正确释放,记录取消日志,提供POST /metadata/quick-deploy/cancel/{jobId}接口
6. Quick Deploy异步执行
- 需求描述: 实现Quick Deploy异步执行,使用Spring的@Async注解和自定义线程池避免阻塞主线程,复用现有的AsyncConfig配置类和线程池
- 优先级: 高
- 验收标准:
- 异步Quick Deploy执行正常工作
- 使用Spring的@Async注解标记异步方法
- 复用自定义线程池(ThreadPoolTaskExecutor)管理异步任务
- 支持并发Quick Deploy(核心线程数5,最大线程数10,队列容量100)
- Quick Deploy任务不阻塞系统响应
- 使用Future对象跟踪异步任务状态
- 使用ConcurrentHashMap缓存异步任务Future对象
- 异步方法:quickDeployAsync(Long jobExecutionId, Long orgConfigId, Long lastJobId)
- 更新作业执行记录状态为Processing
- 调用IMetadataApiService.quickDeploy()方法执行Quick Deploy
- Quick Deploy完成后更新作业执行记录状态为Success或Failed
- 解析Quick Deploy结果并存储到datai_meta_job_execution表
- 复用现有的AsyncConfig配置类和线程池
- 依赖关系: 依赖于Quick Deploy触发
- 实现建议: 使用Spring的@Async注解和自定义线程池(deployExecutor)实现异步执行,复用现有的AsyncConfig配置类和线程池,配置核心线程数、最大线程数、队列容量等参数,使用Future对象跟踪异步任务状态
约束
- 技术栈限制: 必须基于现有的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
- 控制器约束: 必须使用QuickDeployController控制器
- 服务接口约束: 必须实现IQuickDeployService接口
- 服务实现约束: 必须实现QuickDeployServiceImpl实现类
- 异步注解约束: 必须使用Spring的@Async注解标记异步方法
- 线程池约束: 必须复用自定义线程池(ThreadPoolTaskExecutor)管理异步任务
- 线程池配置约束: 核心线程数5,最大线程数10,队列容量100,线程名称前缀deploy-async-,拒绝策略CallerRunsPolicy
- Future对象约束: 必须使用Future对象跟踪异步任务状态
- ConcurrentHashMap约束: 必须使用ConcurrentHashMap缓存异步任务Future对象和Quick Deploy进度信息
- 状态机约束: 必须使用状态机模式管理Quick Deploy状态
- 状态枚举约束: 必须复用DeployStatus枚举(Pending/Processing/Success/Failed/Partial_Success/Cancelled)
- 状态转换约束: 必须支持状态转换验证(Pending -> Processing -> Success/Failed/Partial_Success/Cancelled)
- 定时任务约束: 必须使用Spring的@Scheduled注解实现定时任务
- 轮询间隔约束: 轮询间隔可配置(metadata.deploy.poll-interval,默认5000毫秒)
- 状态更新约束: 必须将状态更新到datai_meta_job_execution表
- 状态变更时间约束: 必须记录状态变更时间
- 分页查询约束: 必须使用Page对象实现分页查询
- 条件查询约束: 必须使用QueryWrapper实现条件查询
- 查询条件约束: 必须支持按组织配置ID、状态、时间范围、创建人查询
- 进度缓存约束: 必须使用ConcurrentHashMap缓存Quick Deploy进度信息
- 进度查询响应时间约束: 进度查询响应时间 < 500ms
- Future.cancel约束: 必须使用Future.cancel()取消异步任务
- 取消状态约束: 必须将状态更新为Cancelled
- 取消验证约束: 必须支持取消验证(只能取消Processing状态的任务)
- 资源释放约束: 必须确保取消后资源正确释放
- 取消日志约束: 必须记录取消日志
- 缓存清理约束: 必须从ConcurrentHashMap中移除Future对象和进度缓存
- JSON解析约束: 必须使用Jackson解析API响应
- 正则表达式约束: 必须使用正则表达式提取错误信息
- 错误信息约束: 必须支持组件类型、文件名、错误消息、行号、列号等错误信息
- 测试结果约束: 必须支持测试结果解析(runTestResult)
- 组件统计约束: 必须支持组件统计信息解析(numberComponentsTotal, numberComponentsDeployed, numberComponentErrors)
- 测试统计约束: 必须支持测试统计信息解析(numberTestsTotal, numberTestsCompleted, numberTestWarnings, numberTestErrors)
- 结果存储约束: 必须将解析结果存储到datai_meta_job_execution表
- 部署详情存储约束: 部署详情必须存储到deployDetails字段
- 错误信息存储约束: 错误信息必须存储到errorMessage字段
- DTO约束: 必须实现QuickDeployTriggerRequest、QuickDeployTriggerResponse、QuickDeployProgressResponse、QuickDeployHistoryResponse、QuickDeployResult等DTO类
- 异常类约束: 必须复用DeployException异常类
- 配置类约束: 必须复用AsyncConfig配置类
- RESTful API约束: 必须符合RESTful规范
- 接口路径约束: 必须使用/metadata/quick-deploy作为基础路径
- 触发接口约束: 必须实现POST /metadata/quick-deploy/trigger接口
- 进度查询接口约束: 必须实现GET /metadata/quick-deploy/progress/{jobId}接口
- 历史查询接口约束: 必须实现GET /metadata/quick-deploy/history接口
- 取消接口约束: 必须实现POST /metadata/quick-deploy/cancel/{jobId}接口
- 响应格式约束: 必须使用R统一响应格式
- 日志记录约束: 必须遵循现有的日志记录规范
- 异常处理约束: 必须遵循现有的异常处理机制
- 事务管理约束: 必须使用@Transactional注解管理事务
- 实体类约束: 必须使用DataiMetaJobExecution实体类
- Mapper约束: 必须使用DataiMetaJobExecutionMapper进行数据库操作
- 部署方法约束: 必须调用IMetadataApiService.quickDeploy()方法执行Quick Deploy
- 作业类型约束: 必须设置jobType为"QUICK_DEPLOY"
- 初始化记录约束: 必须初始化作业执行记录到datai_meta_job_execution表
- 初始状态约束: 必须设置初始状态为Pending
- 创建时间约束: 必须记录创建时间(startTime)
- 创建人约束: 必须记录创建人(createdBy)
- 状态更新方法约束: 必须实现updateJobStatus()方法更新作业状态
- 进度更新方法约束: 必须实现updateJobProgress()方法更新作业进度
- 结果解析方法约束: 必须实现parseQuickDeployResult()方法解析Quick Deploy结果
- 触发方法约束: 必须实现triggerQuickDeploy()方法触发Quick Deploy
- 异步部署方法约束: 必须实现quickDeployAsync()方法执行异步Quick Deploy
- 进度查询方法约束: 必须实现getQuickDeployProgress()方法查询进度
- 历史查询方法约束: 必须实现getQuickDeployHistory()方法查询历史
- 取消部署方法约束: 必须实现cancelQuickDeploy()方法取消Quick Deploy
- Lombok约束: 必须使用Lombok的@Data、@Slf4j等注解简化代码
- Swagger约束: 必须使用Swagger注解(@Schema)标注API文档
- Excel约束: 必须使用@Excel注解标注导出字段
- Jackson约束: 必须使用Jackson的@JsonFormat注解格式化日期时间
- 性能约束: Quick Deploy触发响应时间 < 1s,并发触发10个Quick Deploy任务无性能下降,状态轮询任务执行时间 < 1s,历史记录查询响应时间 < 1s,分页查询100条记录无性能下降
- 安全性约束: Quick Deploy操作需要认证,部署数据传输加密,敏感信息不记录到日志,部署历史记录权限控制
- 兼容性约束: 必须使用现有的集成核心功能进行Salesforce API调用,必须使用现有的认证模块进行OAuth认证,必须遵循现有的异常处理机制,必须遵循现有的日志记录规范
- 复用约束: 必须复用现有的DeployStatus枚举、状态管理逻辑、AsyncConfig配置类、线程池、部署结果解析逻辑
- Quick Deploy验证约束: 必须验证Quick Deploy可用性(检查部署记录是否在30天内、部署状态是否为Success)
- 最近成功记录约束: 必须查询最近一次成功的部署记录(按createTime降序,LIMIT 1)
- 30天限制约束: Quick Deploy仅在最近30天内的成功部署记录上可用
- 无成功记录约束: 如果没有找到成功的部署记录,必须抛出DeployException
- 超过30天约束: 如果部署记录超过30天,必须抛出DeployException
Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
具体规则:
- 必须使用Canvas中定义的类名和方法名
- 必须遵循Canvas中定义的调用关系
- 必须参考Canvas中的流程图逻辑
验收标准
- 功能完整性: 所有Quick Deploy功能能够正常工作
- 性能指标: Quick Deploy操作快速完成,不影响系统响应
- 代码规范性: 代码符合项目编码规范,有清晰的注释
- 可维护性: 代码结构清晰,易于扩展和维护
- 可测试性: 代码易于单元测试和集成测试
风险
- Quick Deploy验证风险: Quick Deploy验证逻辑复杂可能导致验证不准确
- 缓解措施: 仔细验证Quick Deploy的可用性条件,包括部署记录是否在30天内、部署状态是否为Success等
- 监控指标: 监控Quick Deploy验证的成功率和失败原因
- 状态监控风险: 状态监控不准确可能导致Quick Deploy状态不一致
- 缓解措施: 使用状态机模式管理状态转换,确保状态转换的正确性
- 监控指标: 监控状态转换的成功率和异常状态数
- 结果解析风险: 结果解析不完善可能导致错误信息不准确
- 缓解措施: 使用正则表达式提取错误信息,确保错误信息的准确性
- 监控指标: 监控结果解析的成功率和准确性
- 历史记录风险: Quick Deploy历史记录过多可能影响查询性能
- 缓解措施: 使用分页查询,定期清理过期历史记录
- 监控指标: 监控历史记录查询性能
- Quick Deploy可用性风险: Quick Deploy可能在某些情况下不可用
- 缓解措施: 提供清晰的错误信息,告知用户Quick Deploy不可用的原因
- 监控指标: 监控Quick Deploy的可用性和失败原因
- 线程池配置风险: 线程池参数配置不当可能导致资源耗尽或任务积压
- 缓解措施: 复用现有的线程池配置,根据实际负载调整线程池参数
- 监控指标: 监控线程池的活跃线程数、队列大小、拒绝任务数
- ConcurrentHashMap风险: ConcurrentHashMap缓存数据丢失可能导致进度查询失败
- 缓解措施: 使用持久化存储作为备份,定期检查缓存一致性
- 监控指标: 监控缓存的命中率和数据一致性
- 状态机风险: 状态机状态转换逻辑错误可能导致状态异常
- 缓解措施: 复用现有的状态机逻辑,充分测试状态转换逻辑
- 监控指标: 监控状态转换的成功率和异常状态数
- 定时任务风险: 定时任务执行失败可能导致状态更新不及时
- 缓解措施: 复用现有的定时任务逻辑,使用异常处理和重试机制
- 监控指标: 监控定时任务的执行成功率和执行时间
- 轮询间隔风险: 轮询间隔设置不当可能导致API限流或状态更新不及时
- 缓解措施: 复用现有的轮询间隔配置,使用动态轮询间隔
- 监控指标: 监控API调用次数和状态更新延迟
- Future对象管理风险: Future对象管理不当可能导致内存泄漏
- 缓解措施: 定期清理已完成的Future对象,使用弱引用
- 监控指标: 监控Future对象的数量和内存使用情况
- 分页查询风险: 分页查询参数不当可能导致查询性能下降
- 缓解措施: 限制分页大小,使用索引优化查询
- 监控指标: 监控分页查询的响应时间和数据库负载
- 条件查询风险: 条件查询过于复杂可能导致查询性能下降
- 缓解措施: 限制查询条件数量,使用索引优化查询
- 监控指标: 监控条件查询的响应时间和数据库负载
- JSON解析风险: JSON解析失败可能导致结果解析异常
- 缓解措施: 使用异常处理和重试机制,验证JSON格式
- 监控指标: 监控JSON解析的成功率和错误率
- 正则表达式风险: 正则表达式性能不佳可能导致解析缓慢
- 缓解措施: 优化正则表达式,使用预编译正则表达式
- 监控指标: 监控正则表达式的执行时间
- 错误信息提取风险: 错误信息提取不完整可能导致问题排查困难
- 缓解措施: 复用现有的错误信息提取逻辑,充分测试错误信息提取
- 监控指标: 监控错误信息提取的完整性和准确性
- 测试结果解析风险: 测试结果解析错误可能导致测试状态显示错误
- 缓解措施: 复用现有的测试结果解析逻辑,充分测试测试结果解析
- 监控指标: 监控测试结果解析的准确性和错误率
- 组件统计风险: 组件统计信息不准确可能导致进度显示错误
- 缓解措施: 复用现有的组件统计逻辑,充分测试组件统计
- 监控指标: 监控组件统计的准确性和一致性
- 测试统计风险: 测试统计信息不准确可能导致测试状态显示错误
- 缓解措施: 复用现有的测试统计逻辑,充分测试测试统计
- 监控指标: 监控测试统计的准确性和一致性
- 数据库操作风险: 数据库操作失败可能导致数据不一致
- 缓解措施: 复用现有的数据库操作逻辑,使用事务管理
- 监控指标: 监控数据库操作的成功率和错误率
- 事务管理风险: 事务管理不当可能导致数据不一致
- 缓解措施: 复用现有的事务管理逻辑,合理设置事务边界
- 监控指标: 监控事务的成功率和回滚率
- Mapper操作风险: Mapper操作失败可能导致数据库操作失败
- 缓解措施: 复用现有的Mapper操作逻辑,充分测试Mapper操作
- 监控指标: 监控Mapper操作的成功率和错误率
- API调用风险: API调用失败可能导致Quick Deploy失败
- 缓解措施: 复用现有的API调用逻辑,使用异常处理和重试机制
- 监控指标: 监控API调用的成功率和响应时间
- SessionManager风险: SessionManager失效可能导致认证失败
- 缓解措施: 复用现有的SessionManager逻辑,使用自动重新登录机制
- 监控指标: 监控SessionManager的成功率和错误率
- OAuth认证风险: OAuth认证失败可能导致API调用失败
- 缓解措施: 复用现有的OAuth认证逻辑,使用Token刷新机制
- 监控指标: 监控OAuth认证的成功率和错误率
- 30天限制风险: 30天限制可能导致Quick Deploy不可用
- 缓解措施: 提供清晰的错误信息,告知用户Quick Deploy不可用的原因
- 监控指标: 监控Quick Deploy的可用性和失败原因
- 无成功记录风险: 无成功记录可能导致Quick Deploy不可用
- 缓解措施: 提供清晰的错误信息,告知用户需要先进行一次成功部署
- 监控指标: 监控Quick Deploy的可用性和失败原因
- 内存使用风险: 内存使用不当可能导致内存溢出
- 缓解措施: 复用现有的内存管理逻辑,限制内存使用,监控内存使用情况
- 监控指标: 监控内存使用情况和GC频率
- CPU使用风险: CPU使用过高可能导致系统性能下降
- 缓解措施: 复用现有的异步处理逻辑,限制并发数,优化算法
- 监控指标: 监控CPU使用情况和系统负载
- 网络风险: 网络不稳定可能导致API调用失败
- 缓解措施: 复用现有的网络处理逻辑,使用重试机制,使用超时设置
- 监控指标: 监控网络延迟和丢包率
- 并发控制风险: 并发控制不当可能导致数据不一致
- 缓解措施: 复用现有的并发控制逻辑,使用锁机制,使用事务管理
- 监控指标: 监控并发操作的成功率和冲突率
- 日志记录风险: 日志记录不当可能导致问题排查困难
- 缓解措施: 复用现有的日志记录逻辑,使用结构化日志,记录关键信息
- 监控指标: 监控日志的完整性和可读性
- 异常处理风险: 异常处理不当可能导致系统崩溃
- 缓解措施: 复用现有的异常处理逻辑,使用统一的异常处理机制
- 监控指标: 监控异常的发生率和类型分布
- 性能风险: 性能不佳可能导致用户体验差
- 缓解措施: 复用现有的性能优化逻辑,使用缓存,使用异步处理
- 监控指标: 监控响应时间、吞吐量、资源使用情况
- 可扩展性风险: 可扩展性不佳可能导致系统难以扩展
- 缓解措施: 复用现有的可扩展性设计,使用模块化设计,使用接口抽象
- 监控指标: 监控系统的扩展能力和扩展成本
- 可维护性风险: 可维护性不佳可能导致代码难以维护
- 缓解措施: 复用现有的可维护性设计,使用清晰的代码结构,使用注释
- 监控指标: 监控代码的复杂度和可读性
- 可测试性风险: 可测试性不佳可能导致测试困难
- 缓解措施: 复用现有的可测试性设计,使用依赖注入,使用接口抽象
- 监控指标: 监控测试覆盖率和测试成功率
- 安全性风险: 安全性不佳可能导致数据泄露
- 缓解措施: 复用现有的安全性设计,使用认证和授权,使用加密
- 监控指标: 监控安全事件和漏洞扫描结果
- 兼容性风险: 兼容性不佳可能导致系统无法运行
- 缓解措施: 复用现有的兼容性设计,使用版本控制,使用兼容性测试
- 监控指标: 监控兼容性问题和降级触发频率
- 可靠性风险: 可靠性不佳可能导致系统不稳定
- 缓解措施: 复用现有的可靠性设计,使用冗余设计,使用故障恢复
- 监控指标: 监控系统的可用性和故障恢复时间
- 可观测性风险: 可观测性不佳可能导致问题排查困难
- 缓解措施: 复用现有的可观测性设计,使用日志,使用监控,使用追踪
- 监控指标: 监控日志的完整性,监控的覆盖率,追踪的成功率
- 复用逻辑风险: 复用逻辑不当可能导致Quick Deploy功能异常
- 缓解措施: 充分测试复用逻辑,确保复用逻辑的正确性
- 监控指标: 监控复用逻辑的成功率和错误率
- 依赖风险: 依赖REQ-010-1, REQ-010-2, REQ-010-8可能导致依赖问题
- 缓解措施: 确保依赖的需求已经完成,避免依赖问题
- 监控指标: 监控依赖的可用性和兼容性
需求变更记录
| 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 |
|---|---|---|---|---|---|
| 2026-01-17 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 |
| 2026-01-26 | 优化需求文档 | 基于当前项目实际情况,优化需求文档,包括:1. 明确了使用DataiMetaJobExecution实体类存储Quick Deploy信息;2. 明确了使用IMetadataApiService.quickDeploy()方法执行Quick Deploy;3. 明确了使用QuickDeployController控制器;4. 明确了使用IQuickDeployService接口和QuickDeployServiceImpl实现类;5. 明确了使用Spring的@Async注解和自定义线程池;6. 明确了复用DeployStatus枚举和状态管理逻辑;7. 明确了使用定时任务轮询Quick Deploy状态;8. 明确了使用ConcurrentHashMap缓存Quick Deploy进度信息;9. 明确了使用Future.cancel()取消异步任务;10. 明确了使用Jackson解析API响应;11. 明确了使用正则表达式提取错误信息;12. 明确了使用MyBatis Plus的BaseMapper实现查询;13. 明确了使用Page对象实现分页查询;14. 明确了使用QueryWrapper实现条件查询;15. 明确了使用R统一响应格式;16. 明确了使用@Transactional注解管理事务;17. 明确了使用Lombok的@Data、@Slf4j等注解;18. 明确了使用Swagger注解标注API文档;19. 明确了使用@Excel注解标注导出字段;20. 明确了使用Jackson的@JsonFormat注解格式化日期时间;21. 明确了复用AsyncConfig配置类和线程池;22. 明确了复用DeployException异常类;23. 明确了设置jobType为"QUICK_DEPLOY";24. 明确了验证Quick Deploy可用性(30天限制、Success状态);25. 明确了查询最近一次成功的部署记录;26. 明确了支持Quick Deploy取消功能;27. 明确了支持Quick Deploy异步执行;28. 增加了详细的约束条件;29. 增加了详细的风险评估和缓解措施 | 根据架构决策文档和提示词文档优化需求文档,确保需求与实际实现一致 | 系统管理员 | - |
相关人员
- 需求提出人: 系统管理员 - 联系方式
- 需求负责人: 系统管理员 - 联系方式
- 技术负责人: 开发工程师 - 联系方式
- 测试负责人: 测试工程师 - 联系方式
- 其他相关人员: - 联系方式
评审信息
- 评审日期: -
- 评审人员: -
- 评审结果: -
- 评审意见: -
- 修改建议: -