adspecs 0.1.34 → 0.1.35

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.
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "name": "adspecs",
12
12
  "description": "AI Coding研发协同开发插件",
13
- "version": "0.1.34",
13
+ "version": "0.1.35",
14
14
  "source": "./",
15
15
  "author": {
16
16
  "name": "Qingwen Chen",
@@ -2,7 +2,7 @@
2
2
  "name": "adspecs",
3
3
  "displayName": "adspecs AI Plugin",
4
4
  "description": "AI first工程规范驱动开发插件",
5
- "version": "0.1.34",
5
+ "version": "0.1.35",
6
6
  "author": {
7
7
  "name": "Qingwen Chen",
8
8
  "email": "cqinwn@qq.com",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "adspecs",
3
3
  "displayName": "adspecs AI 工程规范驱动开发插件",
4
- "version": "0.1.34",
4
+ "version": "0.1.35",
5
5
  "description": "AI-first specification-driven development plugin for ECP platform full-lifecycle development",
6
6
  "descriptionZh": "AI优先的工程规范驱动开发插件,覆盖需求分析、PRD、系统设计、任务拆解、TDD、代码评审、Wiki同步全流程",
7
7
  "author": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "adspecs",
3
3
  "displayName": "adspecs AI 工程规范驱动开发插件",
4
- "version": "0.1.34",
4
+ "version": "0.1.35",
5
5
  "description": "AI-first specification-driven development plugin for ECP platform full-lifecycle development",
6
6
  "descriptionZh": "AI优先的工程规范驱动开发插件,覆盖需求分析、PRD、系统设计、任务拆解、TDD、代码评审、Wiki同步全流程",
7
7
  "author": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "adspecs",
3
3
  "displayName": "adspecs AI 工程规范驱动开发插件",
4
- "version": "0.1.34",
4
+ "version": "0.1.35",
5
5
  "description": "AI-first specification-driven development plugin for ECP platform full-lifecycle development",
6
6
  "descriptionZh": "AI优先的工程规范驱动开发插件,覆盖需求分析、PRD、系统设计、任务拆解、TDD、代码评审、Wiki同步全流程",
7
7
  "author": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adspecs",
3
- "version": "0.1.34",
3
+ "version": "0.1.35",
4
4
  "description": "AI first 工程规范驱动开发插件 — 支持 npm 安装和 CLI 初始化",
5
5
  "bin": {
6
6
  "adspecs": "bin/adspecs.js"
@@ -37,7 +37,7 @@ $ARGUMENTS
37
37
 
38
38
  **与 `adspecs-analyze` 的区别**:
39
39
 
40
- - `adspecs-analyze`:**静态/一致性/兼容性分析**——侧重 ECP 编码规范合规检查和全链路 ID 追溯
40
+ - `adspecs-analyze`:**静态/一致性/兼容性分析**——侧重项目规范合规检查(以 `docs/40-project_conventions/` 为准)和全链路 ID 追溯
41
41
  - `adspecs-adversarial-review`:**动态/对抗/破坏性分析**——侧重红队角色的主动挑战和"如果X会怎样"的场景推演
42
42
 
43
43
  ## 操作约束
@@ -1,574 +1,564 @@
1
- ---
2
- name: "adspecs-analyze"
3
- description: "对 PRD、系统设计文档(_system-design.md)和 tasks.md 进行非破坏性的 ECP 全链路一致性分析。"
4
- agent_created: true
5
- argument-hint: "指定功能名或系统设计文档路径,如 M06-01 或 docs/30-system-design/crm/M06-01-销售预测_system-design.md"
6
- compatibility: "需要 docs/ 目录体系:docs/20-prd(PRD)+ docs/30-system-design(系统设计+tasks)+ CLAUDE.md(ECP 编码宪章)"
7
- metadata:
8
- author: "qingwen"
9
- source: "基于 adspecs-analyze 通用模板 + ECP 全链路追溯 ID 体系 + CLI 规范 10 条 + TDD 一致性检测改造"
10
- user-invocable: true
11
- disable-model-invocation: false
12
- ---
13
-
14
- ## 用户输入
15
-
16
- ```text
17
- $ARGUMENTS
18
- ```
19
-
20
- 在处理之前**必须**考虑用户输入(若不为空)。用户输入应为功能名称(如 `M06-01`)或系统设计文档路径。若为空则从上下文推导。
21
-
22
- ## 执行前检查
23
-
24
- **检查扩展钩子(分析前)**:
25
-
26
- - 检查项目根目录下是否存在 `.adspecs/extensions.yml` 文件。
27
- - 如果存在,读取该文件并查找 `hooks.before_analyze` 键下的条目。
28
- - 如果 YAML 无法解析或无效,则静默跳过钩子检查并继续正常流程。
29
- - 过滤掉 `enabled` 显式为 `false` 的钩子。将没有 `enabled` 字段的钩子默认为启用状态。
30
- - 对于每个剩余的钩子,**不要**尝试解释或评估钩子的 `condition` 表达式:
31
- - 如果钩子没有 `condition` 字段,或该字段为 null/空,则视为可执行钩子。
32
- - 如果钩子定义了非空的 `condition`,则跳过该钩子,将条件评估交由 HookExecutor 实现处理。
33
- - 从钩子命令名称构建斜杠命令时,将点号(`.`)替换为连字符(`-`)。例如,`adspecs.git.commit` → `/adspecs-git-commit`。
34
- - 对于每个可执行钩子,根据其 `optional` 标志输出以下内容:
35
- - **可选钩子**(`optional: true`):
36
-
37
- ```
38
- ## 扩展钩子
39
-
40
- **可选前置钩子**:{extension}
41
- 命令:`/{command}`
42
- 描述:{description}
43
-
44
- 提示:{prompt}
45
- 执行方式:`/{command}`
46
- ```
47
-
48
- - **强制钩子**(`optional: false`):
49
-
50
- ```
51
- ## 扩展钩子
52
-
53
- **自动前置钩子**:{extension}
54
- 正在执行:`/{command}`
55
- EXECUTE_COMMAND: {command}
56
-
57
- 等待钩子命令执行结果后再继续进入目标阶段。
58
- ```
59
-
60
- - 如果没有注册任何钩子,或 `.adspecs/extensions.yml` 不存在,则静默跳过。
61
-
62
- ## 目标
63
-
64
- 在实现之前,识别 ECP 平台三大核心产物——**PRD(需求规格说明书)**、**系统设计文档(\_system-design.md)**、**tasks.md**——之间的不一致、重复、歧义、欠明确项及 **ECP 编码规范违反**。此命令**必须**仅在 `/adspecs-tasks` 成功产出完整的 `tasks.md` 之后运行。
65
-
66
- **ECP 产物定位**:
67
-
68
- | ECP 产物 | 路径模式 | 负责 Skill | 关键 ID 体系 |
69
- | ------------------------- | ------------------------------------------------------------ | ---------------- | ------------------------------------------------------------- |
70
- | **PRD(需求规格说明书)** | `docs/20-prd/{crm\|mom}/{模块}/` | `/adspecs-prd` | US-###, BR-###, PERM-###(PRD 阶段赋予) |
71
- | **系统设计文档** | `docs/30-system-design/{crm\|mom}/{功能名}_system-design.md` | `/adspecs-plan` | FUNC-###, PERM-###(需求分析阶段 AI 赋予)+ 13 章统一 OOA+OOD |
72
- | **tasks.md** | `docs/30-system-design/{crm\|mom}/{功能名}_tasks.md` | `/adspecs-tasks` | T### 全局任务 ID + `[TDD]` 标记 + `[US#]` 故事标签 |
73
-
74
- ## 操作约束
75
-
76
- **严格只读**:**不**修改任何文件。输出结构化的分析报告。提供可选的修复方案(用户必须明确批准后,方可手动调用后续编辑命令)。
77
-
78
- **ECP 编码宪章权威**:项目根目录下的 `CLAUDE.md`(特别是 §"Code Generation Rules (ECP Backend)" 的 **10 条编码规范**)在此分析范围内是**不可协商的 MUST 原则**。任何违反这 10 条规范的设计或任务均自动视为 **CRITICAL**。若 CLAUDE.md 中的规则本身需要更改,必须通过独立的、显式的 CLAUDE.md 更新流程完成。
79
-
80
- ## 执行步骤
81
-
82
- ### 1. 定位三产物
83
-
84
- `$ARGUMENTS` 或上下文推导三产物路径:
85
-
86
- **方式 A:从 $ARGUMENTS 直接指定**
87
-
88
- - 若用户提供了功能名(如 `M06-01`)→ 搜索 `docs/30-system-design/{crm|mom}/M06-01*_system-design.md` `docs/30-system-design/{crm|mom}/M06-01*_tasks.md`
89
- - 若用户提供了完整路径(如 `docs/30-system-design/crm/M06-01-销售预测_system-design.md`)→ 直接使用
90
-
91
- **方式 B:从上下文推导**
92
-
93
- - 搜索 `docs/30-system-design/{crm|mom}/` 下最新修改的 `*_system-design.md`
94
- - 搜索同目录下对应的 `*_tasks.md`
95
- - 从系统设计文档 §1.1 定位关联的 PRD 文件路径
96
-
97
- **必须定位的三文件**:
98
-
99
- - **PRD**:`docs/20-prd/{crm|mom}/{模块}/` 下的需求规格说明书(含 US-###/BR-###)
100
- - **SYSTEM_DESIGN**:`docs/30-system-design/{crm|mom}/{功能名}_system-design.md`
101
- - **TASKS**:`docs/30-system-design/{crm|mom}/{功能名}_tasks.md`
102
-
103
- 若任意文件缺失,则终止并提示用户运行对应的前置命令(如 `/adspecs-plan` `/adspecs-tasks`)。
104
-
105
- ### 2. 加载产物与宪章(渐进式披露)
106
-
107
- 仅加载每个产物中最低限度的必要上下文。
108
-
109
- **从 PRD 加载:**
110
-
111
- - §2.1 用户故事(US-### + 优先级 + 验收场景)
112
- - §3.2 业务规则(BR-### + 规则简述)
113
- - §4.1 功能清单(功能编号 → 与系统设计 FUNC-### 关联)
114
- - §5.1 权限矩阵(权限标识 → 角色 → 与系统设计 §5.4 关联)
115
- - §6.1 验收标准(归约到 US/BR ID)
116
-
117
- **从系统设计加载:**
118
-
119
- - §1.1 需求 ID 映射(4 张表:用户故事映射 / 业务规则映射 / 功能条目映射 / 权限映射)
120
- - §2.2 实体清单(Entity 完整字段 + 注解要求)
121
- - §2.3 DTO 清单(DTO 字段 + 校验规则 + 分组)
122
- - §2.4 Ro 清单(Ro 字段)
123
- - §3.2 数据库表设计(2 张表的 DDL 约束)
124
- - §3.3 MyBatis 映射(DAO 接口 + XML 结构)
125
- - §4.1 业务行为清单(行为 + 触发方 + 前置/后置条件)
126
- - §4.4 Service 接口设计(方法签名 + 事务边界)
127
- - §5.1 端点清单(HTTP + 路径 + 请求/响应包装)
128
- - §5.4 权限矩阵(接口 权限要求)
129
- - §6.1 枚举定义(每个枚举的值 + 编码)
130
- - §7.1 业务异常清单(消息码 + 触发条件 + 抛出位置)
131
- - §7.3 消息码汇总(properties 内容,19 个消息码)
132
- - §9 领域事件(发布/消费事件)
133
- - §10 跨模块依赖(Feign Client 契约)
134
- - §13 附录代码结构(~45 文件目录树)
135
-
136
- **从 tasks.md 加载:**
137
-
138
- - 文件路径速查表(所有目标文件路径)
139
- - Phase 1~10 结构(阶段号 → 故事/基础设施/收尾)
140
- - Task ID(T001~TNNN)+ `[P]` 标记 + `[TDD]` 标记 + `[US#]` 标签
141
- - 每个任务的精确文件路径
142
- - ECP 编码规范检查清单(10 条逐项确认状态)
143
- - 依赖关系与执行顺序
144
- - TDD 执行指南(RED→GREEN→REFACTOR)
145
-
146
- **从 CLAUDE.md(ECP 编码宪章)加载:**
147
-
148
- - §"Code Generation Rules (ECP Backend)" 10 条规则(MUST 原则)
149
- - §"Repository Overview" 三模块结构定义
150
-
151
- ### 3. 构建 ECP 语义模型
152
-
153
- 创建内部表示(切勿将原始产物包含在输出中):
154
-
155
- #### 3.1 ECP 全链路 ID 模型
156
-
157
- 从系统设计 §1.1 的 4 张映射表一次性提取所有可追溯 ID:
158
-
159
- | ID 类型 | 来源 | 含义 | 设计文档映射 | tasks 映射 |
160
- | ------------ | --------------- | -------- | ------------------------------------------- | -------------------------------- |
161
- | **US-###** | PRD §2.1 | 用户故事 | 系统设计 §1.1.1 | tasks Phase 3~10 的 `[US#]` 标签 |
162
- | **BR-###** | PRD §3.2 | 业务规则 | 系统设计 §1.1.2 §4 Service 方法 → §7 异常 | tasks 中校验/异常相关实现任务 |
163
- | **FUNC-###** | 系统设计 §1.1.3 | 功能条目 | 系统设计 §5.1 端点 | tasks 中 Controller 端点任务 |
164
- | **PERM-###** | 系统设计 §1.1.4 | 权限标识 | 系统设计 §5.4 权限矩阵 | tasks 中 `@CheckToken` 配置任务 |
165
-
166
- #### 3.2 ECP 任务类型模型
167
-
168
- tasks 中的每个任务按 ECP 类型分类:
169
-
170
- ```
171
- Entity | DTO | Ro | DAO接口 | DAO XML | Service接口 | Service实现 | Controller | Feign Client | 枚举 | 消息码常量 | Kafka Consumer | i18n | Liquibase | 配置类 | 工具类 | 测试
172
- ```
173
-
174
- #### 3.3 TDD 标记模型
175
-
176
- 提取每个故事阶段内的 `[TDD]` 标记位置和数量:
177
-
178
- - 每个 `[Story]` 阶段的第一个 `[TDD]` 任务索引
179
- - `[TDD]` 任务总数 vs 该阶段实现任务总数
180
- - 场景覆盖(正常 / 异常 / 边界)
181
-
182
- ### 4. 检测扫描(令牌高效分析)
183
-
184
- 聚焦高信号发现。限制最多 50 条发现;超出部分在溢出摘要中汇总。
185
-
186
- ---
187
-
188
- #### A. 重复检测
189
-
190
- - 识别 PRD/系统设计/tasks 中近似重复的 US/BR/FUNC 描述
191
- - 标记表述较差者,建议合并
192
-
193
- #### B. 歧义检测
194
-
195
- - 标记缺乏可度量标准的模糊形容词(快速、可扩展、安全、直观、健壮)
196
- - 标记未解决的占位符(TODO、TKTK、???、`<placeholder>` 等)
197
- - 标记 PRD "待后续版本补充" 但系统设计仍缺少的设计元素
198
-
199
- #### C. 欠明确性检测
200
-
201
- - BR 规则在系统设计 §4 中缺少对应 Service 方法
202
- - US 故事在 tasks 中缺少完整的 Phase
203
- - 系统设计实体字段在 tasks Entity 任务中未完整列出
204
-
205
- #### D. 宪章一致性(ECP 编码规范)
206
-
207
- > **来源**:CLAUDE.md §"Code Generation Rules (ECP Backend)" 10 条 MUST 规则。**违反任意一条 = CRITICAL**。
208
-
209
- 逐条检测 tasks.md 和系统设计 §13 中的文件/描述是否合规:
210
-
211
- | # | 检测规则 | 检测方式 |
212
- | --- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------ |
213
- | 1 | Entity: `extends BaseEntity<Entity>`, `@TableName`, `@TableField`+`@Schema`, `IdType.ASSIGN_ID` | 检查 Entity 任务描述是否含这些关键字 |
214
- | 2 | DTO: `extends ReqeustCommonDataBean`(注意拼写), 校验分组, `@JSONField` | 检查 DTO 任务描述是否含正确拼写 |
215
- | 3 | DAO: `extends BaseCommonDAO_HI`, `@Component`, XML 同包, `WHERE delete_flag=0` | 检查 DAO 任务描述是否含 delete_flag |
216
- | 4 | **禁止 QueryWrapper/LambdaQueryWrapper** | 全文扫描 tasks.md 不出现这两个词 |
217
- | 5 | Service: `II{Entity}` 接口 + 实现, `@Component`, Save→FastJSON, Update→SpringBeanUtils | 检查 Service 任务描述是否区分 FastJSON/BeanUtils |
218
- | 6 | Controller: `extends CommonAbstractService`, `@CheckToken`, `ResponseData` 包装 | 检查 Controller 任务描述是否含这些关键字 |
219
- | 7 | Ro: `implements Serializable`, 手动字段, `@DateTimeFormat @JsonFormat` | 检查 Ro 任务描述 |
220
- | 8 | 异常: Service 层抛出, 消息码枚举禁止硬编码 | 检查异常任务是否在 Service 实现中 |
221
- | 9 | i18n: 7 个 `.properties` 文件存在 | 检查 tasks 是否含 7 个 i18n 任务 |
222
- | 10 | 注入: `@Autowired`, FastJSON 序列化, Hutool 优先, SLF4J | 检查工具注入规范 |
223
-
224
- #### E. 覆盖缺口
225
-
226
- - 每个 US 故事是否在 tasks 中有对应的 Phase
227
- - 每个 BR 规则是否在 tasks 中有对应的实现任务
228
- - 每个 FUNC 功能是否在 tasks 中有对应的 Controller 端点任务
229
- - 每个 PERM 权限是否在 tasks 中有对应的 `@CheckToken` 配置
230
- - 系统设计 §10 中每个外部依赖是否在 tasks 中有对应 Feign Client 任务
231
- - 系统设计 §6.1 中每个枚举是否在 tasks Phase 2 中有独立任务
232
- - 系统设计 §9.1/§9.2 中每个事件是否在 tasks 中有对应 Consumer 或通知任务
233
- - 系统设计 §12 中每个测试场景是否有对应的 `[TDD]` 任务
234
-
235
- #### F. 不一致性
236
-
237
- - 术语漂移(PRD 用"预测单",系统设计用"ForecastOrder",tasks 中混用)
238
- - 消息码不匹配(系统设计 §7.3 定义的码 vs tasks 中引用的码)
239
- - 文件路径漂移(系统设计 §13 目录树 vs tasks 文件路径速查表)
240
- - 用户故事优先级漂移(PRD P1/P2 vs tasks Phase 排列顺序)
241
- - 行为数量不一致(系统设计 §4.1 18 个行为 vs tasks 中对应 Service 方法数量)
242
-
243
- ---
244
-
245
- #### G. ECP 编码规范一致性(新增)
246
-
247
- > 此维度在 D 基础上做更细粒度的语义检查。
248
-
249
- - 任务描述中的 ECP 父类拼写是否正确(`ReqeustCommonDataBean` vs `RequestCommonDataBean`)
250
- - Entity 任务是否声明"审计字段继承不重复"
251
- - DAO XML 任务是否声明 `resultMap` 含全字段+审计
252
- - Service 任务是否区分 Save(FastJSON `JSONObject.parseObject(JSONObject.toJSONString(...))`)和 Update(Spring `BeanUtils.copyProperties(dto, entity, "createdBy", "creationDate", "versionNum")`)
253
- - 任务描述中是否使用了 `QueryWrapper` 或 `LambdaQueryWrapper`(绝对禁止)
254
-
255
- #### H. TDD 顺序一致性(新增)
256
-
257
- - 每个 `[US#]` Phase 内,第一个任务是否带有 `[TDD]` 标记
258
- - 每个故事内是否存在无对应 `[TDD]` 测试的实现任务
259
- - 是否存在 `[TDD]` 任务位于实现任务**之后**的情况(违反 TDD 铁律)
260
- - `[TDD]` 任务粒度:是否为每个 Service 方法的正常/异常/边界场景都配置了测试任务(对照系统设计 §12 的三个测试场景表)
261
-
262
- #### I. i18n 覆盖完整性(新增)
263
-
264
- - tasks.md Final Phase 是否包含 **恰好 7 个** `.properties` 文件任务
265
- - 语言覆盖:是否包含 `default` / `zh_CN` / `zh_TW` / `en_US` / `vi_VN` / `th_TH` / `hu_HU`
266
- - 消息码覆盖:系统设计 §7.3 中的 19 个消息码是否在至少 1 个 i18n 文件任务中提到
267
- - 文件命名格式:`{port}-{service}-application[_locale].properties`
268
-
269
- #### J. 三模块路径精度(新增)
270
-
271
- - tasks.md 中每个文件路径是否从 `{port}-{service}-{layer}/` 开始
272
- - 文件所在模块是否与其类型匹配:
273
- - Entity `-model/src/main/java/.../model/entity/`
274
- - DTO → `-api/src/main/java/.../api/dto/`
275
- - DAO+XML → `-model/src/main/java/.../model/dao/`
276
- - Service → `-application/src/main/java/.../model/service/`
277
- - Controller → `-application/src/main/java/.../api/controller/`
278
- - Feign Client → `-api/src/main/java/.../api/client/`
279
- - 枚举 → `-application/src/main/java/.../infra/enumeration/`
280
- - i18n → `-application/src/main/resources/config/`
281
- - Liquibase → `-model/src/main/resources/liquibase/`
282
-
283
- #### K. Feign Client 映射完整性(新增)
284
-
285
- - 系统设计 §10 列出 N 个外部依赖 → tasks 中是否有 N 个对应 `Feign Client` 任务
286
- - 外部依赖专用 Feign Client:CtctClient / BondedManualClient / FoClient / SoClient / ApsClient
287
- - 每个 Feign Client 任务的文件路径是否为 `-api/client/` 目录
288
- - Feign Client 的接口路径/方法签名是否与系统设计 §10.2 中的契约一致
289
-
290
- #### L. Liquibase 覆盖完整性(新增)
291
-
292
- - 系统设计 §3.2 定义 N 张表 → tasks 中 Liquibase DDL 是否覆盖全部表
293
- - 2 张表(`forecast_order` + `forecast_change_order`)是否都在 DDL 任务中提到
294
- - 索引覆盖:系统设计 §3.2 定义的所有索引(主表 6 个 + 子表 3 个 = 9 个)是否在 DDL 中
295
- - Liquibase 文件数量:是否包含 `master.xml` + `v1.0.xml` + `DDL_1.0_YYYYMMDD.sql` 三个文件
296
-
297
- #### M. ECP 专项任务类型覆盖(新增)
298
-
299
- - 枚举类数量:系统设计 §6.1 定义 7 个枚举 → tasks Phase 2 是否有 7 个枚举任务
300
- - 消息码常量:tasks Phase 2 是否有 `ResponseMsgCode` 任务
301
- - Kafka Consumer:系统设计 §9.2 有 APS 消费者 → tasks 是否有 `ApsScheduleConfirmConsumer` 任务
302
- - 配置类:系统设计 §8 缓存策略 / §8.3 并发控制 → tasks 是否有对应配置任务
303
- - 工具类:系统设计 §4.5 引用的 `ForecastUtils` → tasks 是否有对应工具类任务
304
-
305
- ---
306
-
307
- ### 5. 严重级别分配
308
-
309
- 使用以下启发式规则对发现进行优先级排序:
310
-
311
- - **CRITICAL**:
312
- - 违反 CLAUDE.md ECP 10 条编码规范任一条
313
- - 核心产物缺失(PRD/系统设计/tasks 三缺一)
314
- - US 故事零覆盖(tasks 中无对应 Phase)
315
- - 所有端点缺失 `@CheckToken`
316
- - i18n 7 文件任务数 ≠ 7
317
- - 违反 TDD 铁律(实现任务在 `[TDD]` 测试之前)
318
- - **HIGH**:
319
- - BR 业务规则在 tasks 中无对应实现
320
- - 系统设计 §10 外部依赖在 tasks 中无对应 Feign Client
321
- - 消息码不匹配(不同文件中同一概念码不同)
322
- - 校验字段消息码格式错误(非 `{port}_{table}_{三位序号}`)
323
- - 文件路径三模块归属错误
324
- - **MEDIUM**:
325
- - 术语漂移(同一概念在不同文件中命名不一致,"预测单" vs "FC" vs "forecast")
326
- - 单个枚举漏覆盖(6/7 通过)
327
- - 测试场景覆盖不完整(只覆盖正常场景,缺异常/边界)
328
- - 欠明确的边界情况
329
- - **LOW**:
330
- - 风格/措辞改进(任务描述可更精确)
331
- - 不影响执行顺序的轻微冗余
332
- - 非关键的命名不一致
333
-
334
- ### 6. 生成紧凑 ECP 分析报告
335
-
336
- 输出 Markdown 报告(不写文件),结构如下:
337
-
338
- ---
339
-
340
- ## ECP 全链路一致性分析报告
341
-
342
- ### 分析概要
343
-
344
- | 指标 | 数值 |
345
- | ------------- | ---------------- |
346
- | 分析功能 | [功能名称] |
347
- | PRD 路径 | [PRD 文件路径] |
348
- | 系统设计路径 | [设计文档路径] |
349
- | tasks.md 路径 | [tasks 文件路径] |
350
- | 分析时间 | [时间戳] |
351
-
352
- ### 全链路追溯矩阵
353
-
354
- | US ID | 优先级 | BR ID | FUNC ID | PERM ID | Task Phase | Task IDs | 覆盖状态 |
355
- | ----- | ------ | ----------------- | --------------- | --------------- | ---------- | --------- | :------: |
356
- | US-01 | P1 | BR-01,BR-02,BR-14 | FUNC-03,FUNC-05 | PERM-01,PERM-02 | Phase 3 | T022~T034 | |
357
- | US-02 | P1 | — | FUNC-11,FUNC-12 | PERM-07,PERM-08 | Phase 4 | T035~T041 | ✅ |
358
- | ... | ... | ... | ... | ... | ... | ... | ... |
359
-
360
- ### ECP 编码规范合规检查
361
-
362
- | # | 规范 | 检测结果 | 发现 |
363
- | --- | ------------------- | :------: | ---------- |
364
- | 1 | Entity 规范 | ✅ / ❌ | [具体发现] |
365
- | 2 | DTO 规范 | ✅ / ❌ | [具体发现] |
366
- | 3 | DAO 规范 | ✅ / ❌ | [具体发现] |
367
- | 4 | 禁止 QueryWrapper | ✅ / ❌ | [具体发现] |
368
- | 5 | Service 规范 | ✅ / ❌ | [具体发现] |
369
- | 6 | Controller 规范 | ✅ / ❌ | [具体发现] |
370
- | 7 | Ro 规范 | ✅ / ❌ | [具体发现] |
371
- | 8 | 异常处理规范 | ✅ / ❌ | [具体发现] |
372
- | 9 | i18n 规范(7 文件) | ✅ / ❌ | [具体发现] |
373
- | 10 | 注入与工具规范 | ✅ / ❌ | [具体发现] |
374
-
375
- ### TDD 健康度评分
376
-
377
- | 故事阶段 | [TDD] 任务数 | 实现任务数 | 先行率 | 场景覆盖(正常/异常/边界) | 评分 |
378
- | ------------------ | ------------ | ---------- | ----------- | -------------------------- | :--: |
379
- | Phase 3 (US-01) | 5 | 8 | ✅ 5/5 先行 | 3/3 全场景 | 🟢 |
380
- | Phase 4 (US-02) | 4 | 3 | ✅ 4/4 先行 | 3/3 全场景 | 🟢 |
381
- | Phase 5 (US-09+08) | 3 | 2 | ✅ 3/3 先行 | 3/3 全场景 | 🟢 |
382
- | Phase 6 (US-04) | 3 | 5 | ✅ 3/3 先行 | 3/3 全场景 | 🟢 |
383
- | Phase 7 (US-03) | 2 | 5 | ✅ 2/2 先行 | 2/3 缺边界 | 🟡 |
384
- | Phase 8 (US-05) | 4 | 7 | ✅ 4/4 先行 | 3/3 全场景 | 🟢 |
385
- | Phase 9 (US-06+07) | 2 | 3 | ✅ 2/2 先行 | 2/3 缺边界 | 🟡 |
386
- | **全局** | **23** | **33** | **100%** | **85%** | 🟢 |
387
-
388
- ### 文件路径校验表
389
-
390
- | 文件 | 期望模块 | 实际路径模块 | 归属正确? |
391
- | ------------------------- | ------------ | ------------ | :--------: |
392
- | ForecastOrderEntity.java | -model | -model | ✅ |
393
- | ForecastOrderDto.java | -api | -api | ✅ |
394
- | ForecastOrderService.java | -application | -application | ✅ |
395
- | ... | ... | ... | ... |
396
-
397
- ### 发现清单
398
-
399
- | ID | 类别 | 严重级别 | 位置 | 摘要 | 修复建议 |
400
- | --- | ------- | -------- | ------------- | ---- | -------- |
401
- | G1 | ECP规范 | CRITICAL | tasks.md:Lxxx | ... | ... |
402
- | H2 | TDD顺序 | CRITICAL | tasks.md:Lxxx | ... | ... |
403
- | ... | ... | ... | ... | ... | ... |
404
-
405
- **覆盖摘要表:**
406
-
407
- | 需求标识 | 类型 | 是否有任务? | Task IDs | 备注 |
408
- | -------- | -------- | :----------: | --------- | --------------------------- |
409
- | US-01 | 用户故事 | | T022~T034 | Phase 3 |
410
- | BR-01 | 业务规则 | ✅ | T032 | Service.submitForecastOrder |
411
- | FUNC-03 | 功能条目 | ✅ | T032,T033 | Controller.save+Service |
412
- | PERM-01 | 权限 | ✅ | T033 | @CheckToken |
413
- | ... | ... | ... | ... | ... |
414
-
415
- **Feign Client 映射表:**
416
-
417
- | 外部依赖(系统设计 §10) | Feign Client 任务 | 模块 | 路径正确? |
418
- | ------------------------ | ------------------ | ---- | :--------: |
419
- | P01 CTCT 查询 | CtctClient | -api | ✅ |
420
- | P03 保税手册 | BondedManualClient | -api | ✅ |
421
- | FO 创建 | FoClient | -api | ✅ |
422
- | SO 行项目 | SoClient | -api | ✅ |
423
- | APS 排产进度 | ApsClient | -api | ✅ |
424
-
425
- **i18n 覆盖表:**
426
-
427
- | 语言文件 | 任务 ID | 消息码覆盖数 |
428
- | -------------- | ------- | ------------ |
429
- | default (中文) | T084 | 19/19 ✅ |
430
- | zh_CN | T085 | 19/19 ✅ |
431
- | zh_TW | T086 | 19/19 ✅ |
432
- | en_US | T087 | 19/19 ✅ |
433
- | vi_VN | T088 | 19/19 ✅ |
434
- | th_TH | T089 | 19/19 ✅ |
435
- | hu_HU | T090 | 19/19 ✅ |
436
-
437
- **未映射任务:**(若有)
438
-
439
- **指标汇总:**
440
-
441
- - 用户故事总数:10
442
- - 业务规则总数:14
443
- - 功能条目总数:21
444
- - 权限标识总数:13
445
- - 任务总数:95
446
- - 全链路覆盖率:XX%(至少关联 1 个任务的需求占比)
447
- - 歧义数量:X
448
- - 重复数量:X
449
- - CRITICAL 问题数量:X
450
- - ECP 规范违规数量:X
451
- - TDD 先行率:XX%
452
- - i18n 覆盖完整性:X/7
453
-
454
- ---
455
-
456
- ### 7. 提供后续行动
457
-
458
- 在报告末尾输出简洁的后续行动块:
459
-
460
- - 若存在 **CRITICAL** 问题:建议在 `/adspecs-implement` 或 `/adspecs-tasks` 迭代之前解决。禁止进入实现阶段。
461
- - 若存在 **HIGH** 问题:强烈建议在实现前修复,否则可能存在功能缺失。
462
- - 若仅有 **LOW/MEDIUM**:用户可以继续实现,但提供改进建议。
463
- - 提供明确的命令建议:
464
- - "运行 `/adspecs-tasks` 重新生成 tasks.md 以修复覆盖缺口"
465
- - "运行 `/adspecs-clarify` 澄清欠明确的 PRD 条目"
466
- - "手动编辑 tasks.md 添加缺失的 `[TDD]` 测试任务"
467
- - "手动编辑系统设计文档修正消息码不一致"
468
-
469
- ### 8. 提供修复方案
470
-
471
- 询问用户:"是否需要我为前 N 个问题提供具体的修复编辑建议?"(切勿自动应用修复。)
472
-
473
- ### 9. 检查扩展钩子
474
-
475
- 在报告之后,检查项目根目录下是否存在 `.adspecs/extensions.yml` 文件。
476
-
477
- - 如果存在,读取该文件并查找 `hooks.after_analyze` 键下的条目。
478
- - 如果 YAML 无法解析或无效,则静默跳过钩子检查并继续正常流程。
479
- - 过滤掉 `enabled` 显式为 `false` 的钩子。将没有 `enabled` 字段的钩子默认为启用状态。
480
- - 对于每个剩余的钩子,**不要**尝试解释或评估钩子的 `condition` 表达式:
481
- - 如果钩子没有 `condition` 字段,或该字段为 null/空,则视为可执行钩子。
482
- - 如果钩子定义了非空的 `condition`,则跳过该钩子,将条件评估交由 HookExecutor 实现处理。
483
- - 从钩子命令名称构建斜杠命令时,将点号(`.`)替换为连字符(`-`)。例如,`adspecs.git.commit` → `/adspecs-git-commit`。
484
- - 对于每个可执行钩子,根据其 `optional` 标志输出以下内容:
485
- - **可选钩子**(`optional: true`):
486
-
487
- ```
488
- ## 扩展钩子
489
-
490
- **可选钩子**:{extension}
491
- 命令:`/{command}`
492
- 描述:{description}
493
-
494
- 提示:{prompt}
495
- 执行方式:`/{command}`
496
- ```
497
-
498
- - **强制钩子**(`optional: false`):
499
-
500
- ```
501
- ## 扩展钩子
502
-
503
- **自动钩子**:{extension}
504
- 正在执行:`/{command}`
505
- EXECUTE_COMMAND: {command}
506
- ```
507
-
508
- - 如果没有注册任何钩子,或 `.adspecs/extensions.yml` 不存在,则静默跳过。
509
-
510
- ---
511
-
512
- ## ECP 专项检测规则速查表
513
-
514
- > 以下 13 条规则是执行步骤 §4(检测扫描)的 G~M 维度的具体检测条款。每条规则对应一个 ID 前缀,出现在报告"发现清单"的 ID 列中。
515
-
516
- | ID 前缀 | 检测维度 | 检测规则 |
517
- | ------- | ------------------ | -------------------------------------------------------------------------------------------------------- |
518
- | G | **ECP 编码规范** | Entity/DTO/DAO/Service/Controller/Ro 描述中的父类/接口/注解是否正确(10 条逐条检查) |
519
- | G1 | ECP 编码规范 | Entity: `extends BaseEntity<T>`, `@TableName`, `@TableField`+`@Schema`, `IdType.ASSIGN_ID` |
520
- | G2 | ECP 编码规范 | DTO: `extends ReqeustCommonDataBean`, 校验分组, `@JSONField(format)`,消息码 `{port}_{table}_{三位序号}` |
521
- | G3 | ECP 编码规范 | DAO: `extends BaseCommonDAO_HI<T>`, `@Component`, XML 同包, `WHERE delete_flag=0` |
522
- | G4 | ECP 编码规范 | 任务描述中无 `QueryWrapper`/`LambdaQueryWrapper` 字样 |
523
- | G5 | ECP 编码规范 | Service: 接口 `II{Entity}`, 实现 `extends BaseCommonServer`, Save→FastJSON, Update→SpringBeanUtils |
524
- | G6 | ECP 编码规范 | Controller: `extends CommonAbstractService`, `@CheckToken`, `ResponseData<T>` 包装 |
525
- | G7 | ECP 编码规范 | Ro: `implements Serializable`, 手动字段, `@DateTimeFormat @JsonFormat` |
526
- | G8 | ECP 编码规范 | 异常: Service 层抛出, `ResponseMsgCode` 枚举禁止硬编码 |
527
- | G9 | ECP 编码规范 | i18n: 7 个 `.properties`(default/zh_CN/zh_TW/en_US/vi_VN/th_TH/hu_HU) |
528
- | G10 | ECP 编码规范 | 注入: `@Autowired`, FastJSON, Hutool, SLF4J |
529
- | H | **TDD 顺序** | 每个故事 Phase 内 `[TDD]` 任务必须在所有实现任务之前 |
530
- | H1 | TDD 顺序 | 第一个实现任务之前至少存在 1 个 `[TDD]` 任务 |
531
- | H2 | TDD 顺序 | 不存在实现任务在前、`[TDD]` 在后的排序错误 |
532
- | H3 | TDD 顺序 | `[TDD]` 任务覆盖正常/异常/边界三场景(对照系统设计 §12) |
533
- | I | **i18n 覆盖** | 7 个语言文件完整(default/zh_CN/zh_TW/en_US/vi_VN/th_TH/hu_HU) |
534
- | I1 | i18n 覆盖 | tasks 中 i18n 文件任务数 = 7 |
535
- | I2 | i18n 覆盖 | 系统设计 §7.3 中每个消息码在至少 1 个 i18n 任务中被覆盖 |
536
- | J | **三模块路径** | 文件路径从 `{port}-{service}-{layer}/` 开始,归属正确 |
537
- | J1 | 三模块路径 | Entity/DTO 不在错误模块(Entity 不在 -api,DTO 不在 -application) |
538
- | J2 | 三模块路径 | 路径格式完整(含包路径 `com/sie/gushen/{service}/`) |
539
- | K | **Feign 映射** | 系统设计 §10 外部依赖 → tasks 中 Feign Client 一一对应 |
540
- | K1 | Feign 映射 | 依赖数量 = Feign Client 任务数量 |
541
- | K2 | Feign 映射 | Feign Client 路径在 `-api/client/` 下 |
542
- | L | **Liquibase 覆盖** | 系统设计 §3.2 每张表 → DDL SQL 中有完整建表语句 |
543
- | L1 | Liquibase 覆盖 | 表数量匹配(系统设计 §2.2 实体数 = DDL 中表数) |
544
- | L2 | Liquibase 覆盖 | 索引数量匹配(系统设计 §2.2 索引数 = DDL 中索引数) |
545
- | L3 | Liquibase 覆盖 | 3 文件完整(master.xml + v1.0.xml + DDL.sql) |
546
- | M | **ECP 任务类型** | 枚举/消息码/Consumer/配置/工具类任务数匹配系统设计 |
547
- | M1 | ECP 任务类型 | 枚举数 = 系统设计 §6.1 中枚举数量 |
548
- | M2 | ECP 任务类型 | Consumer 数 = 系统设计 §9.2 中消费事件数量 |
549
- | M3 | ECP 任务类型 | 配置类覆盖:DataSourceConfig + MybatisPlusConfig + SpringDocConfig |
550
- | M4 | ECP 任务类型 | 工具类覆盖:系统设计 §4.5 引用的所有工具类 |
551
-
552
- ---
553
-
554
- ## 操作原则
555
-
556
- ### 上下文效率
557
-
558
- - **最少高信号令牌**:聚焦可操作的发现,而非详尽的文档
559
- - **渐进式披露**:增量加载产物;不要将所有内容倾泻到分析中
560
- - **令牌高效输出**:发现表最多 50 行;汇总溢出部分
561
- - **确定性结果**:无更改重新运行应产生一致的 ID 和计数
562
-
563
- ### 分析准则
564
-
565
- - **绝不修改文件**(此为只读分析)
566
- - **绝不虚构缺失的章节**(若缺失,如实报告)
567
- - **优先处理 ECP 编码规范违规和宪章冲突**(这些始终是 CRITICAL)
568
- - **使用 ECP 真实示例而非穷举规则**(引用具体 US-ID、Task ID、文件路径)
569
- - **优雅地报告零问题**(输出带有全链路覆盖统计的成功报告)
570
- - **三产物联动检测**:不孤立地分析单一文件,始终检查 PRD↔系统设计↔tasks 之间的 ID 追溯一致性
571
-
572
- ## 上下文
573
-
574
- $ARGUMENTS
1
+ ---
2
+ name: "adspecs-analyze"
3
+ description: "对 PRD、系统设计文档(_system-design.md)和 tasks.md 进行非破坏性的全链路一致性分析,项目规范以 docs/40-project_conventions/ 目录为准(由 /project-init 按技术栈生成)。"
4
+ agent_created: true
5
+ argument-hint: "指定功能名或系统设计文档路径,如 M06-01 或 docs/30-system-design/crm/M06-01-销售预测_system-design.md"
6
+ compatibility: "需要 docs/ 目录体系:docs/20-prd(PRD)+ docs/30-system-design(系统设计+tasks)+ docs/40-project_conventions/(项目规范,按技术栈由 /project-init 生成)"
7
+ metadata:
8
+ author: "qingwen"
9
+ source: "基于 adspecs-analyze 通用模板 + 全链路追溯 ID 体系 + 项目规范一致性检测改造"
10
+ user-invocable: true
11
+ disable-model-invocation: false
12
+ ---
13
+
14
+ ## 用户输入
15
+
16
+ ```text
17
+ $ARGUMENTS
18
+ ```
19
+
20
+ 在处理之前**必须**考虑用户输入(若不为空)。用户输入应为功能名称(如 `M06-01`)或系统设计文档路径。若为空则从上下文推导。
21
+
22
+ ## 执行前检查
23
+
24
+ **检查扩展钩子(分析前)**:
25
+
26
+ - 检查项目根目录下是否存在 `.adspecs/extensions.yml` 文件。
27
+ - 如果存在,读取该文件并查找 `hooks.before_analyze` 键下的条目。
28
+ - 如果 YAML 无法解析或无效,则静默跳过钩子检查并继续正常流程。
29
+ - 过滤掉 `enabled` 显式为 `false` 的钩子。将没有 `enabled` 字段的钩子默认为启用状态。
30
+ - 对于每个剩余的钩子,**不要**尝试解释或评估钩子的 `condition` 表达式:
31
+ - 如果钩子没有 `condition` 字段,或该字段为 null/空,则视为可执行钩子。
32
+ - 如果钩子定义了非空的 `condition`,则跳过该钩子,将条件评估交由 HookExecutor 实现处理。
33
+ - 从钩子命令名称构建斜杠命令时,将点号(`.`)替换为连字符(`-`)。例如,`adspecs.git.commit` → `/adspecs-git-commit`。
34
+ - 对于每个可执行钩子,根据其 `optional` 标志输出以下内容:
35
+ - **可选钩子**(`optional: true`):
36
+
37
+ ```
38
+ ## 扩展钩子
39
+
40
+ **可选前置钩子**:{extension}
41
+ 命令:`/{command}`
42
+ 描述:{description}
43
+
44
+ 提示:{prompt}
45
+ 执行方式:`/{command}`
46
+ ```
47
+
48
+ - **强制钩子**(`optional: false`):
49
+
50
+ ```
51
+ ## 扩展钩子
52
+
53
+ **自动前置钩子**:{extension}
54
+ 正在执行:`/{command}`
55
+ EXECUTE_COMMAND: {command}
56
+
57
+ 等待钩子命令执行结果后再继续进入目标阶段。
58
+ ```
59
+
60
+ - 如果没有注册任何钩子,或 `.adspecs/extensions.yml` 不存在,则静默跳过。
61
+
62
+ ## 目标
63
+
64
+ 在实现之前,识别项目三大核心产物——**PRD(需求规格说明书)**、**系统设计文档(\_system-design.md)**、**tasks.md**——之间的不一致、重复、歧义、欠明确项及**项目规范违反**。此命令**必须**仅在 `/adspecs-tasks` 成功产出完整的 `tasks.md` 之后运行。
65
+
66
+ **产物定位**(实际目录以 `.adspecs/paths.json` 配置为准,默认为 `docs/20-prd` 与 `docs/30-system-design`):
67
+
68
+ | 产物 | 路径模式 | 负责 Skill | 关键 ID 体系 |
69
+ | --------------------- | ------------------------------------------------------------ | ---------------- | ------------------------------------------------------------- |
70
+ | **PRD(需求规格说明书)** | `{PRD_DIR}/{模块}/` | `/adspecs-prd` | US-###, BR-###, PERM-###(PRD 阶段赋予) |
71
+ | **系统设计文档** | `{DESIGN_DIR}/{模块}/{功能名}_system-design.md` | `/adspecs-plan` | FUNC-###, PERM-###(需求分析阶段 AI 赋予)+ 13 章统一 OOA+OOD |
72
+ | **tasks.md** | `{DESIGN_DIR}/{模块}/{功能名}_tasks.md` | `/adspecs-tasks` | T### 全局任务 ID + `[TDD]` 标记 + `[US#]` 故事标签 |
73
+
74
+ ## 操作约束
75
+
76
+ **严格只读**:**不**修改任何文件。输出结构化的分析报告。提供可选的修复方案(用户必须明确批准后,方可手动调用后续编辑命令)。
77
+
78
+ **项目规范权威**:项目编码规范存放于项目根目录 `docs/40-project_conventions/` 下,由 `/project-init` 按所选技术栈生成(不同技术栈规范不同)。后端规范入口为 `docs/40-project_conventions/end-integration/index.md`,其约定在此分析范围内是**不可协商的 MUST 原则**。任何违反项目规范的设计或任务均自动视为 **CRITICAL**。
79
+
80
+ - 若该目录不存在或 `index.md` 缺失,**中止执行**并提示用户先运行 `/project-init` 选择技术栈。
81
+ - 具体基类、注解、命名、响应包装、异常处理、DB 迁移、模块路径规则等内容**以运行时加载的规范文件为准,禁止凭记忆硬编码**。
82
+ - 若规范本身需要更改,必须通过独立的、显式的规范更新流程(如 `/project-init` 的 40-project_conventions 更新检查)完成。
83
+
84
+ ## 执行步骤
85
+
86
+ ### 1. 定位三产物
87
+
88
+ `$ARGUMENTS` 或上下文推导三产物路径(`{PRD_DIR}` / `{DESIGN_DIR}` 以 `.adspecs/paths.json` 为准,默认为 `docs/20-prd` / `docs/30-system-design`):
89
+
90
+ **方式 A:从 $ARGUMENTS 直接指定**
91
+
92
+ - 若用户提供了功能名(如 `M06-01`)→ 搜索 `{DESIGN_DIR}/{模块}/M06-01*_system-design.md` 和 `{DESIGN_DIR}/{模块}/M06-01*_tasks.md`
93
+ - 若用户提供了完整路径(如 `docs/30-system-design/crm/M06-01-销售预测_system-design.md`)→ 直接使用
94
+
95
+ **方式 B:从上下文推导**
96
+
97
+ - 搜索 `{DESIGN_DIR}/` 下最新修改的 `*_system-design.md`
98
+ - 搜索同目录下对应的 `*_tasks.md`
99
+ - 从系统设计文档 §1.1 定位关联的 PRD 文件路径
100
+
101
+ **必须定位的三文件**:
102
+
103
+ - **PRD**:`{PRD_DIR}/{模块}/` 下的需求规格说明书(含 US-###/BR-###)
104
+ - **SYSTEM_DESIGN**:`{DESIGN_DIR}/{模块}/{功能名}_system-design.md`
105
+ - **TASKS**:`{DESIGN_DIR}/{模块}/{功能名}_tasks.md`
106
+
107
+ 若任意文件缺失,则终止并提示用户运行对应的前置命令(如 `/adspecs-plan` 或 `/adspecs-tasks`)。
108
+
109
+ ### 2. 加载产物与项目规范(渐进式披露)
110
+
111
+ 仅加载每个产物中最低限度的必要上下文。
112
+
113
+ **从 PRD 加载:**
114
+
115
+ - §2.1 用户故事(US-### + 优先级 + 验收场景)
116
+ - §3.2 业务规则(BR-### + 规则简述)
117
+ - §4.1 功能清单(功能编号 → 与系统设计 FUNC-### 关联)
118
+ - §5.1 权限矩阵(权限标识 → 角色 → 与系统设计 §5.4 关联)
119
+ - §6.1 验收标准(归约到 US/BR ID)
120
+
121
+ **从系统设计加载:**
122
+
123
+ - §1.1 需求 ID 映射(4 张表:用户故事映射 / 业务规则映射 / 功能条目映射 / 权限映射)
124
+ - §2.2 实体清单(Entity 完整字段 + 注解要求)
125
+ - §2.3 DTO 清单(DTO 字段 + 校验规则 + 分组)
126
+ - §2.4 Ro 清单(Ro 字段)
127
+ - §3.2 数据库表设计(表的 DDL 约束)
128
+ - §3.3 ORM 映射(DAO 接口 + 映射文件结构)
129
+ - §4.1 业务行为清单(行为 + 触发方 + 前置/后置条件)
130
+ - §4.4 Service 接口设计(方法签名 + 事务边界)
131
+ - §5.1 端点清单(HTTP + 路径 + 请求/响应包装)
132
+ - §5.4 权限矩阵(接口 → 权限要求)
133
+ - §6.1 枚举定义(每个枚举的值 + 编码)
134
+ - §7.1 业务异常清单(消息码 + 触发条件 + 抛出位置)
135
+ - §7.3 消息码汇总(properties 内容)
136
+ - §9 领域事件(发布/消费事件)
137
+ - §10 跨模块依赖(远程调用契约)
138
+ - §13 附录代码结构(文件目录树)
139
+
140
+ **从 tasks.md 加载:**
141
+
142
+ - 文件路径速查表(所有目标文件路径)
143
+ - Phase 结构(阶段号 → 故事/基础设施/收尾)
144
+ - Task ID(T001~TNNN)+ `[P]` 标记 + `[TDD]` 标记 + `[US#]` 标签
145
+ - 每个任务的精确文件路径
146
+ - 项目规范检查清单(逐项确认状态,如有)
147
+ - 依赖关系与执行顺序
148
+ - TDD 执行指南(RED→GREEN→REFACTOR)
149
+
150
+ **从项目规范加载(必选):**
151
+
152
+ 1. 读取 `docs/40-project_conventions/end-integration/index.md`
153
+ 2. 按 `index.md` 中"推荐读取顺序"依次加载所有关联规范文件
154
+ 3. 重点提取:基类/注解/命名规范、响应包装、异常处理、DB 迁移、i18n、模块结构与路径规则、外部依赖调用方式
155
+ 4. 后续所有一致性判断(任务描述中的基类、注解、命名、路径、包装、异常、迁移格式等)均以该规范为准
156
+ 5. 如该目录不存在或 `index.md` 缺失,中止执行并提示先运行 `/project-init` 选择技术栈
157
+
158
+ ### 3. 构建语义模型
159
+
160
+ 创建内部表示(切勿将原始产物包含在输出中):
161
+
162
+ #### 3.1 全链路 ID 模型
163
+
164
+ 从系统设计 §1.1 4 张映射表一次性提取所有可追溯 ID:
165
+
166
+ | ID 类型 | 来源 | 含义 | 设计文档映射 | tasks 映射 |
167
+ | ------------ | --------------- | -------- | ------------------------------------------- | -------------------------------- |
168
+ | **US-###** | PRD §2.1 | 用户故事 | 系统设计 §1.1.1 | tasks Phase 3~10 的 `[US#]` 标签 |
169
+ | **BR-###** | PRD §3.2 | 业务规则 | 系统设计 §1.1.2 → §4 Service 方法 → §7 异常 | tasks 中校验/异常相关实现任务 |
170
+ | **FUNC-###** | 系统设计 §1.1.3 | 功能条目 | 系统设计 §5.1 端点 | tasks 中 Controller 端点任务 |
171
+ | **PERM-###** | 系统设计 §1.1.4 | 权限标识 | 系统设计 §5.4 权限矩阵 | tasks 中认证/权限配置任务 |
172
+
173
+ #### 3.2 任务类型模型
174
+
175
+ 将 tasks 中的每个任务按类型分类(具体类型集合以运行时加载的项目规范为准,以下为通用参考):
176
+
177
+ ```
178
+ Entity | DTO | Ro | DAO接口 | DAO XML | Service接口 | Service实现 | Controller | 远程客户端 | 枚举 | 消息码常量 | 消费者/监听 | i18n | DB迁移 | 配置类 | 工具类 | 测试
179
+ ```
180
+
181
+ #### 3.3 TDD 标记模型
182
+
183
+ 提取每个故事阶段内的 `[TDD]` 标记位置和数量:
184
+
185
+ - 每个 `[Story]` 阶段的第一个 `[TDD]` 任务索引
186
+ - `[TDD]` 任务总数 vs 该阶段实现任务总数
187
+ - 场景覆盖(正常 / 异常 / 边界)
188
+
189
+ ### 4. 检测扫描(令牌高效分析)
190
+
191
+ 聚焦高信号发现。限制最多 50 条发现;超出部分在溢出摘要中汇总。
192
+
193
+ ---
194
+
195
+ #### A. 重复检测
196
+
197
+ - 识别 PRD/系统设计/tasks 中近似重复的 US/BR/FUNC 描述
198
+ - 标记表述较差者,建议合并
199
+
200
+ #### B. 歧义检测
201
+
202
+ - 标记缺乏可度量标准的模糊形容词(快速、可扩展、安全、直观、健壮)
203
+ - 标记未解决的占位符(TODO、TKTK、???、`<placeholder>` 等)
204
+ - 标记 PRD 中 "待后续版本补充" 但系统设计仍缺少的设计元素
205
+
206
+ #### C. 欠明确性检测
207
+
208
+ - BR 规则在系统设计 §4 中缺少对应 Service 方法
209
+ - US 故事在 tasks 中缺少完整的 Phase
210
+ - 系统设计实体字段在 tasks Entity 任务中未完整列出
211
+
212
+ #### D. 项目规范一致性
213
+
214
+ > **来源**:`docs/40-project_conventions/` 下运行时加载的项目规范(后端入口 `end-integration/index.md`)。**违反任意一条 MUST 规则 = CRITICAL**。具体基类/注解/命名/格式以加载的规范为准,禁止凭记忆判断。
215
+
216
+ 逐条检测 tasks.md 和系统设计 §13 中的文件/描述是否合规:
217
+
218
+ | # | 校验维度 | 检测方式(按加载的项目规范核对) |
219
+ | --- | -------------- | ------------------------------------------------------------ |
220
+ | 1 | Entity 规范 | 基类继承、表名注解、主键策略、审计字段继承是否与规范一致 |
221
+ | 2 | DTO 规范 | 基类继承、校验分组、日期格式注解、消息码格式是否与规范一致 |
222
+ | 3 | DAO 规范 | 基类继承、ORM 映射文件位置、软删除过滤是否与规范一致 |
223
+ | 4 | 数据访问约束 | 任务描述中是否出现规范禁止的数据访问方式 |
224
+ | 5 | Service 规范 | 接口/实现命名、对象转换策略、软删除、分页排序是否与规范一致 |
225
+ | 6 | Controller 规范 | 基类继承、认证注解、标准端点路径、请求/响应包装是否与规范一致 |
226
+ | 7 | Ro(只读视图) | 序列化接口、字段声明方式、日期注解是否与规范一致 |
227
+ | 8 | 异常处理 | 异常抛出位置、消息码枚举使用、禁止硬编码字符串是否与规范一致 |
228
+ | 9 | i18n 规范 | 语言文件数量、命名、内容要求是否与规范一致 |
229
+ | 10 | 注入与工具 | DI 方式、序列化工具、工具类选型、日志框架是否与规范一致 |
230
+
231
+ #### E. 覆盖缺口
232
+
233
+ - 每个 US 故事是否在 tasks 中有对应的 Phase
234
+ - 每个 BR 规则是否在 tasks 中有对应的实现任务
235
+ - 每个 FUNC 功能是否在 tasks 中有对应的 Controller 端点任务
236
+ - 每个 PERM 权限是否在 tasks 中有对应的认证/权限配置任务
237
+ - 系统设计 §10 中每个外部依赖是否在 tasks 中有对应远程调用客户端任务
238
+ - 系统设计 §6.1 中每个枚举是否在 tasks 基础阶段中有独立任务
239
+ - 系统设计 §9.1/§9.2 中每个事件是否在 tasks 中有对应消费者或通知任务
240
+ - 系统设计 §12 中每个测试场景是否有对应的 `[TDD]` 任务
241
+
242
+ #### F. 不一致性
243
+
244
+ - 术语漂移(同一概念在不同文件中命名不一致)
245
+ - 消息码不匹配(系统设计 §7.3 定义的码 vs tasks 中引用的码)
246
+ - 文件路径漂移(系统设计 §13 目录树 vs tasks 文件路径速查表)
247
+ - 用户故事优先级漂移(PRD P1/P2 vs tasks Phase 排列顺序)
248
+ - 行为数量不一致(系统设计 §4.1 定义的行为数 vs tasks 中对应 Service 方法数量)
249
+
250
+ ---
251
+
252
+ #### G. 项目规范语义一致性(新增)
253
+
254
+ > 此维度在 D 基础上做更细粒度的语义检查,全部以运行时加载的项目规范为唯一依据。
255
+
256
+ - 任务描述中的基类/父类拼写是否正确(按规范核对,勿凭记忆)
257
+ - Entity 任务是否声明"审计字段继承不重复"(如规范要求)
258
+ - ORM 映射任务是否声明 `resultMap` 含全字段+审计(如规范要求)
259
+ - Service 任务是否区分新增/修改的对象转换策略(按规范要求的工具)
260
+ - 任务描述中是否使用了规范禁止的数据访问 API 或工具
261
+
262
+ #### H. TDD 顺序一致性(新增)
263
+
264
+ - 每个 `[US#]` Phase 内,第一个任务是否带有 `[TDD]` 标记
265
+ - 每个故事内是否存在无对应 `[TDD]` 测试的实现任务
266
+ - 是否存在 `[TDD]` 任务位于实现任务**之后**的情况(违反 TDD 铁律)
267
+ - `[TDD]` 任务粒度:是否为每个 Service 方法的正常/异常/边界场景都配置了测试任务(对照系统设计 §12 的三个测试场景表)
268
+
269
+ #### I. i18n 覆盖完整性(新增)
270
+
271
+ - tasks.md 收尾阶段是否包含**规范要求数量**的 i18n 文件任务(具体数量/语言/命名以规范为准)
272
+ - 语言覆盖:是否包含规范要求的所有语言(如 default / zh_CN / en_US ...)
273
+ - 消息码覆盖:系统设计 §7.3 中的消息码是否在至少 1 个 i18n 文件任务中提到
274
+ - 文件命名格式:是否符合规范约定的命名规则
275
+
276
+ #### J. 模块路径精度(新增)
277
+
278
+ - tasks.md 中每个文件路径是否遵循规范定义的模块/分层目录结构
279
+ - 文件所在模块是否与其类型匹配(以规范为准,如 Entity→数据层、DTO→契约层、Service/Controller→实现层、i18n→资源目录等)
280
+ - 路径格式完整(含规范要求的包路径)
281
+
282
+ #### K. 外部依赖映射完整性(新增)
283
+
284
+ - 系统设计 §10 列出 N 个外部依赖 → tasks 中是否有 N 个对应远程调用客户端任务(Feign Client / HTTP Client 等,以规范为准)
285
+ - 每个客户端任务的文件路径是否为规范指定的目录
286
+ - 客户端接口路径/方法签名是否与系统设计 §10 中的契约一致
287
+
288
+ #### L. DB 迁移覆盖完整性(新增)
289
+
290
+ - 系统设计 §3.2 定义 N 张表 → tasks 中 DB 迁移 DDL 是否覆盖全部表
291
+ - 索引覆盖:系统设计 §3.2 定义的所有索引是否在 DDL 中
292
+ - 迁移文件结构是否完整(changelog/迁移入口/DDL 文件名等以规范为准)
293
+
294
+ #### M. 专项任务类型覆盖(新增)
295
+
296
+ - 枚举类数量:系统设计 §6.1 定义 N 个枚举 → tasks 基础阶段是否有 N 个枚举任务
297
+ - 消息码常量:系统设计 §7 定义消息码 → tasks 是否有对应消息码常量任务(如规范要求)
298
+ - 消费者/监听:系统设计 §9 定义的消费事件 → tasks 是否有对应消费者任务
299
+ - 配置类:系统设计 §8 缓存策略/并发控制等 → tasks 是否有对应配置任务
300
+ - 工具类:系统设计 §4 引用的工具类 tasks 是否有对应工具类任务
301
+
302
+ ---
303
+
304
+ ### 5. 严重级别分配
305
+
306
+ 使用以下启发式规则对发现进行优先级排序:
307
+
308
+ - **CRITICAL**:
309
+ - 违反项目规范任一条 MUST 规则(以 `docs/40-project_conventions/` 加载的规范为准)
310
+ - 核心产物缺失(PRD/系统设计/tasks 三缺一)
311
+ - US 故事零覆盖(tasks 中无对应 Phase)
312
+ - 所有端点缺失认证/权限注解(按规范要求的认证机制)
313
+ - i18n 文件任务数 ≠ 规范要求数量
314
+ - 违反 TDD 铁律(实现任务在 `[TDD]` 测试之前)
315
+ - **HIGH**:
316
+ - BR 业务规则在 tasks 中无对应实现
317
+ - 系统设计 §10 外部依赖在 tasks 中无对应远程调用客户端
318
+ - 消息码不匹配(不同文件中同一概念码不同)
319
+ - 校验字段消息码格式错误(非规范约定格式)
320
+ - 文件路径模块归属错误
321
+ - **MEDIUM**:
322
+ - 术语漂移(同一概念在不同文件中命名不一致)
323
+ - 单个枚举漏覆盖(如 6/7 通过)
324
+ - 测试场景覆盖不完整(只覆盖正常场景,缺异常/边界)
325
+ - 欠明确的边界情况
326
+ - **LOW**:
327
+ - 风格/措辞改进(任务描述可更精确)
328
+ - 不影响执行顺序的轻微冗余
329
+ - 非关键的命名不一致
330
+
331
+ ### 6. 生成一致性分析报告
332
+
333
+ 输出 Markdown 报告(不写文件),结构如下:
334
+
335
+ ---
336
+
337
+ ## 全链路一致性分析报告
338
+
339
+ ### 分析概要
340
+
341
+ | 指标 | 数值 |
342
+ | ------------- | ---------------- |
343
+ | 分析功能 | [功能名称] |
344
+ | PRD 路径 | [PRD 文件路径] |
345
+ | 系统设计路径 | [设计文档路径] |
346
+ | tasks.md 路径 | [tasks 文件路径] |
347
+ | 项目规范来源 | [规范文件路径] |
348
+ | 分析时间 | [时间戳] |
349
+
350
+ ### 全链路追溯矩阵
351
+
352
+ | US ID | 优先级 | BR ID | FUNC ID | PERM ID | Task Phase | Task IDs | 覆盖状态 |
353
+ | ----- | ------ | ----------------- | --------------- | --------------- | ---------- | --------- | :------: |
354
+ | US-01 | P1 | BR-01,BR-02,BR-14 | FUNC-03,FUNC-05 | PERM-01,PERM-02 | Phase 3 | T022~T034 ||
355
+ | US-02 | P1 | | FUNC-11,FUNC-12 | PERM-07,PERM-08 | Phase 4 | T035~T041 ||
356
+ | ... | ... | ... | ... | ... | ... | ... | ... |
357
+
358
+ ### 项目规范合规检查
359
+
360
+ > 依据 `docs/40-project_conventions/` 下加载的规范逐项核对。
361
+
362
+ | # | 规范维度 | 检测结果 | 发现 |
363
+ | --- | --------------- | :------: | ---------- |
364
+ | 1 | Entity 规范 | ✅ / ❌ | [具体发现] |
365
+ | 2 | DTO 规范 | ✅ / ❌ | [具体发现] |
366
+ | 3 | DAO 规范 | ✅ / ❌ | [具体发现] |
367
+ | 4 | 数据访问约束 | ✅ / ❌ | [具体发现] |
368
+ | 5 | Service 规范 | ✅ / ❌ | [具体发现] |
369
+ | 6 | Controller 规范 | ✅ / ❌ | [具体发现] |
370
+ | 7 | Ro 规范 | ✅ / ❌ | [具体发现] |
371
+ | 8 | 异常处理规范 | ✅ / ❌ | [具体发现] |
372
+ | 9 | i18n 规范 | ✅ / ❌ | [具体发现] |
373
+ | 10 | 注入与工具规范 | ✅ / ❌ | [具体发现] |
374
+
375
+ ### TDD 健康度评分
376
+
377
+ | 故事阶段 | [TDD] 任务数 | 实现任务数 | 先行率 | 场景覆盖(正常/异常/边界) | 评分 |
378
+ | ------------------ | ------------ | ---------- | ----------- | -------------------------- | :--: |
379
+ | Phase 3 (US-01) | 5 | 8 | ✅ 5/5 先行 | 3/3 全场景 | 🟢 |
380
+ | Phase 4 (US-02) | 4 | 3 | ✅ 4/4 先行 | 3/3 全场景 | 🟢 |
381
+ | ... | ... | ... | ... | ... | ... |
382
+ | **全局** | **23** | **33** | **100%** | **85%** | 🟢 |
383
+
384
+ ### 文件路径校验表
385
+
386
+ | 文件 | 期望模块(按规范) | 实际路径模块 | 归属正确? |
387
+ | ------------------------- | ------------------ | ------------ | :--------: |
388
+ | [Entity 文件].java | [数据层模块] | [数据层模块] | ✅ |
389
+ | [DTO 文件].java | [契约层模块] | [契约层模块] | ✅ |
390
+ | [Service 文件].java | [实现层模块] | [实现层模块] ||
391
+ | ... | ... | ... | ... |
392
+
393
+ ### 发现清单
394
+
395
+ | ID | 类别 | 严重级别 | 位置 | 摘要 | 修复建议 |
396
+ | --- | ------- | -------- | ------------- | ---- | -------- |
397
+ | G1 | 规范违反 | CRITICAL | tasks.md:Lxxx | ... | ... |
398
+ | H2 | TDD顺序 | CRITICAL | tasks.md:Lxxx | ... | ... |
399
+ | ... | ... | ... | ... | ... | ... |
400
+
401
+ **覆盖摘要表:**
402
+
403
+ | 需求标识 | 类型 | 是否有任务? | Task IDs | 备注 |
404
+ | -------- | -------- | :----------: | --------- | --------------------------- |
405
+ | US-01 | 用户故事 | ✅ | T022~T034 | Phase 3 |
406
+ | BR-01 | 业务规则 | ✅ | T032 | Service.submitForecastOrder |
407
+ | FUNC-03 | 功能条目 | ✅ | T032,T033 | Controller.save+Service |
408
+ | PERM-01 | 权限 || T033 | 认证/权限配置 |
409
+ | ... | ... | ... | ... | ... |
410
+
411
+ **外部依赖映射表:**
412
+
413
+ | 外部依赖(系统设计 §10) | 客户端任务 | 模块 | 路径正确? |
414
+ | ------------------------ | ------------- | ---- | :--------: |
415
+ | [依赖名称] | [客户端任务] | [模块] | ✅ |
416
+ | ... | ... | ... | ... |
417
+
418
+ **i18n 覆盖表:**
419
+
420
+ | 语言文件(按规范) | 任务 ID | 消息码覆盖数 |
421
+ | ------------------ | ------- | ------------ |
422
+ | [语言文件 1] | T084 | 19/19 ✅ |
423
+ | ... | ... | ... |
424
+
425
+ **未映射任务:**(若有)
426
+
427
+ **指标汇总:**
428
+
429
+ - 用户故事总数:10
430
+ - 业务规则总数:14
431
+ - 功能条目总数:21
432
+ - 权限标识总数:13
433
+ - 任务总数:95
434
+ - 全链路覆盖率:XX%(至少关联 1 个任务的需求占比)
435
+ - 歧义数量:X
436
+ - 重复数量:X
437
+ - CRITICAL 问题数量:X
438
+ - 项目规范违规数量:X
439
+ - TDD 先行率:XX%
440
+ - i18n 覆盖完整性:X/规范要求数
441
+
442
+ ---
443
+
444
+ ### 7. 提供后续行动
445
+
446
+ 在报告末尾输出简洁的后续行动块:
447
+
448
+ - 若存在 **CRITICAL** 问题:建议在 `/adspecs-implement` 或 `/adspecs-tasks` 迭代之前解决。禁止进入实现阶段。
449
+ - 若存在 **HIGH** 问题:强烈建议在实现前修复,否则可能存在功能缺失。
450
+ - 若仅有 **LOW/MEDIUM**:用户可以继续实现,但提供改进建议。
451
+ - 提供明确的命令建议:
452
+ - "运行 `/adspecs-tasks` 重新生成 tasks.md 以修复覆盖缺口"
453
+ - "运行 `/adspecs-clarify` 澄清欠明确的 PRD 条目"
454
+ - "手动编辑 tasks.md 添加缺失的 `[TDD]` 测试任务"
455
+ - "手动编辑系统设计文档修正消息码不一致"
456
+
457
+ ### 8. 提供修复方案
458
+
459
+ 询问用户:"是否需要我为前 N 个问题提供具体的修复编辑建议?"(切勿自动应用修复。)
460
+
461
+ ### 9. 检查扩展钩子
462
+
463
+ 在报告之后,检查项目根目录下是否存在 `.adspecs/extensions.yml` 文件。
464
+
465
+ - 如果存在,读取该文件并查找 `hooks.after_analyze` 键下的条目。
466
+ - 如果 YAML 无法解析或无效,则静默跳过钩子检查并继续正常流程。
467
+ - 过滤掉 `enabled` 显式为 `false` 的钩子。将没有 `enabled` 字段的钩子默认为启用状态。
468
+ - 对于每个剩余的钩子,**不要**尝试解释或评估钩子的 `condition` 表达式:
469
+ - 如果钩子没有 `condition` 字段,或该字段为 null/空,则视为可执行钩子。
470
+ - 如果钩子定义了非空的 `condition`,则跳过该钩子,将条件评估交由 HookExecutor 实现处理。
471
+ - 从钩子命令名称构建斜杠命令时,将点号(`.`)替换为连字符(`-`)。例如,`adspecs.git.commit` → `/adspecs-git-commit`。
472
+ - 对于每个可执行钩子,根据其 `optional` 标志输出以下内容:
473
+ - **可选钩子**(`optional: true`):
474
+
475
+ ```
476
+ ## 扩展钩子
477
+
478
+ **可选钩子**:{extension}
479
+ 命令:`/{command}`
480
+ 描述:{description}
481
+
482
+ 提示:{prompt}
483
+ 执行方式:`/{command}`
484
+ ```
485
+
486
+ - **强制钩子**(`optional: false`):
487
+
488
+ ```
489
+ ## 扩展钩子
490
+
491
+ **自动钩子**:{extension}
492
+ 正在执行:`/{command}`
493
+ EXECUTE_COMMAND: {command}
494
+ ```
495
+
496
+ - 如果没有注册任何钩子,或 `.adspecs/extensions.yml` 不存在,则静默跳过。
497
+
498
+ ---
499
+
500
+ ## 项目规范专项检测规则速查表
501
+
502
+ > 以下 G~M 维度是执行步骤 §4(检测扫描)的具体检测条款。每条规则对应一个 ID 前缀,出现在报告"发现清单"的 ID 列中。
503
+ > **所有具体类名、注解、文件名、数量、路径均以 `docs/40-project_conventions/` 下运行时加载的规范为准,下表仅描述通用检测意图。**
504
+
505
+ | ID 前缀 | 检测维度 | 检测规则(按项目规范核对) |
506
+ | ------- | -------------- | ----------------------------------------------------------------------------------- |
507
+ | G | **编码规范** | Entity/DTO/DAO/Service/Controller/Ro 描述中的基类/接口/注解是否正确(10 条逐条检查) |
508
+ | G1 | 编码规范 | Entity: 基类继承、表名注解、主键策略、审计字段(按规范) |
509
+ | G2 | 编码规范 | DTO: 基类继承、校验分组、日期格式注解、消息码格式(按规范) |
510
+ | G3 | 编码规范 | DAO: 基类继承、映射文件位置、软删除过滤(按规范) |
511
+ | G4 | 编码规范 | 任务描述中无规范禁止的数据访问 API/工具字样 |
512
+ | G5 | 编码规范 | Service: 接口/实现命名、对象转换策略、分页排序(按规范) |
513
+ | G6 | 编码规范 | Controller: 基类继承、认证注解、标准端点路径、响应包装(按规范) |
514
+ | G7 | 编码规范 | Ro: 序列化接口、字段声明方式、日期注解(按规范) |
515
+ | G8 | 编码规范 | 异常: Service 层抛出、消息码枚举、禁止硬编码字符串(按规范) |
516
+ | G9 | 编码规范 | i18n: 语言文件数量、命名、内容要求(按规范) |
517
+ | G10 | 编码规范 | 注入: DI 方式、序列化工具、工具类选型、日志框架(按规范) |
518
+ | H | **TDD 顺序** | 每个故事 Phase 内 `[TDD]` 任务必须在所有实现任务之前 |
519
+ | H1 | TDD 顺序 | 第一个实现任务之前至少存在 1 `[TDD]` 任务 |
520
+ | H2 | TDD 顺序 | 不存在实现任务在前、`[TDD]` 在后的排序错误 |
521
+ | H3 | TDD 顺序 | `[TDD]` 任务覆盖正常/异常/边界三场景(对照系统设计 §12) |
522
+ | I | **i18n 覆盖** | 规范要求的语言文件完整 |
523
+ | I1 | i18n 覆盖 | tasks i18n 文件任务数 = 规范要求数量 |
524
+ | I2 | i18n 覆盖 | 系统设计 §7.3 中每个消息码在至少 1 i18n 任务中被覆盖 |
525
+ | J | **模块路径** | 文件路径遵循规范定义的模块/分层结构,归属正确 |
526
+ | J1 | 模块路径 | 各类型文件不在错误模块(按规范分层归属) |
527
+ | J2 | 模块路径 | 路径格式完整(含规范要求的包路径) |
528
+ | K | **外部依赖** | 系统设计 §10 外部依赖 tasks 中远程调用客户端一一对应(按规范) |
529
+ | K1 | 外部依赖 | 依赖数量 = 客户端任务数量 |
530
+ | K2 | 外部依赖 | 客户端文件路径在规范指定目录下 |
531
+ | L | **DB 迁移** | 系统设计 §3.2 每张表 → DDL/迁移脚本中有完整建表语句 |
532
+ | L1 | DB 迁移 | 表数量匹配(系统设计 §2.2 实体数 = 迁移中表数) |
533
+ | L2 | DB 迁移 | 索引数量匹配(系统设计 §2.2 索引数 = 迁移中索引数) |
534
+ | L3 | DB 迁移 | 迁移文件结构完整(changelog/入口/DDL 文件名按规范) |
535
+ | M | **专项任务** | 枚举/消息码/消费者/配置/工具类任务数匹配系统设计 |
536
+ | M1 | 专项任务 | 枚举数 = 系统设计 §6.1 中枚举数量 |
537
+ | M2 | 专项任务 | 消费者数 = 系统设计 §9.2 中消费事件数量 |
538
+ | M3 | 专项任务 | 配置类覆盖:系统设计 §8 引用的缓存/并发等配置 |
539
+ | M4 | 专项任务 | 工具类覆盖:系统设计 §4 引用的所有工具类 |
540
+
541
+ ---
542
+
543
+ ## 操作原则
544
+
545
+ ### 上下文效率
546
+
547
+ - **最少高信号令牌**:聚焦可操作的发现,而非详尽的文档
548
+ - **渐进式披露**:增量加载产物;不要将所有内容倾泻到分析中
549
+ - **令牌高效输出**:发现表最多 50 行;汇总溢出部分
550
+ - **确定性结果**:无更改重新运行应产生一致的 ID 和计数
551
+
552
+ ### 分析准则
553
+
554
+ - **绝不修改文件**(此为只读分析)
555
+ - **绝不虚构缺失的章节**(若缺失,如实报告)
556
+ - **优先处理项目规范违规**(以 `docs/40-project_conventions/` 加载的规范为准,这些始终是 CRITICAL)
557
+ - **规范核对以运行时加载为准**:任务描述中的基类、注解、命名、路径等判断,一律对照规范文件原文,禁止凭记忆硬编码
558
+ - **使用真实示例而非穷举规则**(引用具体 US-ID、Task ID、文件路径)
559
+ - **优雅地报告零问题**(输出带有全链路覆盖统计的成功报告)
560
+ - **三产物联动检测**:不孤立地分析单一文件,始终检查 PRD↔系统设计↔tasks 之间的 ID 追溯一致性
561
+
562
+ ## 上下文
563
+
564
+ $ARGUMENTS