adspecs 0.1.19 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/.adspecs/feature.json +16 -16
  2. package/.adspecs/feature.yml +28 -28
  3. package/.adspecs/paths.json +17 -17
  4. package/.adspecs/templates/04-/345/211/215/347/253/257/345/212/237/350/203/275/350/256/276/350/256/241/346/250/241/346/235/277.md +1 -1
  5. package/.adspecs/templates/05-/345/220/216/347/253/257/344/273/273/345/212/241/346/270/205/345/215/225/346/250/241/346/235/277.md +613 -724
  6. package/.adspecs/templates/05b-/345/211/215/347/253/257/344/273/273/345/212/241/346/270/205/345/215/225/346/250/241/346/235/277.md +51 -51
  7. package/.claude-plugin/marketplace.json +23 -23
  8. package/.claude-plugin/plugin.json +18 -18
  9. package/.qoder-plugin/plugin.json +31 -31
  10. package/CLAUDE.md +1 -5
  11. package/INSTALL.md +3 -3
  12. package/README.md +395 -395
  13. package/bin/adspecs.js +129 -129
  14. package/hooks/commit-queue.js +245 -245
  15. package/hooks/hooks.json +63 -63
  16. package/hooks/session-start.js +44 -44
  17. package/hooks/wiki-queue.js +127 -127
  18. package/package.json +61 -61
  19. package/references/ant6-front-standard/index.md +99 -99
  20. package/references/antd-front-demo/public/mockServiceWorker.js +361 -361
  21. package/references/ecp-end-standard/index.md +63 -63
  22. package/references/python-end-standard/01-Python/345/220/216/347/253/257/347/274/226/347/240/201/350/247/204/350/214/203.md +372 -372
  23. package/references/python-end-standard/02-/346/225/260/346/215/256/345/272/223/350/256/276/350/256/241/344/270/216/344/275/277/347/224/250/350/247/204/350/214/203.md +226 -226
  24. package/references/python-end-standard/03-Celery/345/274/202/346/255/245/344/273/273/345/212/241/350/247/204/350/214/203.md +237 -237
  25. package/references/python-end-standard/04-Redis/344/275/277/347/224/250/350/247/204/350/214/203.md +231 -231
  26. package/scripts/postinstall.js +107 -107
  27. package/scripts/sync-version.js +105 -105
  28. package/skills/.claude/.wiki-update-queue +26 -26
  29. package/skills/adspecs-constitution/SKILL.md +157 -0
  30. package/skills/adspecs-export-word/SKILL.md +498 -498
  31. package/skills/adspecs-export-word/references/md-to-docx.js +862 -862
  32. package/skills/adspecs-export-word/references/package-lock.json +220 -220
  33. package/skills/adspecs-export-word/references/package.json +10 -10
  34. package/skills/adspecs-front-prototype/SKILL.md +405 -405
  35. package/skills/adspecs-front-spec/SKILL.md +4 -4
  36. package/skills/adspecs-front-tasks/SKILL.md +213 -173
  37. package/skills/adspecs-plan/SKILL.md +59 -69
  38. package/skills/adspecs-prd/SKILL.md +13 -5
  39. package/skills/adspecs-prd-to-demo/SKILL.md +532 -0
  40. package/skills/adspecs-tasks/SKILL.md +175 -204
  41. package/skills/adspecs-update-status/SKILL.md +382 -382
  42. package/skills/adspecs-utest/SKILL.md +107 -116
  43. package/skills/grill-me/SKILL.md +7 -0
  44. package/skills/grill-me/agents/openai.yaml +5 -0
  45. package/skills/playwright-cli/SKILL.md +420 -0
  46. package/skills/playwright-cli/references/element-attributes.md +23 -0
  47. package/skills/playwright-cli/references/playwright-tests.md +39 -0
  48. package/skills/playwright-cli/references/request-mocking.md +87 -0
  49. package/skills/playwright-cli/references/running-code.md +241 -0
  50. package/skills/playwright-cli/references/session-management.md +225 -0
  51. package/skills/playwright-cli/references/storage-state.md +275 -0
  52. package/skills/playwright-cli/references/test-generation.md +433 -0
  53. package/skills/playwright-cli/references/tracing.md +139 -0
  54. package/skills/playwright-cli/references/video-recording.md +143 -0
  55. package/skills/playwright-trace/SKILL.md +171 -0
  56. package/skills/project-init/SKILL.md +93 -22
  57. package/skills/project-init/references/front-demo/.claude/settings.local.json +9 -0
  58. package/skills/wiki-update/SKILL.md +232 -232
  59. package/src/commands/doctor.js +197 -197
  60. package/src/commands/init.js +83 -83
  61. package/src/commands/plugin.js +165 -165
  62. package/src/commands/update.js +87 -87
  63. package/src/lib/area-scanner.js +129 -129
  64. package/src/lib/copier.js +104 -104
  65. package/src/lib/dir-utils.js +161 -133
  66. package/src/lib/json-merge.js +114 -114
  67. package/src/lib/paths-defaults.js +37 -37
  68. package/src/lib/prompts.js +428 -347
  69. package/src/lib/readme-gen.js +143 -143
  70. package/src/lib/report.js +338 -327
  71. package/src/lib/scaffolder.js +551 -518
  72. package/src/lib/short-name.js +36 -36
  73. package/src/utils.js +80 -80
  74. package/references/antd-front-demo/.env +0 -15
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: "adspecs-tasks"
3
- description: "基于统一系统设计文档(_system-design.md),为 ECP 平台功能生成 TDD 就绪的、按依赖排序的 tasks.md 文件"
3
+ description: "基于统一系统设计文档(_system-design.md),为项目功能生成 TDD 就绪的、按依赖排序的 tasks.md 文件"
4
4
  argument-hint: "指定系统设计文档路径,如 docs/30-system-design/crm/M06-01-销售预测_system-design.md"
5
- compatibility: "需要 adspecs 项目结构,含 adspecs/ 目录 + CLAUDE.md(ECP 编码规范)+ docs/30-system-design + .adspecs/templates"
5
+ compatibility: "需要 adspecs 项目结构,含 adspecs/ 目录 + CLAUDE.md + docs/30-system-design + .adspecs/templates + docs/40-project_conventions/end-integration/index.md"
6
6
  metadata:
7
7
  author: "qingwen"
8
- source: "基于 adspecs-tasks 通用模板 + ECP 平台编码规范 + TDD 流程改造"
8
+ source: "基于 adspecs-tasks 通用模板 + 项目后端编码规范 + TDD 流程改造"
9
9
  user-invocable: true
10
10
  disable-model-invocation: false
11
11
  ---
@@ -74,45 +74,61 @@ $ARGUMENTS
74
74
 
75
75
  ---
76
76
 
77
- ## ECP 平台编码规范(任务生成强制校验清单)
77
+ ## 后端编码规范(任务生成强制校验清单)
78
78
 
79
- > **来源**:CLAUDE.md §"Code Generation Rules (ECP Backend)"。
80
- > **以下10条规则在生成每个任务时必须满足,违反任何一条即为不合格任务。**
79
+ > **来源**:`docs/40-project_conventions/end-integration/index.md` 及其引用的全部规范文件。
80
+ > **所有规则在生成每个任务时必须满足,违反任何一条即为不合格任务。**
81
+ > **具体规则内容以运行时加载的规范为准,本节不再硬编码特定平台的类名/注解/字段名。**
81
82
 
82
- | # | 规则 | 说明 |
83
- | --- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
84
- | 1 | **Entity 规范** | `extends BaseEntity<Entity>`, `@TableName` 用反引号, 所有字段 `@TableField` + `@Schema`, `IdType.ASSIGN_ID`。审计字段继承自 BaseEntity,Entity 中禁止重复声明 |
85
- | 2 | **DTO 规范** | `extends ReqeustCommonDataBean`(注意平台拼写),校验分组为内部接口(`saveXxx`/`updateXxx`),日期字段 `@JSONField(format = "yyyy-MM-dd HH:mm:ss")`,消息格式 `{port}_{table_snake}_{三位序号}` |
86
- | 3 | **DAO 规范** | `extends BaseCommonDAO_HI<Entity>`, `@Component("{camel}DAO")`,**MyBatis XML 与 DAO 接口同包路径**,所有 SELECT 必须含 `WHERE delete_flag = 0`,resultMap 映射所有字段含审计字段 |
87
- | 4 | **禁止 QueryWrapper/LambdaQueryWrapper** | 所有 DB 操作通过 MyBatis XML 实现,绝对禁止使用 MyBatis Plus 条件构造器 |
88
- | 5 | **Service 规范** | 接口 `II{Entity}`(双I前缀)`extends IBaseCommon<Entity>`,实现 `extends BaseCommonServer<Entity>`, `@Component("{camel}Service")`。Save 用 **FastJSON**:`JSONObject.parseObject(JSONObject.toJSONString(dto), Entity.class)`。Update 用 **Spring BeanUtils**:`BeanUtils.copyProperties(dto, entity, "createdBy", "creationDate", "versionNum")`。软删除:`this.deleteById(id, true)`。分页默认排序 `creation_date desc` |
89
- | 6 | **Controller 规范** | `extends CommonAbstractService`,重写 `getBaseCommonServer()`,所有端点 `@CheckToken`。标准路径:`/get-id`, `/find-pagination`, `/save`, `/update`, `/delete`。请求包装 `RequestData<Dto>` / `PaginationRequestData<Dto>`,响应包装 `ResponseData<T>` |
90
- | 7 | **Ro(只读视图)规范** | `implements Serializable` + `serialVersionUID`,手动声明所有字段(不继承 BaseEntity),置于 `model/entity/readonly/`。日期字段标注 `@DateTimeFormat @JsonFormat` |
91
- | 8 | **异常处理** | **异常在 Service 层抛出**(`RecordNotExistsException`、`GushenRuntimeException`),Controller 仅做参数空校验返回 `ResponseData.fail()`。所有消息引用 `ResponseMsgCode` 枚举,**禁止硬编码字符串** |
92
- | 9 | **i18n 规范** | 每个模块 7 个 `.properties` 文件(default/zh_CN/zh_TW/en_US/vi_VN/th_TH/hu_HU),位于 `src/main/resources/config/`,**每个语言文件必须包含该语言的实际翻译内容** |
93
- | 10 | **注入与工具** | `@Autowired` 注入(Spring),FastJSON 序列化,Hutool 工具类优先(`StrUtil`, `CollUtil`, `BeanUtil`, `ObjectUtil`),SLF4J 日志 |
83
+ ### 规范加载
94
84
 
95
- ### ECP 三模块结构速查
85
+ 在执行大纲 §1"定位统一系统设计文档"时,必须同时加载后端编码规范:
86
+
87
+ 1. 读取 `docs/40-project_conventions/end-integration/index.md`
88
+ 2. 按 `index.md` 中"推荐读取顺序"依次加载所有关联规范文件
89
+ 3. 后续所有任务描述中的基类、注解、命名、响应包装、异常处理、DB 迁移格式等,均以该规范为准
90
+ 4. 如该目录不存在或 `index.md` 缺失,中止执行并提示先运行 `/project-init` 选择技术栈
91
+
92
+ ### 通用校验维度(所有后端规范均须覆盖)
93
+
94
+ | # | 校验维度 | 说明 |
95
+ | -- | -------------- | -------------------------------------------------------------------------------------- |
96
+ | 1 | Entity 规范 | 基类继承、表名注解、主键策略、审计字段继承(按后端规范) |
97
+ | 2 | DTO 规范 | 基类继承、校验分组、日期格式注解、消息码格式(按后端规范) |
98
+ | 3 | DAO 规范 | 基类继承、ORM 映射文件、软删除过滤(按后端规范) |
99
+ | 4 | 数据访问约束 | 禁止使用规范外的数据访问方式(按后端规范) |
100
+ | 5 | Service 规范 | 接口/实现命名、对象转换策略、软删除、分页排序(按后端规范) |
101
+ | 6 | Controller 规范 | 基类继承、认证注解、标准端点路径、请求/响应包装(按后端规范) |
102
+ | 7 | Ro(只读视图) | 序列化接口、字段手动声明、日期注解(按后端规范) |
103
+ | 8 | 异常处理 | 异常在 Service 层抛出、消息码枚举、禁止硬编码字符串(按后端规范) |
104
+ | 9 | i18n 规范 | 语言文件数量、命名、内容要求(按后端规范) |
105
+ | 10 | 注入与工具 | DI 方式、序列化工具、工具类选型、日志框架(按后端规范) |
106
+
107
+ ### 工程结构速查
108
+
109
+ > 具体工程结构以 `end-integration/index.md` 中描述为准。以下为通用分层参考。
96
110
 
97
111
  ```
98
- {port}-{service}-api/ # 契约层:Feign Client + DTO
99
- {port}-{service}-model/ # 数据层:Entity + DAO + Mapper XML + Ro
100
- {port}-{service}-application/ # 实现层:Service + Controller + Config + Consumer + Enum + i18n
112
+ {模块}-api/ # 契约层:远程接口 + DTO(按后端规范)
113
+ {模块}-model/ # 数据层:Entity + DAO + ORM 映射 + Ro(按后端规范)
114
+ {模块}-application/ # 实现层:Service + Controller + Config + Consumer + Enum + i18n(按后端规范)
101
115
  ```
102
116
 
103
- ### ECP 平台关键依赖速查
117
+ ### 平台基础设施速查
104
118
 
105
- | 平台能力 | 使用方式 | 适用场景 |
106
- | -------- | ------------------------------------------------------------------------------------ | -------------------------- |
107
- | Redis | `DawnRedis`,键格式 `{port}:{business}:{identifier}`,通过 `ICacheKey` 枚举管理 | 配置缓存、详情缓存 |
108
- | ES | `Es.chainLambdaQuery(Class)` / `Es.chainLambdaUpdate(Class)` | 列表搜索(本期可能不涉及) |
109
- | 分布式锁 | `@Klock(keys = {"#dto.field"}, waitTime=60, leaseTime=60)`,**禁止空 keys** | 变更单并发控制等 |
110
- | 文件中心 | `IotBaseAttachmentClient`,业务类型命名 `{module}_{entity}_{type}` | 附件上传(本期可能不涉及) |
111
- | BPM/审批 | `BpmHelper.startProcess(processDefKey, businessId)`,Consumer 为 `@Configuration` 类 | 变更单审批流程 |
112
- | IdToName | `@IdToName(alias="nameField", type=IdToNameType.USER)` + `@EnableIdToName` | 提报人/审批人名称回填 |
113
- | 自动编码 | `AutoCodeRuleService.generate(prefix, length)` | 预测单号/变更单号生成 |
114
- | 加密 | `EncryUtil.encrypt(plainText)` / `decrypt(cipherText)` | 敏感字段(本期可能不涉及) |
115
- | 配置 | `ServerConfigConmonUtil.get(key, tenantId, redisTemplate, defaultValue)` | 提报提前期/强制转FO天数 |
119
+ > 具体组件名称和使用方式以 `end-integration/index.md` 中描述为准。以下为通用能力参考。
120
+
121
+ | 能力 | 用途 |
122
+ | -------- | -------------------------- |
123
+ | 缓存 | 配置缓存、详情缓存 |
124
+ | 全文检索 | 列表搜索(按需) |
125
+ | 分布式锁 | 并发控制 |
126
+ | 文件中心 | 附件上传(按需) |
127
+ | 审批流 | 业务流程审批(按需) |
128
+ | ID 翻译 | 名称回填(按需) |
129
+ | 自动编码 | 业务单号生成(按需) |
130
+ | 加密 | 敏感字段(按需) |
131
+ | 配置中心 | 业务参数配置(按需) |
116
132
 
117
133
  ---
118
134
 
@@ -126,11 +142,17 @@ $ARGUMENTS
126
142
  - 若仍找不到,搜索当前打开文件或上下文中引用的设计文档
127
143
  - 确认文件存在且可读取
128
144
 
129
- 2. **加载 CLAUDE.md**:读取项目根目录下的 `CLAUDE.md`,获取完整的平台编码规范和代码生成规则
145
+ 2. **加载 CLAUDE.md**:读取项目根目录下的 `CLAUDE.md`,获取项目背景和模块结构
130
146
 
131
147
  3. **定位模板文件**(如果存在):
132
148
  - 检查 `.adspecs/templates/05-后端任务清单模板.md` 下的相关模板
133
149
 
150
+ 4. **加载后端编码规范**(必选):
151
+ - 读取 `docs/40-project_conventions/end-integration/index.md`
152
+ - 按 `index.md` 中"推荐读取顺序"依次加载所有关联规范文件
153
+ - 后续所有任务描述中的基类、注解、命名、响应包装、异常处理、DB 迁移格式等,均以该规范为准
154
+ - 如该目录不存在或 `index.md` 缺失,中止执行并提示先运行 `/project-init` 选择技术栈
155
+
134
156
  ### 2. 提取设计文档信息
135
157
 
136
158
  > 统一设计文档(由 `adspecs-plan` 产出)包含 13 个章节,一次性覆盖 OOA+OOD。按以下顺序提取所有任务生成所需信息。
@@ -144,7 +166,7 @@ $ARGUMENTS
144
166
  | 功能条目映射 | §1.1.3 功能条目映射表 | 生成 Controller 端点任务 |
145
167
  | 权限映射 | §1.1.4 权限映射表 | 生成权限配置任务 |
146
168
  | 模块名称/端口 | §1.2 模块定位 | 生成三模块路径 + 消息码前缀 |
147
- | 上下游依赖 | §1.3 上下文边界 | 生成 Feign Client 任务 |
169
+ | 上下游依赖 | §1.3 上下文边界 | 生成远程调用客户端任务 |
148
170
  | 核心职责 | §1.4 核心职责 | 验证任务覆盖完整性 |
149
171
 
150
172
  #### 2.2 从 §2 提取:实体与领域对象
@@ -159,8 +181,8 @@ $ARGUMENTS
159
181
 
160
182
  | 提取项 | 来源 | 用途 |
161
183
  | ------------ | ------------------------------------- | ----------------------- |
162
- | 数据库表结构 | §3.2 数据库表设计 → 表名+字段+索引 | 生成 Liquibase DDL 任务 |
163
- | MyBatis 映射 | §3.3 MyBatis 映射 → DAO 接口+XML 结构 | 生成 DAO + XML 任务 |
184
+ | 数据库表结构 | §3.2 数据库表设计 → 表名+字段+索引 | 生成 DB 迁移 DDL 任务 |
185
+ | ORM 映射 | §3.3 ORM 映射 → DAO 接口+映射文件结构 | 生成 DAO + 映射文件任务 |
164
186
 
165
187
  #### 2.4 从 §4 提取:业务行为与 Service
166
188
 
@@ -170,7 +192,7 @@ $ARGUMENTS
170
192
  | 状态机 | §4.3 状态机图 → 状态+转换条件 | 确保状态流转任务覆盖 |
171
193
  | Service 接口 | §4.4 Service 接口设计 → 方法签名+事务 | 生成 Service 接口+实现任务 |
172
194
  | 关键方法逻辑 | §4.5 Service 实现逻辑 → 伪代码 | 确保实现任务描述精确 |
173
- | 事务边界 | §4.6 事务边界汇总 | 确保 `@Transactional` 标记准确 |
195
+ | 事务边界 | §4.6 事务边界汇总 | 确保事务注解标记准确 |
174
196
 
175
197
  #### 2.5 从 §5 提取:接口与 Controller
176
198
 
@@ -198,11 +220,11 @@ $ARGUMENTS
198
220
 
199
221
  | 提取项 | 来源 | 用途 |
200
222
  | ------------ | ----------------------------------- | --------------------------- |
201
- | 缓存策略 | §8.1 缓存策略 → 键格式+过期时间 | 生成缓存配置任务 |
202
- | 并发控制 | §8.3 并发控制 → 乐观锁/@Klock | 生成并发控制任务 |
203
- | 领域事件 | §9 领域事件 → 发布/消费事件 | 生成 Kafka Consumer 任务 |
204
- | 跨模块依赖 | §10 跨模块依赖 → Feign Client + SDK | 生成 Feign Client 任务 |
205
- | 非功能性需求 | §11 非功能性需求 | 生成收尾阶段的性能/安全任务 |
223
+ | 缓存策略 | §8.1 缓存策略 → 键格式+过期时间 | 生成缓存配置任务 |
224
+ | 并发控制 | §8.3 并发控制 → 乐观锁/分布式锁 | 生成并发控制任务 |
225
+ | 领域事件 | §9 领域事件 → 发布/消费事件 | 生成消息消费者任务 |
226
+ | 跨模块依赖 | §10 跨模块依赖 → 远程调用客户端 + SDK | 生成远程调用客户端任务 |
227
+ | 非功能性需求 | §11 非功能性需求 | 生成收尾阶段的性能/安全任务 |
206
228
 
207
229
  #### 2.9 从 §13 提取:代码结构
208
230
 
@@ -215,17 +237,15 @@ $ARGUMENTS
215
237
 
216
238
  按以下顺序生成任务:
217
239
 
218
- 1. **从 §13 提取三模块目录结构**:
219
- - 确定 `{port}`(如 `3103`)、`{service}`(如 `sales-forecast`)
220
- - 确定包根路径(如 `com.sie.gushen.salesforecast`)
221
- - 列出所有 ~45 个目标文件路径
240
+ 1. **从 §13 提取工程目录结构**:
241
+ - 确定模块标识、服务名、包根路径(按后端规范)
242
+ - 列出所有目标文件路径
222
243
 
223
244
  2. **从 §1.1.1 提取用户故事并按优先级分组**:
224
- - P1 故事:US-01~US-05, US-09(预测单创建/提交/评审/排产/转FO/变更/撤回)→ 核心流程
225
- - P2 故事:US-06~US-08, US-10(概览/释放/取消删除/配置)→ 辅助功能
245
+ - 按 PRD 中定义的优先级分组(P1 P2)
226
246
  - 确认故事间依赖关系
227
247
 
228
- 3. **按 ECP 三模块 + TDD 顺序组织任务**(详见 §任务生成规则)
248
+ 3. **按后端规范工程结构 + TDD 顺序组织任务**(详见 §任务生成规则)
229
249
 
230
250
  4. **生成依赖关系图**
231
251
 
@@ -235,7 +255,7 @@ $ARGUMENTS
235
255
  - 所有实体/DTO/Ro/DAO/Service/Controller 都有对应任务
236
256
  - 所有枚举都有独立任务
237
257
  - 所有消息码都有 i18n 任务
238
- - 所有 Feign Client 依赖都有任务
258
+ - 所有远程调用客户端依赖都有任务
239
259
  - 所有消费者/定时任务都有任务
240
260
 
241
261
  ### 4. 生成 tasks.md
@@ -243,10 +263,10 @@ $ARGUMENTS
243
263
  使用 `.adspecs/templates/05-后端任务清单模板.md` 下的任务模板作为结构参考(若不存在则按本节结构生成)。必须包含以下全部章节:
244
264
 
245
265
  1. **功能名称 + 元数据**(来源设计文档 §1.2)
246
- 2. **文件路径速查表**(所有目标文件的绝对路径清单,按三模块组织)
247
- 3. **ECP 合规检查清单**(10 条规则,标记每条是否满足)
248
- 4. **Phase 1**:项目初始化(Maven POM、启动类、application.yml、三模块目录)
249
- 5. **Phase 2**:基础设施(枚举类 ×N、消息码常量、Liquibase DDL、MyBatis Plus 配置)
266
+ 2. **文件路径速查表**(所有目标文件的绝对路径清单,按工程结构组织)
267
+ 3. **后端规范合规检查清单**(10 个维度,标记每条是否满足)
268
+ 4. **Phase 1**:项目初始化(工程配置、启动类、基础配置、工程目录)
269
+ 5. **Phase 2**:基础设施(枚举类 ×N、消息码常量、DB 迁移 DDL、ORM 配置)
250
270
  6. **Phase 3+**:每个用户故事一个阶段(P1→P2 顺序),阶段内按 TDD 顺序排列
251
271
  7. **Final Phase**:集成与收尾(集成测试、代码评审、API 文档、安全清单、性能验证)
252
272
  8. **依赖关系图**(故事完成顺序 + 并行机会)
@@ -301,8 +321,8 @@ $ARGUMENTS
301
321
  - **设计文档来源**:使用的 `_system-design.md` 路径
302
322
  - **任务总数**:含各阶段分布
303
323
  - **每个用户故事的任务数量**:含 TDD 测试任务/实现任务分别计数
304
- - **文件覆盖**:Entity ×N, DTO ×N, Ro ×N, DAO ×N, Service ×N, Controller ×N, Feign ×N, Enum ×N, i18n ×7, Consumer ×N, Config ×N
305
- - **ECP 合规检查结果**:10 条规则逐条确认通过
324
+ - **文件覆盖**:Entity ×N, DTO ×N, Ro ×N, DAO ×N, Service ×N, Controller ×N, 远程客户端 ×N, Enum ×N, i18n ×N, Consumer ×N, Config ×N
325
+ - **后端规范合规检查结果**:10 个维度逐条确认通过
306
326
  - **TDD 就绪确认**:是否每个故事阶段内测试任务均在实现任务之前
307
327
  - **识别到的并行执行机会**:标注可并行的任务数
308
328
  - **每个故事的独立测试标准**:从设计文档 §12 提取
@@ -317,8 +337,8 @@ $ARGUMENTS
317
337
 
318
338
  1. **任务必须按用户故事组织**:每个故事独立可测试,支持独立实现
319
339
  2. **TDD 严格排序**:每个故事阶段内,测试任务必须在实现任务之前
320
- 3. **ECP 编码规范强制遵守**:每个任务描述必须包含正确的 ECP 父类/注解/命名
321
- 4. **文件路径精确**:每个任务必须包含从三模块根目录开始的完整文件路径
340
+ 3. **后端编码规范强制遵守**:每个任务描述必须包含正确的基类/注解/命名(按 `end-integration/index.md` 规范)
341
+ 4. **文件路径精确**:每个任务必须包含从工程模块根目录开始的完整文件路径
322
342
  5. **设计文档全量覆盖**:§1~§13 的所有设计元素都必须映射到对应任务
323
343
 
324
344
  ### 检查清单格式(必需)
@@ -341,20 +361,20 @@ $ARGUMENTS
341
361
  - Phase 2(基础设施):无故事标签
342
362
  - Phase 3+(用户故事):**必须**有故事标签
343
363
  - Final Phase(集成收尾):无故事标签
344
- 6. **描述**:明确操作 + 精确的文件路径(从 `{port}-{service}-{layer}/` 开始)
364
+ 6. **描述**:明确操作 + 精确的文件路径(从工程模块根目录开始)+ 按后端规范标注基类/注解/命名
345
365
 
346
- **正确示例(ECP 风格)**:
366
+ **正确示例**(以通用 Java/Spring 风格示意,实际以 `end-integration/index.md` 规范为准):
347
367
 
348
368
  ```text
349
- - [ ] T012 [TDD] [US1] 编写 ForecastOrderService 提交预测单测试
350
- 文件: 3103-sales-forecast-application/src/test/java/com/sie/gushen/salesforecast/model/service/impl/ForecastOrderServiceTest.java
351
- - [ ] T013 [US1] 创建 ForecastOrderEntity(extends BaseEntity<ForecastOrderEntity>, @TableName(`forecast_order`), 雪花ID主键)
352
- 文件: 3103-sales-forecast-model/src/main/java/com/sie/gushen/salesforecast/model/entity/ForecastOrderEntity.java
353
- - [ ] T014 [P] [US1] 创建 ForecastOrderDto(extends ReqeustCommonDataBean, 含 saveForecastOrder/updateForecastOrder 校验分组)
354
- 文件: 3103-sales-forecast-api/src/main/java/com/sie/gushen/salesforecast/api/dto/ForecastOrderDto.java
355
- - [ ] T015 [P] [US1] 创建 ForecastOrderDAO 接口 + ForecastOrderDAO.xml(extends BaseCommonDAO_HI, Base_Column_List, BaseResultMap, WHERE delete_flag=0)
356
- 文件: 3103-sales-forecast-model/src/main/java/com/sie/gushen/salesforecast/model/dao/ForecastOrderDAO.java
357
- 文件: 3103-sales-forecast-model/src/main/java/com/sie/gushen/salesforecast/model/dao/ForecastOrderDAO.xml
369
+ - [ ] T012 [TDD] [US1] 编写 {Entity}Service 提交{业务对象}测试
370
+ 文件: {模块}-application/src/test/java/{包路径}/service/impl/{Entity}ServiceTest.java
371
+ - [ ] T013 [US1] 创建 {Entity}Entity(按后端规范标注基类、表名注解、主键策略)
372
+ 文件: {模块}-model/src/main/java/{包路径}/entity/{Entity}Entity.java
373
+ - [ ] T014 [P] [US1] 创建 {Entity}Dto(按后端规范标注 DTO 基类、校验分组)
374
+ 文件: {模块}-api/src/main/java/{包路径}/dto/{Entity}Dto.java
375
+ - [ ] T015 [P] [US1] 创建 {Entity}DAO 接口 + ORM 映射文件(按后端规范标注基类、软删除过滤)
376
+ 文件: {模块}-model/src/main/java/{包路径}/dao/{Entity}DAO.java
377
+ 文件: {模块}-model/src/main/resources/{包路径}/dao/{Entity}DAO.xml
358
378
  ```
359
379
 
360
380
  **错误示例**:
@@ -380,7 +400,7 @@ $ARGUMENTS
380
400
 
381
401
  Entity + DTO + Ro 类
382
402
 
383
- DAO 接口 + MyBatis XML
403
+ DAO 接口 + ORM 映射文件
384
404
 
385
405
  Service 接口
386
406
 
@@ -388,7 +408,7 @@ Service 实现(最小代码使测试通过)
388
408
 
389
409
  Controller 端点
390
410
 
391
- Feign Client(若涉及外部调用)
411
+ 远程调用客户端(若涉及外部调用)
392
412
 
393
413
  i18n 配置
394
414
  ```
@@ -426,10 +446,10 @@ i18n 配置
426
446
 
427
447
  #### 基于实体与数据模型(设计文档 §2+§3)
428
448
 
429
- - 每个 Entity 独立成一个任务,包含完整字段(带 @TableField + @Schema 注解)
430
- - 每个 DTO 独立成一个任务,包含校验分组(save/update 内部接口)
449
+ - 每个 Entity 独立成一个任务,包含完整字段(按后端规范的字段注解)
450
+ - 每个 DTO 独立成一个任务,包含校验分组
431
451
  - 每个 Ro 独立成一个任务,包含所有字段手动声明
432
- - 每个 DAO 接口 + XML 独立成一个任务组
452
+ - 每个 DAO 接口 + 映射文件独立成一个任务组
433
453
  - 若实体服务于多个故事:放入最早依赖它的故事阶段,或 Phase 2 基础设施
434
454
 
435
455
  #### 基于枚举(设计文档 §6.1)
@@ -442,126 +462,77 @@ i18n 配置
442
462
 
443
463
  #### 基于异常与消息码(设计文档 §7)
444
464
 
445
- - 所有消息码汇总到 `ResponseMsgCode` 常量类 → Phase 2 基础设施阶段
446
- - 消息码按前缀分组:`3103_forecast_order_*` / `3103_forecast_change_order_*`
465
+ - 所有消息码汇总到消息码常量类 → Phase 2 基础设施阶段
466
+ - 消息码按后端规范的前缀格式分组
447
467
  - 每个 Service 实现任务描述中必须注明可能抛出的异常
448
468
 
449
469
  #### i18n 任务生成规则
450
470
 
451
- - **每个模块 7 个 .properties 文件**:`{port}-{service}-application_*.properties`
471
+ - 语言文件数量和命名按后端规范
452
472
  - 所有消息码文本从设计文档 §7.3 提取
453
473
  - i18n 任务可放在 Final Phase 或最后一个故事阶段(因为消息码在基础设施阶段已定义常量)
454
474
 
455
- #### Liquibase 任务生成规则
475
+ #### DB 迁移任务生成规则
456
476
 
457
477
  - 从设计文档 §3.2 提取表结构 → 生成 DDL SQL
458
- - 3 个文件:`master.xml` → `v1.0.xml`(changeLog)→ `DDL_1.0_YYYYMMDD.sql`
459
- - 路径:`3103-sales-forecast-model/src/main/resources/liquibase/mysql/sales_forecast/`
478
+ - 迁移文件格式和目录结构按后端规范
460
479
  - 作为 Phase 2 基础设施的一个任务组
461
480
 
462
- #### Feign Client 任务生成规则
481
+ #### 远程调用客户端任务生成规则
463
482
 
464
- - 从设计文档 §10.2 提取外部依赖 → 每个外部模块一个 Feign Client 接口
465
- - 如:`CtctClient.java`(P01 CTCT查询)、`BondedManualClient.java`(P03 保税手册)、`FoClient.java`(FO创建)、`ApsClient.java`(APS排产进度)
466
- - 路径:`3103-sales-forecast-api/src/main/java/com/sie/gushen/salesforecast/api/client/`
483
+ - 从设计文档 §10.2 提取外部依赖 → 每个外部模块一个远程调用客户端接口
484
+ - 接口命名和路径按后端规范
485
+ - 契约层模块中创建
467
486
 
468
- #### Kafka Consumer 任务生成规则
487
+ #### 消息消费者任务生成规则
469
488
 
470
489
  - 从设计文档 §9.1(发布事件)和 §9.2(消费事件)提取
471
490
  - 每个 Consumer 一个任务
472
- - 路径:`3103-sales-forecast-application/src/main/java/com/sie/gushen/salesforecast/app/consume/`
491
+ - 路径按后端规范
473
492
 
474
493
  ### 阶段结构
475
494
 
476
495
  ```
477
496
  Phase 1: 项目初始化
478
- ├── T001 Maven 三模块 POM 配置(parent POM + 3 个 module POM)
479
- ├── T002 启动类 {Service}Application(extends CommonApplication, @SpringBootApplication, @EnableDiscoveryClient, @EnableFeignClients, @MapperScan, @ComponentScan)
480
- ├── T003 application.yml / bootstrap.yml 基础配置
481
- └── T004 三模块目录结构创建
497
+ ├── T001 工程构建配置(按后端规范的模块结构和依赖管理)
498
+ ├── T002 启动类/入口文件(按后端规范的注解/配置)
499
+ ├── T003 基础配置文件(数据源、日志、应用参数等)
500
+ └── T004 工程目录结构创建
482
501
 
483
502
  Phase 2: 基础设施(阻塞性前置 — 所有用户故事依赖)
484
503
  ├── 枚举类(每个枚举一个任务,可并行 [P])
485
- ├── ForecastOrderStatusEnum
486
- ├── ChangeOrderStatusEnum
487
- ├── DomesticForeignEnum
488
- ├── ProductTypeEnum
489
- ├── TransferStatusEnum
490
- │ ├── QuantityUnitEnum
491
- │ └── DeliveryLocationEnum
492
- ├── 消息码常量 ResponseMsgCode
493
- ├── Liquibase DDL(master.xml + v1.0.xml + DDL.sql)
494
- ├── MyBatis Plus 配置(分页插件 + 乐观锁插件)
495
- ├── SpringDoc API 文档配置
496
- ├── 数据源配置 DataSourceConfig
497
- └── 工具类(如强制转FO时间计算)
498
-
499
- Phase 3: US-01 创建并提报预测单 [P1]
500
- ├── [TDD] 测试任务(至少 3 个:正常场景 + 提报提前期拦截 + MOQ 警告)
501
- ├── ForecastOrderEntity
502
- ├── ForecastOrderDto(saveForecastOrder/updateForecastOrder 分组)
503
- ├── ForecastOrderEntityRo
504
- ├── ForecastOrderDAO + XML(findPagination)
505
- ├── IIForecastOrder 接口
506
- ├── ForecastOrderService(saveForecastOrder, updateForecastOrder, submitForecastOrder)
507
- ├── ForecastOrderController(save, update, submit 端点)
508
- └── Feign Client(CtctClient — CTCT物料查询)
509
-
510
- Phase 4: US-02 计划部门评审预测单 [P1]
511
- ├── [TDD] 测试任务(接收场景 + 驳回场景 + 状态校验)
512
- ├── ForecastOrderService(acceptForecastOrder, rejectForecastOrder)
513
- ├── ForecastOrderController(accept, reject 端点)
504
+ ├── 消息码常量类(按后端规范的格式和枚举类)
505
+ ├── DB 迁移 DDL(按后端规范的迁移文件格式)
506
+ ├── ORM 配置(分页、乐观锁等插件/配置)
507
+ ├── API 文档配置(按后端规范的 API 文档工具)
508
+ ├── 数据源配置
509
+ └── 工具类(业务通用计算逻辑)
510
+
511
+ Phase 3..N-1: 用户故事阶段(每个故事一个阶段,P1→P2 顺序)
512
+ 每个阶段内按 TDD 顺序排列:
513
+ ├── [TDD] 测试任务(正常场景 + 异常场景 + 边界场景)
514
+ ├── Entity(按后端规范的基类/注解/字段)
515
+ ├── DTO(按后端规范的基类/校验分组)
516
+ ├── Ro(按后端规范的字段声明)
517
+ ├── DAO + 映射文件(按后端规范的基类/查询方法)
518
+ ├── Service 接口
519
+ ├── Service 实现(含对象转换、事务注解、异常处理)
520
+ ├── Controller(按后端规范的基类/认证注解/响应包装)
521
+ ├── 远程调用客户端(若涉及外部模块调用)
522
+ ├── 消息消费者(若涉及事件消费)
514
523
  └── 权限配置
515
524
 
516
- Phase 5: US-09 撤回预测单 + US-08 取消/删除 [P1+P2]
517
- ├── [TDD] 测试任务(撤回 + 已排产阻止 + 取消 + 物理删除)
518
- ├── ForecastOrderService(withdrawForecastOrder, cancelForecastOrder, deleteForecastOrder)
519
- └── ForecastOrderController(withdraw, cancel, delete 端点)
520
-
521
- Phase 6: US-03 查看APS排产反馈 [P1]
522
- ├── [TDD] 测试任务(排产确认 + 乐观锁冲突)
523
- ├── ForecastOrderService(scheduleConfirm)
524
- ├── ForecastOrderController(schedule-confirm 端点)
525
- ├── Kafka Consumer(ApsScheduleConfirmConsumer)
526
- └── Feign Client(ApsClient — APS排产进度查询)
527
-
528
- Phase 7: US-04 预测单转履约单 [P1]
529
- ├── [TDD] 测试任务(全部转 + 部分转 + 转单超限 + 状态校验)
530
- ├── DTO(TransferToFoDto)
531
- ├── ForecastOrderService(transferToFO)
532
- ├── ForecastOrderController(transfer-to-fo 端点)
533
- └── Feign Client(FoClient — FO创建 + SoClient — SO行项目查询)
534
-
535
- Phase 8: US-05 变更单修改预测单 [P1]
536
- ├── [TDD] 测试任务(新增变更单 + 提交审批 + 审批通过联动 + 审批驳回 + 并发控制 + 校验场景)
537
- ├── ForecastChangeOrderEntity
538
- ├── ForecastChangeOrderDto + ApproveDto
539
- ├── ForecastChangeOrderDAO + XML(findListByForecastOrderId, findIncompleteByForecastOrderId)
540
- ├── IIForecastChangeOrder 接口
541
- ├── ForecastChangeOrderService(save/submit/approve/reject/withdraw/delete/void)
542
- ├── ForecastChangeOrderController(9 个端点)
543
- └── Feign Client(BondedManualClient — P03 保税手册查询)+ BPM/BpmHelper 集成
544
-
545
- Phase 9: US-06 多维度概览 + US-07 释放预测单 [P2]
546
- ├── [TDD] 测试任务(概览聚合 + 强制释放)
547
- ├── ForecastOrderService(findOverview, forceRelease)
548
- ├── ForecastOrderController(overview, force-release 端点)
549
- └── 定时任务配置
550
-
551
- Phase 10: US-10 系统配置管理 [P2]
552
- ├── 提报提前期配置接口
553
- ├── 强制转FO天数配置接口
554
- └── Feign Client(P01 组织架构 + P03 保税手册)
555
-
556
525
  Final Phase: 集成与收尾
557
- ├── 集成测试(端到端流程 + Feign 联调)
558
- ├── i18n 7 文件(所有消息码的全语言翻译)
559
- ├── API 文档(SpringDoc 注解完善)
560
- ├── 代码评审(按 ECP 编码规范检查)
561
- ├── 安全清单(@CheckToken + 权限矩阵验证)
526
+ ├── 集成测试(端到端流程 + 远程调用联调)
527
+ ├── i18n 文件(所有消息码的全语言翻译,按后端规范的语言集合)
528
+ ├── API 文档完善
529
+ ├── 代码评审(按后端编码规范检查)
530
+ ├── 安全清单(认证注解 + 权限矩阵验证)
562
531
  └── 性能验证(索引 + 缓存 + 分页)
563
532
  ```
564
533
 
534
+ > **注意**:以上阶段结构为通用模板示意。具体类名、注解、路径、配置项均以 `end-integration/index.md` 规范为准。用户故事阶段(Phase 3..N-1)的实际内容从设计文档 §1.1.1 提取。
535
+
565
536
  ### TDD 就绪确认
566
537
 
567
538
  生成 tasks.md 后,必须确认以下条件:
@@ -572,20 +543,20 @@ Final Phase: 集成与收尾
572
543
  - [ ] tasks.md 包含 TDD 执行指南章节,说明 RED→GREEN→REFACTOR 循环
573
544
  - [ ] 任务顺序与 `test-driven-development` skill 的流程一致(先测试失败 → 最小实现 → 重构)
574
545
 
575
- ### ECP 合规确认
546
+ ### 后端规范合规确认
576
547
 
577
548
  生成 tasks.md 后,必须确认:
578
549
 
579
- - [ ] 所有 Entity 任务描述包含 `extends BaseEntity<Entity>`
580
- - [ ] 所有 DTO 任务描述包含 `extends ReqeustCommonDataBean`(注意拼写)
581
- - [ ] 所有 DAO 任务描述包含 `extends BaseCommonDAO_HI` + `WHERE delete_flag = 0`
582
- - [ ] 无任何 QueryWrapper/LambdaQueryWrapper 相关任务
583
- - [ ] 所有 Service 任务描述包含 FastJSON(save)/ SpringBeanUtils(update)区分
584
- - [ ] 所有 Controller 任务描述包含 `extends CommonAbstractService` + `@CheckToken` + ResponseData
585
- - [ ] 所有 Ro 任务描述包含 `implements Serializable` + 手动字段
550
+ - [ ] 所有 Entity 任务描述按后端规范标注基类、表名注解、主键策略
551
+ - [ ] 所有 DTO 任务描述按后端规范标注基类、校验分组
552
+ - [ ] 所有 DAO 任务描述按后端规范标注基类、软删除过滤
553
+ - [ ] 无违反后端规范的数据访问方式
554
+ - [ ] 所有 Service 任务描述按后端规范区分 save/update 的对象转换策略
555
+ - [ ] 所有 Controller 任务描述按后端规范标注基类、认证注解、响应包装
556
+ - [ ] 所有 Ro 任务描述按后端规范标注序列化接口、手动字段声明
586
557
  - [ ] 异常任务描述中异常均来自 Service 层
587
- - [ ] i18n 任务覆盖 7 个语言文件
588
- - [ ] Feign Client 任务放入 `-api/client/` 路径
558
+ - [ ] i18n 任务覆盖后端规范要求的语言文件数量
559
+ - [ ] 远程调用客户端任务放入契约层模块的指定路径
589
560
 
590
561
  ---
591
562
 
@@ -593,7 +564,7 @@ Final Phase: 集成与收尾
593
564
 
594
565
  - [ ] tasks.md 已生成,包含所有阶段、TDD 标记、精确文件路径
595
566
  - [ ] 扩展钩子已根据上述《强制性执行后钩子》的规则派发或跳过
596
- - [ ] 所有 10 条 ECP 编码规范已通过合规确认
567
+ - [ ] 所有 10 个后端规范维度已通过合规确认
597
568
  - [ ] 所有故事阶段 TDD 就绪(测试任务在实现任务之前)
598
569
  - [ ] 已向用户报告完成情况
599
570
 
@@ -601,30 +572,30 @@ Final Phase: 集成与收尾
601
572
 
602
573
  ## 参考:设计文档章节 → 任务生成速查表
603
574
 
604
- | 设计文档章节 | 提取内容 | 生成任务类型 | Phase |
605
- | -------------------- | ----------------------- | ---------------------------- | ------------------------------ |
606
- | §1.1.1 用户故事 | US-01~US-10 优先级 | 阶段划分 | Phase 3+ |
607
- | §1.2 模块定位 | 服务名/端口/包路径 | 路径前缀 | Phase 1 |
608
- | §1.3 上下文边界 | 上下游依赖 | Feign Client, Kafka Consumer | Phase 7, 8, 9 |
609
- | §2.2 实体清单 | Entity 完整字段 + 索引 | Entity 类 | Phase 3+ |
610
- | §2.3 DTO 清单 | DTO 字段 + 校验 + 分组 | DTO 类 | Phase 3+ |
611
- | §2.4 Ro 清单 | Ro 字段 | Ro 类 | Phase 3+ |
612
- | §3.2 数据库表设计 | DDL | Liquibase | Phase 2 |
613
- | §3.3 MyBatis 映射 | DAO + XML 结构 | DAO 接口 + XML | Phase 3+ |
614
- | §4.1 业务行为 | 行为清单 | Service 方法 | Phase 3+ |
615
- | §4.3 状态机 | 状态+转换 | Service 状态流转 | Phase 3+ |
616
- | §4.4 Service 接口 | 方法签名 | Service 接口 + 实现 | Phase 3+ |
617
- | §4.6 事务边界 | @Transactional | 事务注解 | Phase 3+ |
618
- | §5.1 端点清单 | HTTP+路径 | Controller 方法 | Phase 3+ |
619
- | §5.2 Controller 骨架 | 方法路由表 | Controller 类 | Phase 3+ |
620
- | §5.4 权限矩阵 | @CheckToken + 角色 | 权限控制 | Phase 3+ |
621
- | §6.1 枚举定义 | 枚举值+编码 | 枚举类 | Phase 2 |
622
- | §6.2 校验规则 | Bean Validation | DTO 注解 | Phase 3+ |
623
- | §7.1 业务异常 | 消息码+触发条件 | Service 异常处理 | Phase 3+ |
624
- | §7.3 消息码汇总 | properties 文本 | i18n 7 文件 | Final Phase |
625
- | §8.1 缓存策略 | Redis 键设计 | 缓存配置 | Phase 2 / Final |
626
- | §8.3 并发控制 | @Klock / version_num | 并发控制 | Phase 3+ |
627
- | §9 领域事件 | 事件 Payload + Consumer | Kafka Consumer | Phase 6, 8 |
628
- | §10 跨模块依赖 | Feign Client 契约 | Feign Client 接口 | Phase 3+ |
629
- | §12 测试场景 | 测试数据 + 预期结果 | TDD 测试任务 | Phase 3+(在每个故事阶段开头) |
630
- | §13 附录 | 目录树 ~45 文件 | 文件路径速查表 | tasks.md 开头 |
575
+ | 设计文档章节 | 提取内容 | 生成任务类型 | Phase |
576
+ | -------------------- | ----------------------- | ---------------------- | ------------------------------ |
577
+ | §1.1.1 用户故事 | US-01~US-N 优先级 | 阶段划分 | Phase 3+ |
578
+ | §1.2 模块定位 | 服务名/端口/包路径 | 路径前缀 | Phase 1 |
579
+ | §1.3 上下文边界 | 上下游依赖 | 远程客户端, 消费者 | Phase 各故事阶段 |
580
+ | §2.2 实体清单 | Entity 完整字段 + 索引 | Entity 类 | Phase 3+ |
581
+ | §2.3 DTO 清单 | DTO 字段 + 校验 + 分组 | DTO 类 | Phase 3+ |
582
+ | §2.4 Ro 清单 | Ro 字段 | Ro 类 | Phase 3+ |
583
+ | §3.2 数据库表设计 | DDL | DB 迁移 | Phase 2 |
584
+ | §3.3 ORM 映射 | DAO + 映射文件结构 | DAO 接口 + 映射文件 | Phase 3+ |
585
+ | §4.1 业务行为 | 行为清单 | Service 方法 | Phase 3+ |
586
+ | §4.3 状态机 | 状态+转换 | Service 状态流转 | Phase 3+ |
587
+ | §4.4 Service 接口 | 方法签名 | Service 接口 + 实现 | Phase 3+ |
588
+ | §4.6 事务边界 | 事务注解 | 事务标注 | Phase 3+ |
589
+ | §5.1 端点清单 | HTTP+路径 | Controller 方法 | Phase 3+ |
590
+ | §5.2 Controller 骨架 | 方法路由表 | Controller 类 | Phase 3+ |
591
+ | §5.4 权限矩阵 | 认证注解 + 角色 | 权限控制 | Phase 3+ |
592
+ | §6.1 枚举定义 | 枚举值+编码 | 枚举类 | Phase 2 |
593
+ | §6.2 校验规则 | 校验注解 | DTO 注解 | Phase 3+ |
594
+ | §7.1 业务异常 | 消息码+触发条件 | Service 异常处理 | Phase 3+ |
595
+ | §7.3 消息码汇总 | 多语言文本 | i18n 文件 | Final Phase |
596
+ | §8.1 缓存策略 | 缓存键设计 | 缓存配置 | Phase 2 / Final |
597
+ | §8.3 并发控制 | 乐观锁/分布式锁 | 并发控制 | Phase 3+ |
598
+ | §9 领域事件 | 事件 Payload + Consumer | 消息消费者 | Phase 各故事阶段 |
599
+ | §10 跨模块依赖 | 远程调用契约 | 远程调用客户端接口 | Phase 3+ |
600
+ | §12 测试场景 | 测试数据 + 预期结果 | TDD 测试任务 | Phase 3+(在每个故事阶段开头) |
601
+ | §13 附录 | 目录树 | 文件路径速查表 | tasks.md 开头 |