tasks.md 2.6 KB

任务拆分 — 字典数据键值唯一性校验

前置条件

  • 已读取根规范、项目记忆、编码规范和自动化测试标准。
  • 已核对字典新增/修改链路和数据库现有唯一索引。
  • 已确认当前工作树仅有用户已有的 .DS_Store 变更,本任务不覆盖或暂存这些文件。

Task 1:字典键值唯一性校验

  • 目标:同一租户、同一 dictType 下禁止保存重复的有效 dictValue,修改时排除自身。
  • 涉及文件
    • forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/test/java/com/mdframe/forge/plugin/system/service/impl/SysDictDataServiceImplTest.java — 新增,覆盖重复拒绝和正常写入。
    • forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/java/com/mdframe/forge/plugin/system/mapper/SysDictDataMapper.java — 新增重复计数签名。
    • forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/resources/mapper/SysDictDataMapper.xml — 新增,查询有效字典项并支持排除当前编码。
    • forge-server/forge-framework/forge-plugin-parent/forge-plugin-system/src/main/java/com/mdframe/forge/plugin/system/service/impl/SysDictDataServiceImpl.java — 新增统一业务校验并接入新增/修改。
  • 关键签名
  int countByDictTypeAndValue(String dictType, String dictValue, Long excludeDictCode);
  • Step 1:先新增 Service 单元测试并运行,确认因缺少校验而 Red。
  • Step 2:新增 Mapper 接口与 XML 查询,显式包含 del_flag = 0 和可选 dict_code <> #{excludeDictCode}
  • Step 3:在新增、修改写入前调用统一校验,重复时抛出 BusinessException
  • Step 4:运行定向测试,确认新增重复、修改重复、排除自身和正常写入全部 Green。

Task 2:增量验证与文档回填

  • 目标:按测试标准形成可复跑证据并关闭本轮变更。
  • 涉及文件
    • code-copilot/changes/dict-data-value-uniqueness-validation/spec.md
    • code-copilot/changes/dict-data-value-uniqueness-validation/tasks.md
    • code-copilot/changes/dict-data-value-uniqueness-validation/test-spec.md
    • code-copilot/changes/dict-data-value-uniqueness-validation/execution-log.md
  • Step 1:执行目标单测、插件编译和 Mapper XML 静态检查。
  • Step 2:执行 git diff --check 并检查本轮差异范围。
  • Step 3:记录命令、结果、警告、跳过项和服务清理情况。
  • Step 4:回填 Spec/Task 状态,仅提交本任务文件,不暂存或推送用户已有工作树变更。