feat(project): 添加项目完成前置校验功能
- 新增 PROJECT_COMPLETE_PRECONDITION_NOT_MET 错误码用于项目完成校验失败提示 - 将任务附件错误码段从 1_008_007 调整至 1_008_010 避免编号冲突 - 添加 PROJECT_ACTION_COMPLETE 常量用于项目完成操作标识 - 在执行完成时触发 onExecutionCompleted 钩子方法用于后续推送逻辑 - 新增 countNonTerminalByProjectId 方法统计项目下非终态执行/需求/任务数量 - 实现 collectCompletionGaps 和 validateProjectCompletable 方法进行项目完成前置校验 - 在项目状态变更时增加对 complete 操作的特殊校验逻辑 - 添加 ProjectRequirementConstants 接口暴露需求对象类型常量供跨类使用 - 新建 SQL 脚本为项目完成校验查询创建必要的数据库索引 - 补充 ProjectServiceImplTest 测试用例验证项目完成校验功能
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
-- TD-015 项目完成校验:按 project_id 数非终态子对象需要的索引
|
||||
-- MySQL 无 CREATE INDEX IF NOT EXISTS,用 information_schema 守卫实现幂等(可重复执行);与演示库补丁 docs/sql/patches/2026-06-05-TD015-完成校验-01.sql 写法一致
|
||||
|
||||
-- 需求表:原 idx_rdms_project_requirement_project_status_deleted 实际列为 (status_code, deleted),缺 project_id 前导,补齐
|
||||
SET @idx := (SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'rdms_project_requirement'
|
||||
AND INDEX_NAME = 'idx_rdms_project_requirement_proj_status');
|
||||
SET @sql := IF(@idx = 0,
|
||||
'CREATE INDEX idx_rdms_project_requirement_proj_status ON rdms_project_requirement (project_id, status_code, deleted)',
|
||||
'SELECT 1');
|
||||
PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
|
||||
|
||||
-- 任务表(rdms_task):与执行表 idx_rdms_pe_proj_status 对齐,让按项目数非终态任务走覆盖前缀
|
||||
SET @idx := (SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'rdms_task'
|
||||
AND INDEX_NAME = 'idx_rdms_task_proj_status');
|
||||
SET @sql := IF(@idx = 0,
|
||||
'CREATE INDEX idx_rdms_task_proj_status ON rdms_task (project_id, status_code, deleted)',
|
||||
'SELECT 1');
|
||||
PREPARE s FROM @sql; EXECUTE s; DEALLOCATE PREPARE s;
|
||||
|
||||
-- 执行表 rdms_project_execution 已有 idx_rdms_pe_proj_status(project_id, status_code, deleted),无需新增
|
||||
Reference in New Issue
Block a user