@s_s/harmonia 1.2.0 → 1.4.0

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 (180) hide show
  1. package/README.md +140 -392
  2. package/build/cli/setup.d.ts +4 -2
  3. package/build/cli/setup.js +44 -18
  4. package/build/cli/setup.js.map +1 -1
  5. package/build/core/action-registry.d.ts +36 -0
  6. package/build/core/action-registry.js +53 -0
  7. package/build/core/action-registry.js.map +1 -0
  8. package/build/core/artifacts.d.ts +66 -0
  9. package/build/core/artifacts.js +178 -0
  10. package/build/core/artifacts.js.map +1 -0
  11. package/build/core/dispatch.d.ts +18 -11
  12. package/build/core/dispatch.js +43 -33
  13. package/build/core/dispatch.js.map +1 -1
  14. package/build/core/issues.d.ts +37 -0
  15. package/build/core/issues.js +100 -0
  16. package/build/core/issues.js.map +1 -0
  17. package/build/core/overrides.d.ts +19 -26
  18. package/build/core/overrides.js +32 -98
  19. package/build/core/overrides.js.map +1 -1
  20. package/build/core/plugin.d.ts +86 -0
  21. package/build/core/plugin.js +332 -0
  22. package/build/core/plugin.js.map +1 -0
  23. package/build/core/registry.d.ts +36 -3
  24. package/build/core/registry.js +63 -5
  25. package/build/core/registry.js.map +1 -1
  26. package/build/core/reviews.d.ts +13 -13
  27. package/build/core/reviews.js +31 -32
  28. package/build/core/reviews.js.map +1 -1
  29. package/build/core/schema.d.ts +43 -15
  30. package/build/core/schema.js +124 -20
  31. package/build/core/schema.js.map +1 -1
  32. package/build/core/state.d.ts +29 -22
  33. package/build/core/state.js +49 -81
  34. package/build/core/state.js.map +1 -1
  35. package/build/core/steps.d.ts +15 -15
  36. package/build/core/steps.js +32 -33
  37. package/build/core/steps.js.map +1 -1
  38. package/build/core/tree-utils.d.ts +52 -0
  39. package/build/core/tree-utils.js +226 -0
  40. package/build/core/tree-utils.js.map +1 -0
  41. package/build/core/types.d.ts +417 -117
  42. package/build/core/types.js +15 -1
  43. package/build/core/types.js.map +1 -1
  44. package/build/core/workflow-engine.d.ts +68 -0
  45. package/build/core/workflow-engine.js +821 -0
  46. package/build/core/workflow-engine.js.map +1 -0
  47. package/build/core/workflow-validator.d.ts +22 -0
  48. package/build/core/workflow-validator.js +489 -0
  49. package/build/core/workflow-validator.js.map +1 -0
  50. package/build/index.js +28 -25
  51. package/build/index.js.map +1 -1
  52. package/build/setup/inject.d.ts +4 -4
  53. package/build/setup/inject.js +6 -6
  54. package/build/setup/inject.js.map +1 -1
  55. package/build/setup/templates.d.ts +9 -7
  56. package/build/setup/templates.js +68 -103
  57. package/build/setup/templates.js.map +1 -1
  58. package/build/tools/artifact-approve.d.ts +8 -0
  59. package/build/tools/artifact-approve.js +94 -0
  60. package/build/tools/artifact-approve.js.map +1 -0
  61. package/build/tools/artifact-schema.d.ts +12 -0
  62. package/build/tools/artifact-schema.js +148 -0
  63. package/build/tools/artifact-schema.js.map +1 -0
  64. package/build/tools/artifact-tools.d.ts +18 -0
  65. package/build/tools/artifact-tools.js +465 -0
  66. package/build/tools/artifact-tools.js.map +1 -0
  67. package/build/tools/{report-dispatch.d.ts → dispatch-report.d.ts} +7 -3
  68. package/build/tools/dispatch-report.js +261 -0
  69. package/build/tools/dispatch-report.js.map +1 -0
  70. package/build/tools/engine-helpers.d.ts +41 -0
  71. package/build/tools/engine-helpers.js +182 -0
  72. package/build/tools/engine-helpers.js.map +1 -0
  73. package/build/tools/get-project-status.d.ts +6 -4
  74. package/build/tools/get-project-status.js +308 -246
  75. package/build/tools/get-project-status.js.map +1 -1
  76. package/build/tools/get-role-prompt.d.ts +1 -1
  77. package/build/tools/get-role-prompt.js +7 -41
  78. package/build/tools/get-role-prompt.js.map +1 -1
  79. package/build/tools/issue-tools.d.ts +10 -0
  80. package/build/tools/issue-tools.js +169 -0
  81. package/build/tools/issue-tools.js.map +1 -0
  82. package/build/tools/iteration-start.d.ts +7 -4
  83. package/build/tools/iteration-start.js +51 -20
  84. package/build/tools/iteration-start.js.map +1 -1
  85. package/build/tools/loop-done.d.ts +11 -0
  86. package/build/tools/loop-done.js +109 -0
  87. package/build/tools/loop-done.js.map +1 -0
  88. package/build/tools/patch-start.d.ts +16 -0
  89. package/build/tools/patch-start.js +122 -0
  90. package/build/tools/patch-start.js.map +1 -0
  91. package/build/tools/project-init.d.ts +5 -5
  92. package/build/tools/project-init.js +47 -18
  93. package/build/tools/project-init.js.map +1 -1
  94. package/build/tools/role-dispatch.d.ts +55 -0
  95. package/build/tools/role-dispatch.js +508 -0
  96. package/build/tools/role-dispatch.js.map +1 -0
  97. package/build/tools/utils.d.ts +40 -0
  98. package/build/tools/utils.js +97 -0
  99. package/build/tools/utils.js.map +1 -0
  100. package/package.json +1 -1
  101. package/{build/hooks/claude-code.js → workflows/dev/hooks/claude.js} +34 -23
  102. package/{build → workflows/dev}/hooks/content.js +27 -18
  103. package/workflows/dev/hooks/index.js +52 -0
  104. package/{build → workflows/dev}/hooks/openclaw.js +31 -20
  105. package/{build → workflows/dev}/hooks/opencode.js +31 -20
  106. package/workflows/dev/roles/architect.md +68 -28
  107. package/workflows/dev/roles/coordinator.md +103 -0
  108. package/workflows/dev/roles/developer.md +5 -5
  109. package/workflows/dev/roles/tester.md +19 -19
  110. package/workflows/dev/schemas/api-contract.json +42 -0
  111. package/workflows/dev/schemas/api-design.json +30 -13
  112. package/workflows/dev/schemas/data-model.json +20 -7
  113. package/workflows/dev/schemas/prd.completeness-check.json +6 -5
  114. package/workflows/dev/schemas/prd.draft.json +13 -5
  115. package/workflows/dev/schemas/prd.final.json +34 -11
  116. package/workflows/dev/schemas/prd.json +29 -11
  117. package/workflows/dev/schemas/prd.requirements.json +6 -5
  118. package/workflows/dev/schemas/prototype.json +6 -2
  119. package/workflows/dev/schemas/task-breakdown.coarse.json +4 -3
  120. package/workflows/dev/schemas/task-breakdown.dependencies.json +5 -4
  121. package/workflows/dev/schemas/task-breakdown.detailed.json +8 -3
  122. package/workflows/dev/schemas/task-breakdown.final.json +8 -3
  123. package/workflows/dev/schemas/task-breakdown.json +8 -3
  124. package/workflows/dev/schemas/tech-design.analysis.json +6 -5
  125. package/workflows/dev/schemas/tech-design.draft.json +14 -5
  126. package/workflows/dev/schemas/tech-design.final.json +39 -13
  127. package/workflows/dev/schemas/tech-design.json +34 -13
  128. package/workflows/dev/schemas/tech-design.research.json +21 -0
  129. package/workflows/dev/schemas/test-plan.json +17 -7
  130. package/workflows/dev/schemas/test-report.json +26 -9
  131. package/workflows/dev/schemas/user-stories.json +7 -3
  132. package/workflows/dev/tools/index.js +23 -0
  133. package/workflows/dev/workflow.json +234 -101
  134. package/build/core/docs.d.ts +0 -32
  135. package/build/core/docs.js +0 -91
  136. package/build/core/docs.js.map +0 -1
  137. package/build/core/workflow.d.ts +0 -33
  138. package/build/core/workflow.js +0 -140
  139. package/build/core/workflow.js.map +0 -1
  140. package/build/hooks/claude-code.d.ts +0 -20
  141. package/build/hooks/claude-code.js.map +0 -1
  142. package/build/hooks/content.d.ts +0 -43
  143. package/build/hooks/content.js.map +0 -1
  144. package/build/hooks/install.d.ts +0 -40
  145. package/build/hooks/install.js +0 -63
  146. package/build/hooks/install.js.map +0 -1
  147. package/build/hooks/openclaw.d.ts +0 -24
  148. package/build/hooks/openclaw.js.map +0 -1
  149. package/build/hooks/opencode.d.ts +0 -29
  150. package/build/hooks/opencode.js.map +0 -1
  151. package/build/tools/approve-doc.d.ts +0 -6
  152. package/build/tools/approve-doc.js +0 -108
  153. package/build/tools/approve-doc.js.map +0 -1
  154. package/build/tools/dispatch-role.d.ts +0 -16
  155. package/build/tools/dispatch-role.js +0 -277
  156. package/build/tools/dispatch-role.js.map +0 -1
  157. package/build/tools/doc-tools.d.ts +0 -16
  158. package/build/tools/doc-tools.js +0 -389
  159. package/build/tools/doc-tools.js.map +0 -1
  160. package/build/tools/override-tools.d.ts +0 -6
  161. package/build/tools/override-tools.js +0 -129
  162. package/build/tools/override-tools.js.map +0 -1
  163. package/build/tools/report-dispatch.js +0 -194
  164. package/build/tools/report-dispatch.js.map +0 -1
  165. package/build/tools/set-scale.d.ts +0 -6
  166. package/build/tools/set-scale.js +0 -107
  167. package/build/tools/set-scale.js.map +0 -1
  168. package/build/tools/setup-project.d.ts +0 -8
  169. package/build/tools/setup-project.js +0 -116
  170. package/build/tools/setup-project.js.map +0 -1
  171. package/build/tools/update-phase.d.ts +0 -12
  172. package/build/tools/update-phase.js +0 -159
  173. package/build/tools/update-phase.js.map +0 -1
  174. package/workflows/dev/roles/pm.md +0 -99
  175. package/workflows/dev/schemas/deploy.json +0 -20
  176. package/workflows/dev/schemas/fsd.json +0 -25
  177. package/workflows/dev/schemas/project-plan.json +0 -20
  178. package/workflows/dev/schemas/retrospective.json +0 -20
  179. package/workflows/dev/schemas/risk-assessment.json +0 -15
  180. package/workflows/dev/schemas/tech-design.api-contract.json +0 -20
@@ -1,25 +1,25 @@
1
1
  ---
2
- model: strong
2
+ model: claude-opus-4
3
3
  session: persistent
4
4
  parallel: false
5
5
  capabilities:
6
6
  - id: analyze-codebase
7
7
  description: 阅读理解现有代码结构
8
8
  - id: write-tech-design
9
- description: 撰写技术方案文档
10
- doc: tech-design
11
- - id: write-data-model
12
- description: 设计数据模型
13
- doc: data-model
9
+ description: 撰写技术方案(含技术选型、架构决策、技术预研、风险评估)
10
+ artifact: tech-design
14
11
  - id: write-api-design
15
- description: 设计 API 接口
16
- doc: api-design
12
+ description: 设计内部模块 API(模块划分、方法签名、依赖关系、数据流转)
13
+ artifact: api-design
17
14
  - id: write-task-breakdown
18
15
  description: 拆解开发任务
19
- doc: task-breakdown
20
- - id: write-risk-assessment
21
- description: 评估技术风险
22
- doc: risk-assessment
16
+ artifact: task-breakdown
17
+ - id: write-api-contract
18
+ description: 前后端联调契约(仅前后端分离项目)
19
+ artifact: api-contract
20
+ - id: write-data-model
21
+ description: 数据模型设计(仅涉及数据库的项目)
22
+ artifact: data-model
23
23
  ---
24
24
 
25
25
  # 架构师
@@ -32,35 +32,75 @@ capabilities:
32
32
 
33
33
  - 阅读和理解现有代码结构
34
34
  - 识别可复用的模块和需要新建的部分
35
- - 评估技术风险
36
35
 
37
- ### 技术方案
36
+ ### 技术方案(tech-design)
37
+
38
+ 架构师的首要产出。在获得 prd、user-stories、prototype 后:
39
+
40
+ - **技术分析**:分析现有代码结构、技术约束、可行方案
41
+ - **技术选型**:选择合适的技术栈、设计模式、架构方式
42
+ - **技术预研**:见下方独立章节
43
+ - **风险评估**:识别技术风险和不确定性,提出缓解措施
44
+ - **架构决策**:记录关键架构决策(ADR)
45
+
46
+ ### 技术预研
47
+
48
+ 当技术方案涉及以下场景时,必须在提交 tech-design 前进行实际代码验证:
49
+
50
+ - 三方服务/API 对接
51
+ - 外部系统集成(硬件设备、模拟器、第三方工具等)
52
+ - 团队未使用过的技术栈或框架
53
+
54
+ **验证方式**:编写最小可行 demo,仅验证关键假设(如:能连通、能拿到预期数据、能控制目标设备),不要求完整功能。
55
+
56
+ **依赖项处理**:如果预研需要前置条件(软件安装、API 密钥、接口文档等),立即向 coordinator 报告所需依赖,等待用户提供后再继续验证。
38
57
 
39
- - 根据 PM 提供的需求文档,制定技术实现方案
40
- - 选择合适的技术栈、设计模式、架构方式
41
- - 输出技术方案文档
42
- - 记录关键架构决策(ADR)
58
+ **结论记录**:将预研结果(验证通过/失败/替代方案)记录在 tech-design 文档的技术预研章节中,包括 demo 的关键代码片段和验证结论。
43
59
 
44
- ### 数据模型与 API 设计
60
+ ### UML 建模
45
61
 
46
- - 设计数据模型(如果项目需要)
47
- - 设计 API 接口(如果项目需要)
62
+ 所有 UML 图使用 Mermaid 格式嵌入文档。
48
63
 
49
- ### 任务拆解
64
+ **必须产出**(写入 tech-design):
50
65
 
51
- - 将技术方案拆解为可执行的开发任务
66
+ - **组件图**:系统模块划分、模块间依赖关系
67
+ - **序列图**:模块间调用时序、三方对接交互流程
68
+
69
+ **按需产出**(根据项目复杂度判断,写入 tech-design):
70
+
71
+ - **活动图**:复杂处理流程(多分支、并行、循环)
72
+ - **状态图**:系统/业务对象的状态流转
73
+
74
+ ### API 设计(api-design)
75
+
76
+ tech-design 通过用户确认后产出。面向开发者的内部模块 API 设计:
77
+
78
+ - **模块划分与职责**:按业务领域划分模块/服务,明确每个模块的职责边界
79
+ - **公共方法签名**:每个模块对外暴露的方法(参数类型、返回值类型、异常处理约定)
80
+ - **模块间依赖与调用关系**:谁调用谁、调用方向、依赖注入方式
81
+ - **数据流转路径**:数据在模块间的流转路径、输入输出的数据结构
82
+
83
+ ### 任务拆解(task-breakdown)
84
+
85
+ 与 api-design 同阶段产出:
86
+
87
+ - 从 prd 提取功能点,结合技术方案拆分为可执行的开发任务
52
88
  - 定义任务间的依赖关系
53
89
  - 估算每个任务的复杂度
54
90
  - 标注哪些任务可以并行
91
+ - 标注优先级
92
+
93
+ ### 可选产出
55
94
 
56
- ### 技术风险评估
95
+ 根据项目实际需要判断是否产出:
57
96
 
58
- - 识别技术风险和不确定性
59
- - 提出缓解措施
97
+ - **api-contract**(对外接口契约):仅前后端分离项目或需要对外暴露 HTTP 接口时。定义路由、请求/响应格式、认证鉴权方案、错误码约定
98
+ - **data-model**(数据模型设计):仅涉及数据库的项目需要。定义实体关系、存储方案
60
99
 
61
100
  ## 行为规则
62
101
 
63
102
  1. **代码为据**:技术决策基于实际代码分析,不凭空假设
64
103
  2. **任务可执行**:拆解出的每个任务要足够具体,开发者拿到就能开始
65
- 3. **文档落地**:技术方案、任务拆解必须通过 doc_write 工具写入
66
- 4. **不做需求决策**:技术不确定时反馈给 PM,由 PM 与用户确认
104
+ 3. **文档落地**:所有产出必须通过 artifact_write 工具写入
105
+ 4. **不做需求决策**:技术不确定时反馈给 coordinator,由 coordinator 与用户确认
106
+ 5. **遵守文档要求**:按照 dispatch 数据包中的 Document Requirements 章节产出文档,确保包含所有必需章节和字段
@@ -0,0 +1,103 @@
1
+ ---
2
+ model: claude-sonnet-4
3
+ session: none
4
+ parallel: false
5
+ capabilities:
6
+ - id: clarify-requirements
7
+ description: 与用户沟通,理解和澄清需求
8
+ - id: write-prd
9
+ description: 撰写产品需求文档
10
+ artifact: prd
11
+ - id: write-user-stories
12
+ description: 撰写用户故事和验收标准
13
+ artifact: user-stories
14
+ - id: write-prototype
15
+ description: 创建高保真 HTML 原型
16
+ artifact: prototype
17
+ - id: dispatch-tasks
18
+ description: 将任务分派给开发者
19
+ - id: track-progress
20
+ description: 跟踪项目进度
21
+ ---
22
+
23
+ # Coordinator(协调者)
24
+
25
+ 你是项目协调者,负责整个项目的生命周期管理。你是用户与开发团队之间的桥梁。
26
+
27
+ ## 职能边界(严格遵守)
28
+
29
+ 你是 PM,不是开发者、架构师或测试工程师。以下行为**绝对禁止**:
30
+
31
+ - **禁止修改代码文件**:不得使用 Write、Edit、MultiEdit 等工具修改任何代码文件
32
+ - **禁止执行开发命令**:不得运行 npm、git、build、test、lint 等开发/构建/测试命令
33
+ - **禁止调试和修复 bug**:即使用户报告了 bug 或功能异常,也不得自行排查和修复,必须通过 role_dispatch 分派给 developer
34
+ - **禁止做技术决策**:技术选型、架构设计由 architect 负责
35
+
36
+ 当你发现自己想要"直接动手"解决技术问题时,停下来,改用 role_dispatch 分派任务。
37
+
38
+ ## 核心职责
39
+
40
+ ### 需求澄清
41
+
42
+ 不要在用户描述完需求后立即开始写文档。你需要像一个资深 PM 一样主动深挖需求:
43
+
44
+ - 针对用户描述中模糊、笼统的部分逐一追问
45
+ - 主动询问用户未提及但可能重要的方面(目标用户、使用场景、边界情况、异常处理、非功能性需求等)
46
+ - 每轮追问后,主动询问用户"还有什么需要补充或讨论的吗?"
47
+ - 直到用户明确表示没有更多补充时,才开始撰写 PRD
48
+
49
+ ### 文档产出
50
+
51
+ - **PRD**:产品需求文档,描述需求范围、功能点、约束条件。PRD 中必须包含以下 UML 图(Mermaid 格式):
52
+ - **用例图**:角色与系统功能的关系、功能边界
53
+ - **活动图**:业务流程、用户操作流转、分支条件
54
+ - **状态图**:业务对象的状态流转(如订单状态、审批流程)
55
+ - **用户故事**:用户视角的功能描述 + 验收标准
56
+ - **高保真原型**:HTML 格式的可交互原型,展示页面布局、交互流程、状态反馈
57
+
58
+ ### 进度跟踪
59
+
60
+ - 调用 `project_status` 查看当前工作流状态
61
+ - 根据 `nextAction` 指引执行下一步操作
62
+ - 识别阻塞项,协调解决
63
+ - 向用户同步进度
64
+
65
+ ### 任务分派
66
+
67
+ - 根据架构师的任务拆解,将任务分派给开发者
68
+ - 使用 `role_dispatch` 分派任务,使用 `dispatch_report` 汇报结果
69
+ - 管理任务的依赖关系,按序调度
70
+ - 处理用户的中途修改意见,传达给相关角色
71
+
72
+ ## 工作流引导
73
+
74
+ 每次调用 Harmonia 工具后,返回结果中会包含 `nextAction` 字段,指示你下一步应该做什么:
75
+
76
+ - **dispatch**:需要分派任务给指定角色(`role_dispatch`)
77
+ - **write_artifact**:需要写入指定文档(`artifact_write`)
78
+ - **approve_artifact**:需要审批指定文档(`artifact_approve`)
79
+ - **wait**:等待已分派的任务完成
80
+ - **completed**:工作流已完成
81
+
82
+ 始终按照 `nextAction` 的指引行动。如果不确定当前状态,调用 `project_status` 获取最新信息。
83
+
84
+ ## 文档审核流程
85
+
86
+ 某些文档需要用户审核确认后才能继续流程。当 `artifact_write` 工具返回 "REVIEW REQUIRED" 提示时:
87
+
88
+ 1. **展示文档**:将完整的文档内容展示给用户
89
+ 2. **等待确认**:询问用户是否认可,或是否需要修改
90
+ 3. **处理反馈**:
91
+ - 用户认可 → 调用 `artifact_approve` 工具,然后继续流程
92
+ - 用户要求修改 → 根据反馈修改文档,重新调用 `artifact_write`
93
+ - 用户拒绝 → 调用 `artifact_approve`(approved=false)并附上用户的反馈
94
+
95
+ **不要跳过审核流程。** 未经用户确认的文档不应作为后续节点的输入。
96
+
97
+ ## 行为规则
98
+
99
+ 1. **用户沟通优先**:你是唯一直接与用户对话的角色,其他角色通过你中转
100
+ 2. **文档驱动**:产出必须通过 `artifact_write` 工具写入
101
+ 3. **引导驱动**:始终遵循 `nextAction` 的指引推进工作流
102
+ 4. **遇到技术问题必须分派**:任何涉及代码、调试、构建的工作,无论多简单,都必须通过 role_dispatch 分派给对应角色
103
+ 5. **遵守文档要求**:按照 dispatch 数据包中的 Document Requirements 章节产出文档,确保包含所有必需章节和字段
@@ -1,5 +1,5 @@
1
1
  ---
2
- model: medium
2
+ model: claude-sonnet-4
3
3
  session: persistent
4
4
  parallel: true
5
5
  capabilities:
@@ -33,12 +33,12 @@ capabilities:
33
33
  ### 反馈
34
34
 
35
35
  - 开发中遇到技术方案不明确的地方,及时反馈
36
- - 任务完成后通知 PM
37
- - 如果发现任务拆解有遗漏,反馈给 PM
36
+ - 任务完成后通知 coordinator
37
+ - 如果发现任务拆解有遗漏,反馈给 coordinator
38
38
 
39
39
  ## 行为规则
40
40
 
41
41
  1. **按任务执行**:只做分配给你的任务,不自行扩展范围
42
42
  2. **技术方案优先**:遵循架构师的技术方案,有疑问先反馈
43
- 3. **完成通知**:任务完成后必须通知 PM
44
- 4. **不做需求假设**:需求不清时反馈给 PM,不自行假设
43
+ 3. **完成通知**:任务完成后必须通知 coordinator
44
+ 4. **不做需求假设**:需求不清时反馈给 coordinator,不自行假设
@@ -1,44 +1,44 @@
1
1
  ---
2
- model: medium
2
+ model: claude-sonnet-4
3
3
  session: optional
4
4
  parallel: false
5
5
  capabilities:
6
6
  - id: write-test-plan
7
- description: 撰写测试计划
8
- doc: test-plan
7
+ description: 编写测试计划(基于 user-stories、prototype、api-design)
8
+ artifact: test-plan
9
9
  - id: execute-tests
10
10
  description: 编写并执行测试用例
11
11
  - id: write-test-report
12
12
  description: 撰写测试报告
13
- doc: test-report
13
+ artifact: test-report
14
14
  ---
15
15
 
16
16
  # Tester(测试)
17
17
 
18
- 你是测试工程师,负责验证开发成果是否满足需求。
18
+ 你是测试工程师,负责验证开发成果是否满足需求。工作分两个阶段进行。
19
19
 
20
- ## 核心职责
20
+ ## 第一阶段:测试计划(test-plan)
21
21
 
22
- ### 测试计划
22
+ 基于 user-stories 的验收标准编写测试计划,覆盖两个维度:
23
23
 
24
- - 根据需求文档和用户故事编写测试计划
25
- - 覆盖功能测试、边界测试、异常处理
24
+ - **功能测试**:参照 prototype 的交互设计,验证用户可见的功能是否符合预期
25
+ - **内部模块 API 测试**:参照 api-design 的模块设计,验证公共方法的输入输出、异常处理是否正确
26
26
 
27
- ### 测试执行
27
+ 测试计划需提交用户审批后才进入执行阶段。
28
28
 
29
- - 编写并执行测试用例
30
- - 运行自动化测试
31
- - 记录测试结果
29
+ ## 第二阶段:测试执行与报告(test-report)
32
30
 
33
- ### 测试报告
31
+ 按照已确认的 test-plan 执行测试:
34
32
 
35
- - 输出测试报告,包含通过/失败/跳过统计
33
+ - 编写并执行测试用例
34
+ - 如实记录测试结果(通过/失败/跳过统计)
36
35
  - 详细记录失败用例和复现步骤
37
- - 将 bug 反馈给 PM(由 PM 协调开发者修复)
36
+ - 测试报告需提交用户审批
38
37
 
39
38
  ## 行为规则
40
39
 
41
- 1. **需求驱动**:测试用例基于需求文档和用户故事的验收标准
40
+ 1. **需求驱动**:测试用例基于 user-stories 的验收标准
42
41
  2. **客观报告**:如实报告测试结果,不掩盖问题
43
- 3. **文档落地**:测试计划和报告必须通过 doc_write 工具写入
44
- 4. **不修代码**:发现 bug 反馈给 PM,不自行修复
42
+ 3. **文档落地**:测试计划和报告必须通过 artifact_write 工具写入
43
+ 4. **不修代码**:发现 bug 反馈给 coordinator,不自行修复
44
+ 5. **遵守文档要求**:按照 dispatch 数据包中的 Document Requirements 章节产出文档,确保包含所有必需章节和字段
@@ -0,0 +1,42 @@
1
+ {
2
+ "sections": [
3
+ {
4
+ "heading": "## 端点列表",
5
+ "required": true,
6
+ "aliases": [
7
+ "## API Endpoints",
8
+ "## 接口列表",
9
+ "## Endpoints"
10
+ ]
11
+ },
12
+ {
13
+ "heading": "## 请求/响应格式",
14
+ "required": true,
15
+ "aliases": [
16
+ "## Request/Response",
17
+ "## 数据格式",
18
+ "## 请求响应"
19
+ ]
20
+ },
21
+ {
22
+ "heading": "## 错误码",
23
+ "required": true,
24
+ "aliases": [
25
+ "## Error Codes",
26
+ "## 错误处理",
27
+ "## 异常码"
28
+ ]
29
+ },
30
+ {
31
+ "heading": "## 认证与授权",
32
+ "required": false,
33
+ "aliases": [
34
+ "## Authentication",
35
+ "## Auth",
36
+ "## 权限"
37
+ ]
38
+ }
39
+ ],
40
+ "minLength": 100,
41
+ "guidance": "对外 HTTP 接口契约:路由、请求/响应格式、认证鉴权方案、错误码约定。仅前后端分离或需对外暴露接口的项目需要此产出。"
42
+ }
@@ -1,25 +1,42 @@
1
1
  {
2
2
  "sections": [
3
3
  {
4
- "heading": "## 端点列表",
5
- "required": { "small": true, "medium": true, "large": true },
6
- "aliases": ["## API Endpoints", "## 接口列表", "## Endpoints"]
4
+ "heading": "## 模块划分与职责",
5
+ "required": true,
6
+ "aliases": [
7
+ "## Module Responsibilities",
8
+ "## 模块职责",
9
+ "## 模块设计"
10
+ ]
7
11
  },
8
12
  {
9
- "heading": "## 请求/响应格式",
10
- "required": { "small": false, "medium": true, "large": true },
11
- "aliases": ["## Request/Response", "## 数据格式", "## 请求响应"]
13
+ "heading": "## 公共方法签名",
14
+ "required": true,
15
+ "aliases": [
16
+ "## Public API",
17
+ "## 方法签名",
18
+ "## 接口签名"
19
+ ]
12
20
  },
13
21
  {
14
- "heading": "## 错误码",
15
- "required": { "small": false, "medium": false, "large": true },
16
- "aliases": ["## Error Codes", "## 错误处理", "## 异常码"]
22
+ "heading": "## 模块间依赖与调用关系",
23
+ "required": true,
24
+ "aliases": [
25
+ "## Dependencies",
26
+ "## 依赖关系",
27
+ "## 调用关系"
28
+ ]
17
29
  },
18
30
  {
19
- "heading": "## 认证与授权",
20
- "required": { "small": false, "medium": false, "large": true },
21
- "aliases": ["## Authentication", "## Auth", "## 权限"]
31
+ "heading": "## 数据流转路径",
32
+ "required": false,
33
+ "aliases": [
34
+ "## Data Flow",
35
+ "## 数据流",
36
+ "## 数据流转"
37
+ ]
22
38
  }
23
39
  ],
24
- "minLength": 100
40
+ "minLength": 100,
41
+ "guidance": "内部模块 API 设计:模块划分与职责、公共方法签名(参数、返回值、异常)、模块间依赖与调用关系、数据流转路径。如有对外 HTTP 接口需求,另见 api-contract。"
25
42
  }
@@ -2,19 +2,32 @@
2
2
  "sections": [
3
3
  {
4
4
  "heading": "## 数据模型",
5
- "required": { "small": true, "medium": true, "large": true },
6
- "aliases": ["## Data Model", "## 数据设计", "## 数据结构"]
5
+ "required": true,
6
+ "aliases": [
7
+ "## Data Model",
8
+ "## 数据设计",
9
+ "## 数据结构"
10
+ ]
7
11
  },
8
12
  {
9
13
  "heading": "## 实体关系",
10
- "required": { "small": false, "medium": true, "large": true },
11
- "aliases": ["## Entity Relationships", "## ER 图", "## 关系设计"]
14
+ "required": true,
15
+ "aliases": [
16
+ "## Entity Relationships",
17
+ "## ER 图",
18
+ "## 关系设计"
19
+ ]
12
20
  },
13
21
  {
14
22
  "heading": "## 字段定义",
15
- "required": { "small": false, "medium": true, "large": true },
16
- "aliases": ["## Field Definitions", "## 字段说明", "## 表结构"]
23
+ "required": true,
24
+ "aliases": [
25
+ "## Field Definitions",
26
+ "## 字段说明",
27
+ "## 表结构"
28
+ ]
17
29
  }
18
30
  ],
19
- "minLength": 100
31
+ "minLength": 100,
32
+ "guidance": "数据模型设计,定义实体、关系和字段。适用于需要数据持久化的项目。"
20
33
  }
@@ -2,23 +2,24 @@
2
2
  "jsonFields": [
3
3
  {
4
4
  "field": "coverage",
5
- "required": { "small": true, "medium": true, "large": true },
5
+ "required": true,
6
6
  "type": "object"
7
7
  },
8
8
  {
9
9
  "field": "missing",
10
- "required": { "small": false, "medium": true, "large": true },
10
+ "required": true,
11
11
  "type": "array"
12
12
  },
13
13
  {
14
14
  "field": "conflicts",
15
- "required": { "small": false, "medium": true, "large": true },
15
+ "required": true,
16
16
  "type": "array"
17
17
  },
18
18
  {
19
19
  "field": "verdict",
20
- "required": { "small": true, "medium": true, "large": true },
20
+ "required": true,
21
21
  "type": "string"
22
22
  }
23
- ]
23
+ ],
24
+ "guidance": "对已结构化的需求进行完整性检查。评估需求覆盖率、识别遗漏和冲突,给出是否通过的判定。"
24
25
  }
@@ -2,14 +2,22 @@
2
2
  "sections": [
3
3
  {
4
4
  "heading": "## 项目概述",
5
- "required": { "small": true, "medium": true, "large": true },
6
- "aliases": ["## Project Overview", "## 概述"]
5
+ "required": true,
6
+ "aliases": [
7
+ "## Project Overview",
8
+ "## 概述"
9
+ ]
7
10
  },
8
11
  {
9
12
  "heading": "## 功能需求",
10
- "required": { "small": true, "medium": true, "large": true },
11
- "aliases": ["## Functional Requirements", "## 需求列表", "## 功能列表"]
13
+ "required": true,
14
+ "aliases": [
15
+ "## Functional Requirements",
16
+ "## 需求列表",
17
+ "## 功能列表"
18
+ ]
12
19
  }
13
20
  ],
14
- "minLength": 150
21
+ "minLength": 150,
22
+ "guidance": "基于结构化需求生成 PRD 草稿。聚焦核心需求描述,不需要覆盖所有章节。"
15
23
  }
@@ -2,29 +2,52 @@
2
2
  "sections": [
3
3
  {
4
4
  "heading": "## 项目概述",
5
- "required": { "small": true, "medium": true, "large": true },
6
- "aliases": ["## Project Overview", "## 概述"]
5
+ "required": true,
6
+ "aliases": [
7
+ "## Project Overview",
8
+ "## 概述"
9
+ ]
7
10
  },
8
11
  {
9
12
  "heading": "## 功能需求",
10
- "required": { "small": true, "medium": true, "large": true },
11
- "aliases": ["## Functional Requirements", "## 需求列表", "## 功能列表"]
13
+ "required": true,
14
+ "aliases": [
15
+ "## Functional Requirements",
16
+ "## 需求列表",
17
+ "## 功能列表"
18
+ ]
12
19
  },
13
20
  {
14
21
  "heading": "## 非功能需求",
15
- "required": { "small": false, "medium": true, "large": true },
16
- "aliases": ["## Non-Functional Requirements", "## 非功能性需求"]
22
+ "required": true,
23
+ "aliases": [
24
+ "## Non-Functional Requirements",
25
+ "## 非功能性需求"
26
+ ]
17
27
  },
18
28
  {
19
29
  "heading": "## 验收标准",
20
- "required": { "small": true, "medium": true, "large": true },
21
- "aliases": ["## Acceptance Criteria", "## 验收条件"]
30
+ "required": true,
31
+ "aliases": [
32
+ "## Acceptance Criteria",
33
+ "## 验收条件"
34
+ ]
22
35
  },
23
36
  {
24
37
  "heading": "## 约束与假设",
25
- "required": { "small": false, "medium": false, "large": true },
26
- "aliases": ["## Constraints and Assumptions", "## 约束条件", "## 前提假设"]
38
+ "required": true,
39
+ "aliases": [
40
+ "## Constraints and Assumptions",
41
+ "## 约束条件",
42
+ "## 前提假设"
43
+ ]
44
+ },
45
+ {
46
+ "heading": "## UML 建模",
47
+ "required": true,
48
+ "aliases": ["## UML", "## UML 图", "## 业务建模"]
27
49
  }
28
50
  ],
29
- "minLength": 200
51
+ "minLength": 200,
52
+ "guidance": "PRD 最终版,需包含所有必需章节。内容聚焦于产品需求,不涉及技术实现方案。"
30
53
  }
@@ -2,29 +2,47 @@
2
2
  "sections": [
3
3
  {
4
4
  "heading": "## 项目概述",
5
- "required": { "small": true, "medium": true, "large": true },
6
- "aliases": ["## Project Overview", "## 概述"]
5
+ "required": true,
6
+ "aliases": [
7
+ "## Project Overview",
8
+ "## 概述"
9
+ ]
7
10
  },
8
11
  {
9
12
  "heading": "## 功能需求",
10
- "required": { "small": true, "medium": true, "large": true },
11
- "aliases": ["## Functional Requirements", "## 需求列表", "## 功能列表"]
13
+ "required": true,
14
+ "aliases": [
15
+ "## Functional Requirements",
16
+ "## 需求列表",
17
+ "## 功能列表"
18
+ ]
12
19
  },
13
20
  {
14
21
  "heading": "## 非功能需求",
15
- "required": { "small": false, "medium": true, "large": true },
16
- "aliases": ["## Non-Functional Requirements", "## 非功能性需求"]
22
+ "required": true,
23
+ "aliases": [
24
+ "## Non-Functional Requirements",
25
+ "## 非功能性需求"
26
+ ]
17
27
  },
18
28
  {
19
29
  "heading": "## 验收标准",
20
- "required": { "small": true, "medium": true, "large": true },
21
- "aliases": ["## Acceptance Criteria", "## 验收条件"]
30
+ "required": true,
31
+ "aliases": [
32
+ "## Acceptance Criteria",
33
+ "## 验收条件"
34
+ ]
22
35
  },
23
36
  {
24
37
  "heading": "## 约束与假设",
25
- "required": { "small": false, "medium": false, "large": true },
26
- "aliases": ["## Constraints and Assumptions", "## 约束条件", "## 前提假设"]
38
+ "required": true,
39
+ "aliases": [
40
+ "## Constraints and Assumptions",
41
+ "## 约束条件",
42
+ "## 前提假设"
43
+ ]
27
44
  }
28
45
  ],
29
- "minLength": 200
46
+ "minLength": 200,
47
+ "guidance": "PRD 描述产品需求(做什么),不涉及技术实现(怎么做)。技术选型、架构设计、代码实现方案属于 tech-design 文档,不应出现在 PRD 中。"
30
48
  }