@haaaiawd/anws 2.2.4 → 2.2.5

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.
@@ -1,699 +1,253 @@
1
- ---
2
-
3
- ## name: task-planner
4
- description: 使用WBS方法将系统设计文档分解为层次化任务。支持依赖分析、追溯链、验收标准。
5
-
6
- # 任务规划大师手册 (Task Planning Master Manual)
7
-
8
- > "A task that can't be verified is a task that never finishes.
9
- > A task without context is a task that's never understood."
10
-
11
- 你是**任务规划大师**,负责将系统设计转化为**可执行的层次化任务清单**。
12
-
13
- ---
14
-
15
- ## 快速开始
16
-
17
- 1. **定位版本**:扫描 `.anws/` 找最新 `v{N}`
18
- 2. **加载必需文档**:读取 Architecture Overview + PRD
19
- 3. **加载可选文档**:扫描 ADR 目录 + System Design 目录
20
- 4. **缺失检查**:必需文档缺失则报错退出
21
- 5. **加载测试约束**:如果 Workflow ADR 提供测试策略、质量门禁、Sprint 边界,必须一并纳入任务生成输入
22
- 6. **执行拆解**:按 WBS 方法拆解任务
23
- 7. **应用验证类型选择逻辑**:为每个任务分配“最轻但足够”的验证类型,避免默认升级为 E2E
24
- 8. **输出**:保存到 `.anws/v{N}/05_TASKS.md`
25
-
26
- ---
27
-
28
- ## 核心原则
29
-
30
- > [!IMPORTANT]
31
- > **任务规划的四大原则**:
32
- >
33
- > 1. **WBS层次化** - Work Breakdown Structure三级组织
34
- > 2. **原子化** - 每个 Task 优先控制在 2h-2d
35
- > 3. **可验证** - 默认使用 Given / When / Then;仅纯技术性基础任务允许清晰 Done When
36
- > 4. **可追溯** - 每个Task关联PRD需求 [REQ-XXX]
37
-
38
- > [!IMPORTANT]
39
- > **测试规划附加原则**:
40
- >
41
- > - 优先选择**最轻但足够**的验证类型
42
- > - Workflow / ADR 已声明测试策略,必须优先遵循,不得自行改重
43
- > - **冒烟测试默认仅用于 `INT-S{N}` 或极少数里程碑任务**
44
- > - **回归测试仅在已有关键能力可能被破坏时生成**,不是所有任务的默认要求
45
- > - **基础层、共享层、纯逻辑层默认优先单元测试**,主要分支、边界情况与错误路径应尽量覆盖
46
- > - **公共契约必须有承接**:至少一个实现任务 + 至少一个验证承接点
47
-
48
- **错误做法**:
49
-
50
- - 平铺任务列表(无层次)
51
- - 任务过大(如"实现整个后端")
52
- - 任务过小(如"写一行代码")
53
- - 缺少验收标准
54
- - 忽略依赖关系
55
-
56
- **正确做法**:
57
-
58
- - **三级层次**: System → Phase → Task
59
- - **合理粒度**: 每个 Task 2h-2d
60
- - **清晰验收**: 默认 Given / When / Then,必要时使用清晰 Done When
61
- - **完整元数据**: ID, [REQ-XXX], 描述, 输入, 输出, 验收, 估时, 依赖, 优先级
62
-
63
- ---
64
-
65
- ## WBS方法:Work Breakdown Structure
66
-
67
- ### Level 1: System (系统级)
68
-
69
- **按系统分组**,从Architecture Overview获取系统清单。
70
-
71
- **示例**:
72
-
73
- ```markdown
74
- ## System 1: Frontend UX System
75
- ## System 2: Backend API System
76
- ## System 3: Database System
77
- ```
78
-
79
- **规则**:
80
-
81
- - 每个系统对应Architecture Overview中的一个系统
82
- - 系统顺序按依赖关系排列(被依赖的在前)
83
-
84
- ---
85
-
86
- ### Level 2: Phase (阶段级)
87
-
88
- **每个系统内按实施阶段分组**。
89
-
90
- **标准Phases**:
91
-
92
- 1. **Foundation** (基础设施) - 环境配置、项目初始化、依赖安装
93
- 2. **Core** (核心功能) - 主要业务逻辑实现
94
- 3. **Integration** (集成) - 跨系统集成、API对接
95
- 4. **Polish** (优化) - 性能优化、错误处理、测试完善
96
-
97
- **示例**:
98
-
99
- ```markdown
100
- ### Phase 1: Foundation (基础设施)
101
- ### Phase 2: Core Components (核心组件)
102
- ### Phase 3: Integration (集成)
103
- ### Phase 4: Polish (优化)
104
- ```
105
-
106
- **规则**:
107
-
108
- - Phase按自然顺序排列(Foundation → Core → Integration → Polish)
109
- - 每个Phase有明确的目标说明
110
-
111
- ---
112
-
113
- ### Level 3: Task (任务级)
114
-
115
- **每个Phase内的具体任务**。
116
-
117
- > [!IMPORTANT]
118
- > **每个任务的「输入」必须引用设计文档**,禁止凭空编造。
119
- >
120
- > 可引用的文档类型:
121
- >
122
- > - `02_ARCHITECTURE_OVERVIEW.md` §章节 - 系统边界、依赖关系
123
- > - `01_PRD.md` - 需求定义、User Story
124
- > - `03_ADR/ADR-XXX.md` - 架构决策、技术约束
125
- > - `04_SYSTEM_DESIGN/{system}.md` §章节 - 接口契约、数据模型
126
- > - 好: `04_SYSTEM_DESIGN/auth.md` §JWT 签发
127
- > - 差: "JWT 相关设计"(无具体文档引用)
128
-
129
- **Task结构**:
130
-
131
- ```markdown
132
- - [ ] **T{System}.{Phase}.{Seq}** [REQ-XXX]: 任务描述
133
- - **描述**: 简洁说明"做什么"(不是"怎么做")
134
- - **输入**: 设计文档引用 + 前置任务产出(必须包含至少一个文档引用)
135
- - **输出**: 产出什么交付物
136
- - **契约承接**: 本任务实现或验证的公共契约;如无则写“无”
137
- - ** 参考**: ADR-XXX 或 System Design 章节(如有)
138
- - **验收标准**:
139
- - Given [前置条件]
140
- - When [执行动作]
141
- - Then [预期结果]
142
- - (仅纯技术性基础任务允许使用清晰 Done When 列表)
143
- - **验证类型**: 单元测试 | 集成测试 | E2E测试 | 冒烟测试 | 回归测试 | 手动验证 | 编译检查 | Lint检查
144
- - **验证说明**: 如何确认任务完成 (检查什么,如何确认)
145
- - **估时**: 预估工时(如: 2h, 6h, 1d, 2d)
146
- - **依赖**: T{X}.{Y}.{Z} (依赖的Task ID)
147
- - **优先级**: P0 | P1 | P2
148
- ```
149
-
150
- **示例**:
151
-
152
- ```markdown
153
- - [ ] **T1.1.1** [基础]: 设置 Vite + React 项目
154
- - **描述**: 初始化前端项目,配置Vite、React、TypeScript
155
- - **输入**: PRD (React技术栈要求)
156
- - **输出**: 可运行的Hello World应用 (`src/App.tsx`, `vite.config.ts`)
157
- - **验收标准**:
158
- - [ ] `npm run dev` 正常启动
159
- - [ ] 页面显示"Hello World"
160
- - [ ] TypeScript类型检查通过
161
- - **验证类型**: 编译检查
162
- - **估时**: 2h
163
- - **依赖**: 无
164
- - **优先级**: P0
165
- ```
166
-
167
- ### 验证类型选择逻辑
168
-
169
- > [!IMPORTANT]
170
- > **如果 Workflow 未给出更具体约束,按以下默认顺序决策:**
171
-
172
- 1. **局部逻辑 / 纯算法 / 数据变换**单元测试
173
- 2. **跨模块 / 接口 / 数据库 / 多服务协作** 集成测试
174
- 3. **直接面向终端用户的关键路径** → E2E测试 或 手动验证
175
- 4. **Sprint 退出标准 / 里程碑 gate** → 冒烟测试
176
- 5. **修改可能影响已完成关键能力** → 回归测试
177
- 6. **配置、脚手架、基础设施** → 编译检查 / Lint检查 / 手动验证
178
-
179
- **选择细则**:
180
-
181
- - 不要因为任务“看起来重要”就默认选择 E2E测试
182
- - 如果集成测试足以证明任务完成,就不要升级为 E2E测试
183
- - 如果只是里程碑 readiness 检查,优先使用少量冒烟测试,而不是新建大量 E2E任务
184
- - 如果只是验证旧能力未被破坏,优先复用已有测试集合作为回归测试
185
-
186
- ### 契约风险覆盖规则
187
-
188
- > [!IMPORTANT]
189
- > **若任务产出包含新的公共契约或会修改现有公共契约,必须为其分配明确验证承接。**
190
-
191
- 公共契约至少包括:
192
-
193
- - 操作契约
194
- - 跨系统接口
195
- - HTTP API
196
- - CLI 命令 / 参数语义
197
- - 配置结构 / 文件格式 / 状态格式
198
- - 错误语义 / 返回结构
199
- - 持久化结构
200
-
201
- 规则:
202
-
203
- - 每个公共契约至少要有一个实现任务承接
204
- - 每个高风险公共契约至少要有一个验证承接点
205
- - 不得仅以“实现任务已有代码变更”视为契约闭合
206
- - 若契约属于基础规则层或低依赖纯逻辑,应优先补充单元测试,而不是直接升级为 E2E
207
-
208
- ### 基础单测优先原则
209
-
210
- > [!IMPORTANT]
211
- > **对 registry、manifest、parser、planner、schema、diff、merge、normalizer、selector 等基础逻辑,优先生成单元测试任务。**
212
-
213
- - 如果这些逻辑是多个上层流程共享的基础设施,其单元测试默认视为必选,不应依赖高层流程测试间接覆盖
214
- - 如果一个 Sprint 新增了多个基础逻辑点,优先在同 Sprint 或紧邻 Sprint 内生成对应单测任务,不要全部拖到收尾期
215
-
216
- ### Sprint 与冒烟测试绑定规则
217
-
218
- > [!IMPORTANT]
219
- > **只有在 Workflow 已提供 Sprint 路线图 / INT 任务语义时,才应生成里程碑级冒烟测试。**
220
-
221
- - 如果上游 Workflow 已定义 `INT-S{N}`,则将冒烟测试优先绑定到这些 INT 任务
222
- - 不要为每个普通 Level 3 开发任务单独生成冒烟测试
223
- - 若没有明确 Sprint / 里程碑边界,则优先退回单元测试、集成测试、手动验证,而不是滥造冒烟任务
224
-
225
- ### 接口追溯规则
226
-
227
- > [!IMPORTANT]
228
- > **任务间的输入/输出必须对齐。**
229
- >
230
- > 如果任务 B 依赖任务 A,则 B 的「输入」必须明确引用 A 的「输出」的具体产物(文件路径、接口名、数据格式)。
231
- >
232
- > - 好: B 输入 = “T1.1.1 产出的 `App.tsx` 组件 + `vite.config.ts` 配置”
233
- > - 差: B 输入 = “前端项目”
234
-
235
- ---
236
-
237
- ## 任务元数据完整性
238
-
239
- ### 必需字段
240
-
241
-
242
- | 字段 | 格式 | 说明 | 示例 |
243
- | ------------- | ----------------------- | ---------------- | -------------- |
244
- | **ID** | T{System}.{Phase}.{Seq} | 唯一标识符 | T1.2.3 |
245
- | **[REQ-XXX]** | [REQ-001] 或 [基础] | 关联PRD需求或类型 | [REQ-001] |
246
- | **描述** | 简洁的动词短语 | "做什么",不是"怎么做" | 实现LoginForm组件 |
247
- | **输入** | 前置条件列表 | 需要什么才能开始 | PRD, 设计稿 |
248
- | **输出** | 交付物列表 | 产出什么 | LoginForm.tsx |
249
- | **验收标准** | [ ] 列表 | Done When清单 | [ ] 组件渲染正常 |
250
- | **估时** | h, d, w | 预估工时 | 4h, 2d, 1w |
251
- | **依赖** | Task ID列表 | 依赖哪些Task | T1.1.1, T2.1.2 |
252
- | **优先级** | P0, P1, P2 | Must/Should/Nice | P0 |
253
-
254
-
255
- ---
256
-
257
- ### 可选字段
258
-
259
-
260
- | 字段 | 说明 | 示例 |
261
- | ------- | ------ | ------------------ |
262
- | **负责人** | 建议的负责人 | @frontend-dev |
263
- | **风险** | 潜在风险 | 依赖外部API,可能不稳定 |
264
- | **备注** | 额外说明 | 参考System Design第5章 |
265
-
266
-
267
- ---
268
-
269
- ## 依赖关系类型
270
-
271
- ### 1. 逻辑依赖 (Logical Dependency)
272
-
273
- **定义**: 技术上必须的先后顺序
274
-
275
- **示例**:
276
-
277
- ```
278
- T3.1.1 (数据库Schema) → T2.2.1 (后端API实现)
279
- T2.2.1 (后端API实现) → T1.2.1 (前端组件消费API)
280
- ```
281
-
282
- **如何识别**: 问"如果A没完成,B能开始吗?"
283
-
284
- ---
285
-
286
- ### 2. 资源依赖 (Resource Dependency)
287
-
288
- **定义**: 共享资源导致的依赖
289
-
290
- **示例**:
291
-
292
- ```
293
- T1.2.1 和 T1.2.2 由同一个开发者负责
294
- → 必须串行执行(资源依赖)
295
- ```
296
-
297
- **如何识别**: 问"A和B能否由不同人并行执行?"
298
-
299
- ---
300
-
301
- ### 3. 偏好依赖 (Preference Dependency)
302
-
303
- **定义**: 最佳实践建议的顺序(技术上可以并行)
304
-
305
- **示例**:
306
-
307
- ```
308
- T1.2.1 (前端UI设计) → T2.2.1 (后端API实现)
309
- 虽然可以并行,但先有UI设计更好
310
- ```
311
-
312
- **如何识别**: 问"虽然可以并行,但有推荐顺序吗?"
313
-
314
- ---
315
-
316
- ## 任务拆分原则
317
-
318
- ### 原则1: 2h-2d 规则
319
-
320
- **规则**: 单个 Task 应优先落在 2 小时到 2 天内;超过 2 天应继续拆分。
321
-
322
- **为什么?**
323
-
324
- - 太大: 难以估时、风险不可控
325
- - 太小: 管理成本高、碎片化
326
-
327
- **检查**:
328
-
329
- - Task估时 > 2天 → 继续拆分
330
- - Task估时 < 2小时 → 考虑合并
331
-
332
- ---
333
-
334
- ### 原则2: 单一交付物
335
-
336
- **规则**: 每个Task应该产出一个可验证的交付物。
337
-
338
- **示例**:
339
-
340
- - 好: "实现LoginForm组件" → 交付物: LoginForm.tsx
341
- - 差: "做前端" → 交付物不明确
342
-
343
- ---
344
-
345
- ### 原则3: Git-Friendly
346
-
347
- **规则**: 每个Task应该对应一个可审查的PR。
348
-
349
- **示例**:
350
-
351
- - 好: Task完成 = 1个PR(~200-500行代码)
352
- - 差: Task完成 = 10个PR
353
-
354
- ---
355
-
356
- ### 原则4: 可验证性
357
-
358
- **规则**: 每个 Task 必须有明确、可执行、可观察的验收标准;默认使用 Given / When / Then,纯技术性基础任务可使用清晰 Done When。
359
-
360
- **示例**:
361
-
362
- - 好: "Given 合法输入, When 调用接口, Then 返回 200 且结构符合契约"
363
- - 好: "[ ] 单元测试通过(仅用于纯技术性基础任务)"
364
- - 差: "Done When: 差不多完成了"
365
-
366
- ---
367
-
368
- ## 任务规划守则
369
-
370
- ### 守则1: 追溯链完整
371
-
372
- **规则**: 每个Task必须关联PRD需求 [REQ-XXX]。
373
-
374
- **为什么?** 确保所有实现都有需求依据,避免过度设计。
375
-
376
- **示例**:
377
-
378
- ```markdown
379
- - [ ] **T2.2.1** [REQ-001]: 实现 POST /auth/login 端点
380
- ```
381
-
382
- **检查**:
383
-
384
- - 所有PRD需求是否都映射到了至少一个Task?
385
- - 所有Task是否都关联了PRD需求?
386
-
387
- ---
388
-
389
- ### 守则2: 验收标准具体化
390
-
391
- **规则**: 默认使用 Given / When / Then;仅当纯技术性基础任务不适合 GWT 时,才退回清晰的 Done When。
392
-
393
- **好的验收标准**:
394
-
395
- - Given 输入合法, When 调用接口, Then 返回 200 且结构符合契约
396
- - Given 非法凭证, When 请求登录, Then 返回 401 且错误语义一致
397
- - 单元测试通过(仅用于纯技术性基础任务)
398
- - Lint无错误(仅用于纯技术性基础任务)
399
-
400
- **差的验收标准**:
401
-
402
- - 功能正常(太模糊)
403
- - 代码写完了(无法验证)
404
-
405
- ---
406
-
407
- ### 守则3: 依赖关系可视化
408
-
409
- **规则**: 必须提供Mermaid依赖图。
410
-
411
- **示例**:
412
-
413
- ```mermaid
414
- graph TD
415
- T1.1.1[前端项目初始化] --> T1.2.1[实现LoginForm]
416
- T2.1.1[后端项目初始化] --> T2.2.1[实现/auth/login]
417
- T3.1.1[数据库Schema] --> T2.2.1
418
- T2.2.1 --> T1.2.1
419
- ```
420
-
421
-
422
-
423
- **为什么?** 一图胜千言,帮助理解任务顺序。
424
-
425
- ---
426
-
427
- ### 守则4: 估时保守
428
-
429
- **规则**: 估时应该偏保守,包含测试和文档时间。
430
-
431
- **估时公式**:
432
-
433
- ```
434
- 总估时 = 开发时间 × 1.5 + 测试时间 + 文档时间
435
- ```
436
-
437
- **示例**:
438
-
439
- - 开发: 4h
440
- - 测试: 1h
441
- - 文档: 0.5h
442
- - **总估时**: 4 × 1.5 + 1 + 0.5 = 7.5h → 向上取整为 **1d**
443
-
444
- ---
445
-
446
- ## 工具箱
447
-
448
- > **输出路径**: 任务清单应保存到 `.anws/v{N}/05_TASKS.md`,由调用方 (blueprint workflow) 指定具体的 `v{N}` 版本号。
449
-
450
- ### 工具1: Tasks模板
451
-
452
- 使用WBS三级层次结构组织任务。
453
-
454
- **模板**:
455
-
456
- ```markdown
457
- # 任务清单 (Task List)
458
-
459
- ## 依赖图总览
460
- [Mermaid依赖图]
461
-
462
- ## System 1: [System Name]
463
-
464
- ### Phase 1: Foundation
465
- [Tasks列表]
466
-
467
- ### Phase 2: Core
468
- [Tasks列表]
469
-
470
- ...
471
- ```
472
-
473
- ---
474
-
475
- ### 工具2: 依赖分析Checklist
476
-
477
- 在拆分任务后,使用此Checklist分析依赖:
478
-
479
- - 识别所有逻辑依赖(A必须在B之前)
480
- - 识别资源依赖(同一人负责的任务)
481
- - 识别偏好依赖(推荐顺序)
482
- - 找出可并行的任务(标记[P])
483
- - 绘制Mermaid依赖图
484
-
485
- ---
486
-
487
- ### 工具3: 任务粒度检查表
488
-
489
-
490
- | 检查项 | 标准 | 如何修正 |
491
- | ---- | -------- | ------------ |
492
- | 估时 | 2h-2d | 过大→拆分, 过小→合并 |
493
- | 交付物 | 单一明确 | 多个→拆分为多个Task |
494
- | 验收标准 | 3-5条具体标准 | 模糊→细化为可测试条件 |
495
- | 依赖 | < 5个依赖 | 过多→重新组织Phase |
496
-
497
-
498
- ---
499
-
500
- ## Sprint 退出标准与集成验证任务
501
-
502
- ### Sprint 退出标准
503
-
504
- > [!IMPORTANT]
505
- > **每个 Sprint/里程碑必须有明确的退出标准。**
506
- >
507
- > 退出标准定义"什么算做完",它不是模糊的"任务都打勾了",而是**可演示、可验证的具体状态**。
508
-
509
- **Sprint 路线图格式**:
510
-
511
- ```markdown
512
- | Sprint | 代号 | 核心任务 | 退出标准 | 预估 |
513
- |--------|------|---------|---------|------|
514
- | S1 | Hello World | 基础设施+数据 | headless 运行 2 国 5 回合 + 基本渲染可见 | 3-4d |
515
- | S2 | 功能成型 | 实体+交互 | 完整功能可演示 + HUD 显示资源 | 5-6d |
516
- ```
517
-
518
- **退出标准要求**:
519
-
520
- - 必须是可客观验证的(可截图/录屏/日志证明)
521
- - 必须涵盖跨系统集成(而非单个组件)
522
- - 描述用户/开发者能观察到的行为,而非内部实现细节
523
-
524
- ### 集成验证任务 (INT Task)
525
-
526
- 每个 Sprint 末尾生成一个 **INT-S{N}** 任务,专门验证退出标准:
527
-
528
- ```markdown
529
- - [ ] **INT-S{N}** [MILESTONE]: S{N} 集成验证 — {代号}
530
- - **描述**: 验证 S{N} 退出标准
531
- - **输入**: S{N} 所有任务的产出
532
- - **输出**: 集成验证报告(通过/失败 + Bug 清单)
533
- - **验收标准**:
534
- - Given S{N} 所有任务已完成
535
- - When 逐条执行退出标准中的检查
536
- - Then 全部通过 → Sprint 完成; 有失败 → 记录 Bug
537
- - **验证说明**: 按退出标准逐条执行,截图/录屏/日志确认
538
- - **估时**: 2-4h
539
- - **依赖**: S{N} 最后一个任务
540
- ```
541
-
542
- INT 任务是该 Sprint 的"关门任务"。**未通过 INT 任务的 Sprint 不得标记为完成。**
543
-
544
- ---
545
-
546
- ## 常见场景与模式
547
-
548
- ### 场景1: 新功能开发
549
-
550
- **特征**: 实现一个新的User Story
551
-
552
- **拆分模式**:
553
-
554
- ```
555
- Phase 1: 数据层 (Database)
556
- - T3.1.1: 设计Schema
557
- - T3.1.2: 创建Migration
558
-
559
- Phase 2: 业务层 (Backend)
560
- - T2.2.1: 实现API端点
561
- - T2.2.2: 单元测试
562
-
563
- Phase 3: 表现层 (Frontend)
564
- - T1.3.1: 实现UI组件
565
- - T1.3.2: 集成API
566
-
567
- Phase 4: 验证
568
- - T99.1: E2E测试
569
- ```
570
-
571
- ---
572
-
573
- ### 场景2: 性能优化
574
-
575
- **特征**: 优化现有功能的性能
576
-
577
- **拆分模式**:
578
-
579
- ```
580
- Phase 1: 分析 (Profiling)
581
- - T1.1: 性能基准测试
582
- - T1.2: 识别瓶颈
583
-
584
- Phase 2: 优化 (Optimization)
585
- - T2.1: 添加缓存
586
- - T2.2: 优化数据库查询
587
-
588
- Phase 3: 验证 (Validation)
589
- - T3.1: 性能对比测试
590
- ```
591
-
592
- ---
593
-
594
- ### 场景3: Bug修复
595
-
596
- **特征**: 修复已知缺陷
597
-
598
- **拆分模式**:
599
-
600
- ```
601
- Phase 1: 复现 (Reproduction)
602
- - T1.1: 编写复现步骤
603
- - T1.2: 创建失败的测试用例
604
-
605
- Phase 2: 修复 (Fix)
606
- - T2.1: 实现修复
607
- - T2.2: 测试用例通过
608
-
609
- Phase 3: 回归测试 (Regression)
610
- - T3.1: 确保未引入新Bug
611
- ```
612
-
613
- ---
614
-
615
- ## 质量检查清单
616
-
617
- 完成任务拆解后,使用此清单自检:
618
-
619
- ### 结构完整性
620
-
621
- - 使用WBS三级层次(System → Phase → Task)
622
- - 每个System有清晰的Phase划分
623
- - 每个Task有完整的元数据
624
-
625
- ### 任务质量
626
-
627
- - 每个Task估时 2h-2d
628
- - 每个Task有3-5条验收标准
629
- - 每个Task关联PRD需求 [REQ-XXX]
630
- - 每个Task描述清晰("做什么")
631
-
632
- ### 依赖关系
633
-
634
- - 提供Mermaid依赖图
635
- - 标注逻辑依赖、资源依赖、偏好依赖
636
- - 无循环依赖
637
- - 识别可并行任务
638
-
639
- ### 追溯链
640
-
641
- - 所有PRD需求映射到至少一个Task
642
- - 所有Task关联PRD需求或标注为[基础]
643
- - 跨系统集成任务已识别
644
-
645
- ### User Story 覆盖
646
-
647
- - 每个 US-XXX 有足够的 tasks 覆盖其所有涉及系统
648
- - 每个 US 的 task 链能形成可独立验证的闭环
649
- - 高优先级 US (P0) 的 task 分布在靠前的 Sprint
650
-
651
- ---
652
-
653
- ## 快速上手示例
654
-
655
- **任务**: 为"用户登录"功能拆解任务
656
-
657
- **Step 1: 确定涉及的系统**
658
-
659
- - Frontend System, Backend API System, Database System
660
-
661
- **Step 2: 按Phase组织**
662
-
663
- ```
664
- Database System:
665
- Phase 1: Foundation
666
- - T3.1.1: 创建users表Schema
667
-
668
- Backend API System:
669
- Phase 2: Core
670
- - T2.2.1: 实现 POST /auth/login
671
- - T2.2.2: 单元测试
672
-
673
- Frontend System:
674
- Phase 2: Core
675
- - T1.2.1: 实现LoginForm组件
676
- - T1.2.2: 集成/auth/login API
677
- ```
678
-
679
- **Step 3: 分析依赖**
680
-
681
- ```
682
- T3.1.1 → T2.2.1 → T1.2.1 (逻辑依赖)
683
- ```
684
-
685
- **Step 4: 定义验收标准**
686
-
687
- ```
688
- T2.2.1验收:
689
- - [ ] API返回JWT Token
690
- - [ ] 单元测试通过
691
- - [ ] Postman测试成功
692
- ```
693
-
694
- ---
695
-
696
- **记住**: 好的任务拆解是平衡的艺术。
697
- 不要过度拆分(管理成本高),也不要过度聚合(风险不可控)。
698
-
699
- Happy Planning!
1
+ ---
2
+
3
+ name: task-planner
4
+ description: 使用 WBS 将系统设计文档分解为执行主清单(05A_TASKS.md)与验证计划(05B_VERIFICATION_PLAN.md),支持依赖分析、验证追溯与证据定义。
5
+
6
+ # Task Planner
7
+
8
+ 你是任务拆解与验证编排技能,目标是输出两份文档:
9
+
10
+ - `.anws/v{N}/05A_TASKS.md`(执行主清单)
11
+ - `.anws/v{N}/05B_VERIFICATION_PLAN.md`(验证计划)
12
+
13
+ ---
14
+
15
+ ## 快速流程
16
+
17
+ 1. 读取 `01_PRD.md`、`02_ARCHITECTURE_OVERVIEW.md`
18
+ 2. 读取 `03_ADR/` `04_SYSTEM_DESIGN/`(如存在)
19
+ 3. ADR 中存在测试策略/质量门禁,必须优先遵循,不得自行改重
20
+ 4. 提取公共契约(HTTP API / CLI / 配置 / 错误语义 / 数据结构等)
21
+ 5. 生成 WBS 任务(System Phase → Task)到 `05A`
22
+ 6. 为每个任务生成验证锚点与证据要求到 `05B`
23
+
24
+ ---
25
+
26
+ ## 分轨职责
27
+
28
+ ### 05A_TASKS.md(执行主清单)
29
+
30
+ - WBS 任务列表与依赖
31
+ - Sprint 路线图
32
+ - INT 里程碑任务
33
+ - 进度 checkbox
34
+ - User Story Overlay
35
+
36
+ ### 05B_VERIFICATION_PLAN.md(验证计划)
37
+
38
+ - 验证分层策略
39
+ - 风险类别覆盖规则
40
+ - Task-by-Task 验证计划
41
+ - Contract Coverage Overlay
42
+ - Testing Coverage Overlay
43
+ - Verification Traceability Matrix
44
+
45
+ > [!IMPORTANT]
46
+ > 上述三项为 05B 的硬性必选章节,不可删除:
47
+ >
48
+ > - Contract Coverage Overlay
49
+ > - Testing Coverage Overlay
50
+ > - Verification Traceability Matrix
51
+
52
+ ---
53
+
54
+ ## 任务格式(05A)
55
+
56
+ ```markdown
57
+ - [ ] **T{System}.{Phase}.{Seq}** [REQ-XXX]: 任务标题
58
+ - **描述**: 做什么(不是怎么做)
59
+ - **输入**: 设计文档引用 + 前置任务产出(必须包含至少一个文档引用)
60
+ - **输出**: 产出的文件/组件/接口
61
+ - **契约承接**: 本任务实现或验证的公共契约;如无则写"无"
62
+ - **参考**: ADR-XXX 或 System Design 章节(如有)
63
+ - **验收标准**:
64
+ - Given [前置条件]
65
+ - When [执行动作]
66
+ - Then [预期结果]
67
+ - (仅纯技术性基础任务允许使用清晰 Done When 列表)
68
+ - **验证类型**: 单元测试 | API接口功能测试 | 集成测试 | E2E测试 | 冒烟测试 | 回归测试 | 手动验证 | 编译检查 | Lint检查
69
+ - **验证摘要**: 验证目标与边界(不展开完整用例)
70
+ - **验证引用**: `05B_VERIFICATION_PLAN.md#t-x-y-z`
71
+ - **证据产出**: `tests/...`, `reports/...`, `screenshots/...`, `logs/...`
72
+ - **估时**: Xh
73
+ - **依赖**: T{A}.{B}.{C}
74
+ - **优先级**: P0 | P1 | P2
75
+ ```
76
+
77
+ ---
78
+
79
+ ## 验证格式(05B)
80
+
81
+ ### Task-by-Task 条目
82
+
83
+ ```markdown
84
+ ### T{X}.{Y}.{Z}
85
+ - 关联需求:
86
+ - 关联契约:
87
+ - 风险类别:
88
+ - 单元测试覆盖:
89
+ - API接口功能测试覆盖:
90
+ - 集成/E2E/冒烟覆盖:
91
+ - 前置数据:
92
+ - 断言:
93
+ - 证据:
94
+ ```
95
+
96
+ ### 追溯矩阵
97
+
98
+ ```markdown
99
+ ## Verification Traceability Matrix
100
+ | REQ/Contract | Task | Verification | Test Material | Evidence | Status |
101
+ |---|---|---|---|---|---|
102
+ ```
103
+
104
+ ---
105
+
106
+ ## 验证类型选择逻辑
107
+
108
+ 按"最轻但足够"原则:
109
+
110
+ 1. 局部逻辑 / 纯算法 / 状态转换 / 异常处理 → 单元测试
111
+ 2. HTTP API / CLI API / 权限边界 / 错误语义 / 数据变更接口 → API接口功能测试
112
+ 3. 跨模块 / 数据库 / 多服务协作 → 集成测试
113
+ 4. 直接面向终端用户的关键路径 E2E测试 或 手动验证
114
+ 5. Sprint 退出关口 / 里程碑 gate → 冒烟测试(优先绑定 `INT-S{N}`)
115
+ 6. 修改可能影响已完成关键能力 → 回归测试
116
+ 7. 配置/脚手架/基础设施 → 编译检查 / Lint检查 / 手动验证
117
+
118
+ **选择细则**:
119
+
120
+ - 不要因为任务"看起来重要"就默认选择 E2E测试
121
+ - 任务暴露或修改对外 API → 必须明确正常请求/代表性异常请求/错误语义如何验证
122
+ - 涉及数据变更接口 验证说明必须包含 before/after 断言
123
+ - 涉及鉴权/角色/权限边界 验证说明必须包含权限不足场景
124
+
125
+ ### E2E 执行边界(强约束)
126
+
127
+ - `task-planner` 只负责在 `05A_TASKS.md` / `05B_VERIFICATION_PLAN.md` 记录 E2E 触发设想、覆盖范围和证据预期
128
+ - 规划阶段不得调用或执行 `e2e-testing-guide`
129
+ - 实际 E2E 指南生成与实机验证由 `/forge` 根据任务触发执行
130
+
131
+ ---
132
+
133
+ ## 测试标准(硬约束)
134
+
135
+ > [!IMPORTANT]
136
+ > **项目验收必须同时包含单元测试与 API 接口功能测试。**
137
+
138
+ ### 单元测试内容要求
139
+
140
+ - **核心业务计算逻辑**: 正常输入、边界输入、非法输入,验证处理结果符合预期
141
+ - **关键状态转换逻辑**: 创建、执行、失败、重试等状态分别规划用例
142
+ - **异常处理逻辑**: 构造空值、超范围参数、非法状态,验证错误信息正确且系统稳定
143
+
144
+ ### API接口功能测试内容要求
145
+
146
+ - **核心业务接口**: 正常请求参数下返回正确响应
147
+ - **异常请求场景**: 参数缺失、参数格式错误、权限不足,验证错误码和错误信息符合接口设计规范
148
+ - **数据变更接口**: 验证调用前后系统状态或数据结果正确(before/after 断言)
149
+
150
+ ### 反测试膨胀原则
151
+
152
+ - 目标是**风险类别闭合**,不是测试数量最大化
153
+ - 优先等价类划分、边界值、代表性错误样本、参数化测试或表驱动测试
154
+ - 禁止全组合笛卡尔积枚举
155
+ - 单元测试负责细粒度逻辑,API接口功能测试负责对外契约,E2E 只保留关键用户链路
156
+
157
+ ---
158
+
159
+ ## 契约覆盖规则
160
+
161
+ > [!IMPORTANT]
162
+ > **若任务产出包含或修改公共契约,必须为其分配明确验证承接。**
163
+
164
+ 公共契约至少包括:操作契约、跨系统接口、HTTP API、CLI 命令/参数语义、配置结构、文件格式、错误语义、持久化结构。
165
+
166
+ 规则:
167
+
168
+ - 每个公共契约至少有一个实现任务承接
169
+ - 每个高风险公共契约至少有一个验证承接点
170
+ - 不得仅以"实现任务有代码变更"视为契约闭合
171
+ - 基础规则层/低依赖纯逻辑 → 优先单元测试
172
+ - HTTP API / CLI API / 对外接口优先 API接口功能测试
173
+ - 错误码/错误信息/权限不足语义/数据变更前后状态属于可观察契约,不得遗漏
174
+
175
+ ---
176
+
177
+ ## WBS 方法
178
+
179
+ ### 三级层次
180
+
181
+ ```
182
+ Level 1: System(系统级) ← 来自 Architecture Overview 的系统清单
183
+ Level 2: Phase(阶段级) ← Foundation / Core / Integration / Polish
184
+ Level 3: Task(任务级) ← 2h–2d 粒度的具体任务
185
+ ```
186
+
187
+ ### Sprint 路线图格式
188
+
189
+ ```markdown
190
+ ## Sprint 路线图
191
+
192
+ | Sprint | 代号 | 核心任务 | 退出标准 | 预估 |
193
+ |--------|------|---------|---------|------|
194
+ | S1 | Hello World | 基础设施 + 核心数据 | headless 运行通过 + 基本渲染可见 | 3-4d |
195
+ ```
196
+
197
+ 退出标准要求:
198
+
199
+ - 可客观验证(截图/录屏/日志)
200
+ - 描述用户或开发者能观察到的行为
201
+ - 涵盖跨系统集成
202
+
203
+ ### 集成验证任务 (INT-S{N})
204
+
205
+ ```markdown
206
+ - [ ] **INT-S{N}** [MILESTONE]: S{N} 集成验证 — {代号}
207
+ - **描述**: 验证 S{N} 退出标准
208
+ - **输入**: S{N} 所有任务的产出
209
+ - **输出**: 集成验证报告(通过/失败 + Bug 清单)
210
+ - **验收标准**:
211
+ - Given S{N} 所有任务已完成
212
+ - When 逐条执行退出标准中的检查
213
+ - Then 全部通过 → Sprint 完成; 有失败 → 记录 Bug
214
+ - **验证说明**: 按退出标准逐条执行,截图/录屏/日志确认
215
+ - **估时**: 2-4h
216
+ - **依赖**: S{N} 最后一个任务
217
+ ```
218
+
219
+ INT 任务是该 Sprint 的"关门任务"。**未通过 INT 任务的 Sprint 不得标记为完成。**
220
+
221
+ ---
222
+
223
+ ## 任务质量守则
224
+
225
+ ### 粒度
226
+
227
+ - 单个 Task 优先落在 2h–2d;超过 2d 应继续拆分
228
+ - 太小(< 2h)考虑合并
229
+
230
+ ### 输入/输出追溯
231
+
232
+ > [!IMPORTANT]
233
+ > **任务间的输入/输出必须对齐。**
234
+ >
235
+ > 如果 Task B 依赖 Task A,则 B 的「输入」必须明确引用 A 的「输出」的具体产物(文件路径、接口名、数据格式)。
236
+
237
+ ### 验收标准
238
+
239
+ - 默认使用 Given / When / Then
240
+ - 仅纯技术性基础任务(配置、脚手架)允许清晰 Done When 列表
241
+
242
+ ---
243
+
244
+ ## 输出质量检查
245
+
246
+ - `05A` `05B` 已同时生成
247
+ - 每个 05A 任务都包含 `验证引用` 与 `证据产出`
248
+ - `05B` Task-by-Task 计划与追溯矩阵
249
+ - User Story Overlay `05A`
250
+ - Contract Coverage Overlay、Testing Coverage Overlay、Verification Traceability Matrix 在 `05B`
251
+ - 冒烟测试优先绑定 `INT-S{N}`,未扩散到普通开发任务
252
+ - 未出现 E2E 测试滥用现象
253
+