@chenmk/superflow 0.1.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 (198) hide show
  1. package/INSTALL.en.md +106 -0
  2. package/INSTALL.md +664 -0
  3. package/LICENSE +21 -0
  4. package/README.md +142 -0
  5. package/README.zh-CN.md +117 -0
  6. package/assets/context-templates/business-rules.md +98 -0
  7. package/assets/context-templates/decisions.md +153 -0
  8. package/assets/context-templates/external-systems.md +166 -0
  9. package/assets/context-templates/incidents.md +89 -0
  10. package/assets/manifest.json +53 -0
  11. package/assets/prompts/superflow-archive.md +9 -0
  12. package/assets/prompts/superflow-clarify.md +10 -0
  13. package/assets/prompts/superflow-design.md +10 -0
  14. package/assets/prompts/superflow-docs.md +10 -0
  15. package/assets/prompts/superflow-implement.md +10 -0
  16. package/assets/prompts/superflow-pipeline.md +13 -0
  17. package/assets/prompts/superflow-verify.md +10 -0
  18. package/assets/rules/superflow-phase-guard.md +50 -0
  19. package/assets/scripts/claude-auto-backup-hook.sh +313 -0
  20. package/assets/scripts/codex-auto-backup-hook.sh +361 -0
  21. package/assets/scripts/install-sql-pre-commit.sh +44 -0
  22. package/assets/scripts/superflow-contract-hooks.sh +744 -0
  23. package/assets/scripts/superflow-delivery-check.sh +315 -0
  24. package/assets/scripts/superflow-dependency-update-hook.sh +161 -0
  25. package/assets/scripts/superflow-enforce-hook.sh +70 -0
  26. package/assets/scripts/superflow-hook-guard.sh +132 -0
  27. package/assets/scripts/superflow-integration-evidence-hook.sh +80 -0
  28. package/assets/scripts/superflow-sql-sync-hook.py +950 -0
  29. package/assets/scripts/superflow-test-report-lint.py +433 -0
  30. package/assets/scripts/superflow-verify-integration.sh +90 -0
  31. package/assets/scripts/sync-settings-json.py +52 -0
  32. package/assets/skills/api-doc-changelog/SKILL.md +193 -0
  33. package/assets/skills/openspec-apply-change/SKILL.md +156 -0
  34. package/assets/skills/openspec-archive-change/SKILL.md +114 -0
  35. package/assets/skills/openspec-explore/SKILL.md +288 -0
  36. package/assets/skills/openspec-propose/SKILL.md +110 -0
  37. package/assets/skills/superflow-archive/SKILL.md +61 -0
  38. package/assets/skills/superflow-clarify/SKILL.md +146 -0
  39. package/assets/skills/superflow-clarify/agents/openai.yaml +4 -0
  40. package/assets/skills/superflow-design/SKILL.md +83 -0
  41. package/assets/skills/superflow-design/agents/openai.yaml +4 -0
  42. package/assets/skills/superflow-docs/SKILL.md +316 -0
  43. package/assets/skills/superflow-docs/agents/openai.yaml +4 -0
  44. package/assets/skills/superflow-hotfix/SKILL.md +48 -0
  45. package/assets/skills/superflow-implement/SKILL.md +461 -0
  46. package/assets/skills/superflow-implement/agents/openai.yaml +4 -0
  47. package/assets/skills/superflow-pipeline/SKILL.md +844 -0
  48. package/assets/skills/superflow-pipeline/agents/openai.yaml +4 -0
  49. package/assets/skills/superflow-pipeline/references/api-design-template.md +431 -0
  50. package/assets/skills/superflow-pipeline/references/architecture-design-template.md +119 -0
  51. package/assets/skills/superflow-pipeline/references/batch-prompt-template.md +536 -0
  52. package/assets/skills/superflow-pipeline/references/batch-split-guide.md +140 -0
  53. package/assets/skills/superflow-pipeline/references/decision-point.md +30 -0
  54. package/assets/skills/superflow-pipeline/references/dirty-worktree.md +35 -0
  55. package/assets/skills/superflow-pipeline/references/document-templates.md +123 -0
  56. package/assets/skills/superflow-pipeline/references/feature-gated-workflow.md +124 -0
  57. package/assets/skills/superflow-pipeline/references/implementation-prompt-template.md +1056 -0
  58. package/assets/skills/superflow-pipeline/references/mock-strategy-guide.md +86 -0
  59. package/assets/skills/superflow-pipeline/references/openspec-format.md +57 -0
  60. package/assets/skills/superflow-pipeline/references/orchestration.md +639 -0
  61. package/assets/skills/superflow-pipeline/references/p0-baseline-template.md +174 -0
  62. package/assets/skills/superflow-pipeline/references/project-config.md +40 -0
  63. package/assets/skills/superflow-pipeline/references/prompt-usage-template.md +152 -0
  64. package/assets/skills/superflow-pipeline/references/quality-gate.md +299 -0
  65. package/assets/skills/superflow-pipeline/references/quality-standards.md +190 -0
  66. package/assets/skills/superflow-pipeline/references/reviewer-checklist.md +154 -0
  67. package/assets/skills/superflow-pipeline/references/sql-risk-review-checklist.md +323 -0
  68. package/assets/skills/superflow-pipeline/references/subagent-progress.md +90 -0
  69. package/assets/skills/superflow-pipeline/references/superpower-technical-design-template.md +125 -0
  70. package/assets/skills/superflow-pipeline/references/test-execution-template.md +220 -0
  71. package/assets/skills/superflow-pipeline/references/test-guide.md +30 -0
  72. package/assets/skills/superflow-pipeline/references/traceability-matrix.md +106 -0
  73. package/assets/skills/superflow-pipeline/references/validation-integrity.md +134 -0
  74. package/assets/skills/superflow-pipeline/scripts/superflow-archive.sh +178 -0
  75. package/assets/skills/superflow-pipeline/scripts/superflow-env.sh +118 -0
  76. package/assets/skills/superflow-pipeline/scripts/superflow-guard.sh +428 -0
  77. package/assets/skills/superflow-pipeline/scripts/superflow-handoff.sh +296 -0
  78. package/assets/skills/superflow-pipeline/scripts/superflow-state.sh +574 -0
  79. package/assets/skills/superflow-pipeline/scripts/superflow-status.sh +172 -0
  80. package/assets/skills/superflow-pipeline/scripts/superflow-yaml-validate.sh +138 -0
  81. package/assets/skills/superflow-table-impact-analysis/SKILL.md +77 -0
  82. package/assets/skills/superflow-tweak/SKILL.md +46 -0
  83. package/assets/skills/superflow-verify/SKILL.md +112 -0
  84. package/assets/skills-en/api-doc-changelog/SKILL.md +193 -0
  85. package/assets/skills-en/openspec-apply-change/SKILL.md +156 -0
  86. package/assets/skills-en/openspec-archive-change/SKILL.md +114 -0
  87. package/assets/skills-en/openspec-explore/SKILL.md +288 -0
  88. package/assets/skills-en/openspec-propose/SKILL.md +110 -0
  89. package/assets/skills-en/superflow-archive/SKILL.md +61 -0
  90. package/assets/skills-en/superflow-clarify/SKILL.md +146 -0
  91. package/assets/skills-en/superflow-clarify/agents/openai.yaml +4 -0
  92. package/assets/skills-en/superflow-design/SKILL.md +83 -0
  93. package/assets/skills-en/superflow-design/agents/openai.yaml +4 -0
  94. package/assets/skills-en/superflow-docs/SKILL.md +316 -0
  95. package/assets/skills-en/superflow-docs/agents/openai.yaml +4 -0
  96. package/assets/skills-en/superflow-hotfix/SKILL.md +48 -0
  97. package/assets/skills-en/superflow-implement/SKILL.md +461 -0
  98. package/assets/skills-en/superflow-implement/agents/openai.yaml +4 -0
  99. package/assets/skills-en/superflow-pipeline/SKILL.md +844 -0
  100. package/assets/skills-en/superflow-pipeline/agents/openai.yaml +4 -0
  101. package/assets/skills-en/superflow-pipeline/references/api-design-template.md +431 -0
  102. package/assets/skills-en/superflow-pipeline/references/architecture-design-template.md +119 -0
  103. package/assets/skills-en/superflow-pipeline/references/batch-prompt-template.md +536 -0
  104. package/assets/skills-en/superflow-pipeline/references/batch-split-guide.md +140 -0
  105. package/assets/skills-en/superflow-pipeline/references/decision-point.md +30 -0
  106. package/assets/skills-en/superflow-pipeline/references/dirty-worktree.md +35 -0
  107. package/assets/skills-en/superflow-pipeline/references/document-templates.md +123 -0
  108. package/assets/skills-en/superflow-pipeline/references/feature-gated-workflow.md +124 -0
  109. package/assets/skills-en/superflow-pipeline/references/implementation-prompt-template.md +1056 -0
  110. package/assets/skills-en/superflow-pipeline/references/mock-strategy-guide.md +86 -0
  111. package/assets/skills-en/superflow-pipeline/references/openspec-format.md +57 -0
  112. package/assets/skills-en/superflow-pipeline/references/orchestration.md +639 -0
  113. package/assets/skills-en/superflow-pipeline/references/p0-baseline-template.md +174 -0
  114. package/assets/skills-en/superflow-pipeline/references/project-config.md +40 -0
  115. package/assets/skills-en/superflow-pipeline/references/prompt-usage-template.md +152 -0
  116. package/assets/skills-en/superflow-pipeline/references/quality-gate.md +299 -0
  117. package/assets/skills-en/superflow-pipeline/references/quality-standards.md +190 -0
  118. package/assets/skills-en/superflow-pipeline/references/reviewer-checklist.md +154 -0
  119. package/assets/skills-en/superflow-pipeline/references/sql-risk-review-checklist.md +323 -0
  120. package/assets/skills-en/superflow-pipeline/references/subagent-progress.md +90 -0
  121. package/assets/skills-en/superflow-pipeline/references/superpower-technical-design-template.md +125 -0
  122. package/assets/skills-en/superflow-pipeline/references/test-execution-template.md +220 -0
  123. package/assets/skills-en/superflow-pipeline/references/test-guide.md +30 -0
  124. package/assets/skills-en/superflow-pipeline/references/traceability-matrix.md +106 -0
  125. package/assets/skills-en/superflow-pipeline/references/validation-integrity.md +134 -0
  126. package/assets/skills-en/superflow-pipeline/scripts/superflow-archive.sh +178 -0
  127. package/assets/skills-en/superflow-pipeline/scripts/superflow-env.sh +118 -0
  128. package/assets/skills-en/superflow-pipeline/scripts/superflow-guard.sh +428 -0
  129. package/assets/skills-en/superflow-pipeline/scripts/superflow-handoff.sh +296 -0
  130. package/assets/skills-en/superflow-pipeline/scripts/superflow-state.sh +574 -0
  131. package/assets/skills-en/superflow-pipeline/scripts/superflow-status.sh +172 -0
  132. package/assets/skills-en/superflow-pipeline/scripts/superflow-yaml-validate.sh +138 -0
  133. package/assets/skills-en/superflow-table-impact-analysis/SKILL.md +77 -0
  134. package/assets/skills-en/superflow-tweak/SKILL.md +46 -0
  135. package/assets/skills-en/superflow-verify/SKILL.md +112 -0
  136. package/dist/cli/index.js +186 -0
  137. package/dist/cli/index.js.map +1 -0
  138. package/dist/commands/archive.js +6 -0
  139. package/dist/commands/archive.js.map +1 -0
  140. package/dist/commands/clarify.js +6 -0
  141. package/dist/commands/clarify.js.map +1 -0
  142. package/dist/commands/design.js +6 -0
  143. package/dist/commands/design.js.map +1 -0
  144. package/dist/commands/docs.js +6 -0
  145. package/dist/commands/docs.js.map +1 -0
  146. package/dist/commands/doctor.js +473 -0
  147. package/dist/commands/doctor.js.map +1 -0
  148. package/dist/commands/implement.js +6 -0
  149. package/dist/commands/implement.js.map +1 -0
  150. package/dist/commands/init.js +471 -0
  151. package/dist/commands/init.js.map +1 -0
  152. package/dist/commands/pipeline.js +6 -0
  153. package/dist/commands/pipeline.js.map +1 -0
  154. package/dist/commands/scan.js +59 -0
  155. package/dist/commands/scan.js.map +1 -0
  156. package/dist/commands/status.js +173 -0
  157. package/dist/commands/status.js.map +1 -0
  158. package/dist/commands/uninstall.js +213 -0
  159. package/dist/commands/uninstall.js.map +1 -0
  160. package/dist/commands/update.js +187 -0
  161. package/dist/commands/update.js.map +1 -0
  162. package/dist/commands/verify.js +6 -0
  163. package/dist/commands/verify.js.map +1 -0
  164. package/dist/core/assets.js +27 -0
  165. package/dist/core/assets.js.map +1 -0
  166. package/dist/core/context.js +100 -0
  167. package/dist/core/context.js.map +1 -0
  168. package/dist/core/dependencies.js +146 -0
  169. package/dist/core/dependencies.js.map +1 -0
  170. package/dist/core/detect.js +71 -0
  171. package/dist/core/detect.js.map +1 -0
  172. package/dist/core/i18n.js +103 -0
  173. package/dist/core/i18n.js.map +1 -0
  174. package/dist/core/integrity.js +46 -0
  175. package/dist/core/integrity.js.map +1 -0
  176. package/dist/core/manifest.js +18 -0
  177. package/dist/core/manifest.js.map +1 -0
  178. package/dist/core/prompts.js +20 -0
  179. package/dist/core/prompts.js.map +1 -0
  180. package/dist/core/registry.js +134 -0
  181. package/dist/core/registry.js.map +1 -0
  182. package/dist/core/rules.js +17 -0
  183. package/dist/core/rules.js.map +1 -0
  184. package/dist/core/scripts.js +40 -0
  185. package/dist/core/scripts.js.map +1 -0
  186. package/dist/core/skill-check.js +31 -0
  187. package/dist/core/skill-check.js.map +1 -0
  188. package/dist/core/skills.js +56 -0
  189. package/dist/core/skills.js.map +1 -0
  190. package/dist/core/state.js +43 -0
  191. package/dist/core/state.js.map +1 -0
  192. package/dist/types.js +2 -0
  193. package/dist/types.js.map +1 -0
  194. package/dist/utils/path.js +11 -0
  195. package/dist/utils/path.js.map +1 -0
  196. package/dist/utils/shell.js +29 -0
  197. package/dist/utils/shell.js.map +1 -0
  198. package/package.json +60 -0
@@ -0,0 +1,536 @@
1
+ # 分批 Implementation Prompt 模板
2
+
3
+ ## 模板结构
4
+
5
+ 每份 implementation prompt 必须包含以下全部章节。缺失任何一节都可能导致 agent 偏离设计。
6
+
7
+ ---
8
+
9
+ ## 标准模板
10
+
11
+ ```
12
+ 使用superpower技能,开启合适的团队,最少包含一名开发和一名测试交叉验证进行需求开发,测试验证闭环交付,更新测试文档和api.md:
13
+
14
+ # P{batch-id} Prompt:{batch-name}
15
+
16
+ ## 团队要求
17
+ - 至少 1 名开发 Worker
18
+ - 至少 1 名独立 Tester
19
+ - Leader 负责协调、抽查、收口
20
+ - Tester 必须与开发交叉验证,不能直接复用开发自测结论
21
+
22
+ ## 必读文档(强制)
23
+ - [spec.md](../spec.md)
24
+ - [design.md](../design.md)
25
+ - [Superpowers 技术详设](../docs/superpowers/specs/YYYY-MM-DD-{change-id}-technical-design.md)
26
+ - [tasks.md](../tasks.md)
27
+ - [api.md](../api.md)
28
+ - [tests.md](../tests.md)
29
+ - [prompt/implementation.md](implementation.md)
30
+ - **本需求汇总 SQL 文件**:`../sql/{汇总SQL文件名}`(如不存在,说明本需求尚无数据库变更,但开始前仍需核查依赖表结构)
31
+
32
+ > Markdown 链接要求:本 prompt 中引用的其他 `.md` 交接文档必须使用相对路径
33
+ > Markdown 链接,且能从当前 prompt 文件位置点击跳转;不要只写纯文本文件名。
34
+
35
+ ## 数据库前置门禁(强制,在写任何代码前必须完成)
36
+
37
+ 在修改业务代码前,必须先完成数据库结构核查,确保开发环境数据库与设计文档一致:
38
+
39
+ 1. **列出本批次依赖的表/字段/索引/默认值/初始化数据**:对照 design.md / api.md / spec.md / tasks.md 中涉及的数据库变更,列出本批次需要的全部数据库结构。
40
+ 2. **连接开发环境数据库执行核查**:对每个依赖的表执行 `SHOW CREATE TABLE` / `SHOW COLUMNS` / `SELECT` 确认实际结构。
41
+ 3. **发现缺失时执行汇总 SQL**:如果数据库结构或数据不满足设计要求,从本需求汇总 SQL 文件中找到对应脚本,连接开发环境数据库执行。
42
+ 4. **复查确认**:执行成功后再次查询确认结构/数据已生效。
43
+ 5. **只有数据库满足设计后,才能继续业务代码开发。**
44
+ 6. **完成前必须收口版本总 SQL**:本批新增/修改的表、字段、索引、默认值、初始化数据必须已合并进需求级汇总 SQL 文件,不能只存在于开发库、临时 SQL 或 agent 回复中。
45
+
46
+ 禁止:
47
+ - 禁止为绕过数据库缺字段、缺默认值、缺初始化数据而修改业务逻辑。
48
+ - 禁止自行创建独立 SQL 文件(所有 SQL 统一追加到需求级汇总 SQL 文件)。
49
+ - 禁止用 mock、单测通过或 BUILD SUCCESS 代替真实数据库结构核查。
50
+ - SQL 脚本执行失败时必须停下来报告真实错误,不允许改业务代码绕过。
51
+ - 禁止因为开发库已有字段就跳过总 SQL;测试/发布部署以版本总 SQL 为准。
52
+
53
+ ## 版本总 SQL 收口对账(强制,任务完成前必须输出)
54
+
55
+ 涉及数据库的任务必须在完成报告中提供以下表格;未提供视为任务未完成:
56
+
57
+ | P编号 | 表 | 字段/索引/数据 | 源码引用 | 总SQL位置 | 开发库状态 | 测试库状态 | 处理结论 |
58
+ |---|---|---|---|---|---|---|---|
59
+ | P{batch-id} | {table} | {column/index/data} | {class/mapper/method} | {sql file + line/comment block} | {已存在/缺失/差异} | {已存在/缺失/差异} | {补总SQL/MODIFY/不采纳说明} |
60
+
61
+ 收口规则:
62
+ - 源码/Mapper 会读写的字段,必须能在 `测试库当前结构 + 版本总 SQL 执行后结构` 中找到。
63
+ - 开发库已有但总 SQL 缺失时,必须补总 SQL。
64
+ - 测试库已有字段不得重复 `ADD COLUMN`;如果字段类型或注释与开发库不一致,生成 `MODIFY` 或写明不采纳理由。
65
+ - 临时 SQL、单个 P 任务 SQL、开发库手工变更都不能替代版本总 SQL。
66
+
67
+ ## 强制执行顺序(数据库迁移类任务硬门禁)
68
+
69
+ **自动检测规则**:生成本 prompt 时,如本批次涉及以下任一条件,则**必须**包含本章节,不可跳过:
70
+ - 新增表
71
+ - 删除字段
72
+ - 物理删除旧字段
73
+ - 表结构重构
74
+ - 旧数据迁移
75
+ - 状态字段从持久化改为动态计算
76
+ - 分页筛选依赖新表或新状态逻辑
77
+ - 总版 SQL 和开发库迁移 SQL 分离
78
+ - 需要迁移当前开发库/测试库已有数据
79
+
80
+ **以上条件任一满足时,必须先完成以下步骤,才允许开始 Java 编码:**
81
+
82
+ 1. **当前数据库结构核对**
83
+ - 连接开发环境数据库,对涉及表执行 `SHOW CREATE TABLE {表名}`
84
+ - 对关键表执行 `DESC {表名}`
85
+ - 确认新表/新字段是否已存在
86
+ - 确认旧字段当前状态(是否存在、是否已废弃、是否有数据)
87
+ - 记录核对结果到 test-report
88
+
89
+ 2. **表结构改造**
90
+ - 新库基线 SQL 按最终结构整理
91
+ - 已有开发库/测试库使用单独迁移 SQL(与总版基线 SQL 分离)
92
+ - 本地迁移 SQL 如要求不提交 Git,必须放入 Git ignored 路径
93
+ - 执行后再次 `SHOW CREATE TABLE` 确认结构生效
94
+
95
+ 3. **旧数据迁移**
96
+ - 明确旧数据如何迁移到新表/新字段
97
+ - 明确迁移数量核对 SQL(迁移前 COUNT、迁移后 COUNT)
98
+ - 明确迁移失败处理策略:迁移失败必须停止,不得写代码绕过
99
+ - 执行迁移脚本后执行核对 SQL 确认数量一致
100
+
101
+ 4. **test-report 证据回填**
102
+ - SQL 文件路径(基线 SQL + 迁移 SQL)
103
+ - 执行数据库连接来源(host/port/database)
104
+ - 执行时间
105
+ - 执行结果(成功/失败)
106
+ - `SHOW CREATE TABLE` 结果摘要
107
+ - 迁移前后数量对比
108
+ - 关键联查结果
109
+
110
+ 5. **编码许可判定**
111
+ - 上述 1~4 全部完成后,才允许进入后续编码工作
112
+ - 如果表结构改造或数据迁移失败,必须停止并报告,禁止继续编码
113
+ - 禁止先写业务代码绕过数据库状态不一致
114
+ - 禁止只靠 `BUILD SUCCESS` 或编译通过宣称完成
115
+
116
+ **禁止事项:**
117
+ - 禁止为绕过数据库缺字段、缺默认值、缺初始化数据、历史数据未迁移而修改业务逻辑
118
+ - 禁止自行创建独立 SQL 文件。所有 SQL 脚本必须追加到需求级汇总 SQL 文件
119
+ - 禁止把 SQL 写在临时说明里但不追加到需求汇总 SQL 文件
120
+ - 禁止用 mock、单测通过或 BUILD SUCCESS 代替真实数据库结构核查和数据迁移验证
121
+ - SQL 脚本执行失败时,必须停下来报告真实错误,不允许改业务代码绕过
122
+ - 禁止将本地迁移 SQL 提交到 Git(如项目约定不提交)
123
+ - 禁止每个独立任务只维护自己的 SQL 片段而不合并版本总 SQL
124
+
125
+ ## 禁止事项(强制)
126
+ - 禁止让 Superpowers 技术详设覆盖 OpenSpec/SDD 的需求、API、DB、SQL、字段语义合同、tests 或验收门禁
127
+ - 禁止在 prompt 内新增不属于 `design.md`、`api.md`、`tests.md` 或 Superpowers 技术详设的实现方案
128
+ - 如 Superpowers 技术详设不清楚,只能列疑点并停下确认,不允许自行脑补一套新方案
129
+ - 禁止用"单元测试通过"替代真实启动应用后的 API 集成测试
130
+ - 禁止在未执行 `~/.codex/hooks/superflow-verify-integration.sh <test-report.md>` 或脚本失败时交付
131
+
132
+ ## Superpower 技术详设继承(强制)
133
+
134
+ 从 [Superpowers 技术详设](../docs/superpowers/specs/YYYY-MM-DD-{change-id}-technical-design.md) 复制或摘要本批次相关内容。
135
+ 本章节继承源码级 HOW 和执行策略,不定义新的需求、API、DB、字段语义或验收标准。
136
+
137
+ | 执行模式 | 团队角色 | 拆分建议 | TDD/RED切入点 | 独立Tester验证点 | 高风险猜测点 | 禁止自由发挥项 | 进入prompt的强制要求 |
138
+ |----------|----------|----------|----------------|------------------|--------------|----------------|----------------------|
139
+ | ____ | Worker / Tester / Reviewer / Leader | ____ | ____ | ____ | ____ | ____ | ____ |
140
+
141
+ 规则:
142
+ - OpenSpec/SDD 的 [design.md](../design.md)、[api.md](../api.md)、[tests.md](../tests.md) 是设计事实源。
143
+ - Superpowers 技术详设负责源码级 HOW、开发、测试、Review、worktree、红绿验证和交付闭环。
144
+ - 如果技术详设或本表与 design/api/tests 冲突,停止并回到 `$superflow-docs` 修正文档;禁止 Worker 自行改合同。
145
+
146
+ ## 字段/状态反向影响面核实(强制)
147
+
148
+ 如果本批涉及字段值、状态/枚举、在线离线、删除恢复、同步标记、支付退款状态、
149
+ 第三方状态或任何会被其他代码读取的值,必须先从 Superpowers 技术详设复制
150
+ `Field And Status Reverse Impact` 矩阵,并按矩阵完成反向核实。
151
+
152
+ 必须执行并记录:
153
+
154
+ ```bash
155
+ rg -n "<field>|<enum>|<status>|<column>" .
156
+ rg -n "<setter>|<getter>|<mapper column>|<dto field>" src test
157
+ ```
158
+
159
+ 同时检查 Mapper XML、实体注解、DTO/VO、SQL 脚本、定时任务、MQ/事件消费、
160
+ 回调、第三方适配器、共享表/SDK 和兄弟仓消费方。
161
+
162
+ 完成报告必须包含:
163
+
164
+ | 字段/状态 | 写入点 | 读取/过滤点 | 派生/同步点 | 跨模块消费方 | 已同步调整 | 不调整理由 | 覆盖测试 |
165
+ |---|---|---|---|---|---|---|---|
166
+ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |
167
+
168
+ 只证明直接 setter/writer 已修改,不证明读取方、过滤方、派生同步方和消费方,
169
+ 视为未完成。
170
+
171
+ ## SDD 门禁激活(第一步,在所有编码工作之前执行)
172
+
173
+ 本机已配置 Codex Hooks,会在 Edit/Write 时自动拦截。你必须按以下顺序激活:
174
+
175
+ ```bash
176
+ # 1. 在主仓库根目录创建门禁标记
177
+ cd {project-path}
178
+ touch .sdd-enforced
179
+ echo ".sdd-enforced" >> .gitignore
180
+ echo ".db-verified" >> .gitignore
181
+
182
+ # 2. 创建 worktree 并进入(见下文"并行开发要求")
183
+
184
+ # 3. 进入 worktree 后也创建门禁标记
185
+ touch .sdd-enforced
186
+
187
+ # 4. 完成数据库前置门禁后创建核查通过标记
188
+ touch .db-verified
189
+
190
+ # 任务完成后清理
191
+ rm -f .sdd-enforced .db-verified
192
+ cd {project-path} && rm -f .sdd-enforced
193
+ ```
194
+
195
+ **跳过以上步骤直接编辑代码会被 Hook 拦截。**
196
+
197
+ ## 本批目标
198
+ {一句话描述本批要完成的业务闭环}
199
+
200
+ 示例:
201
+ - 完成主数据的 CRUD 接口,包括数据库表、实体、Mapper、Service、Controller,支持后台列表查询和批量导入模板下载。
202
+ - 完成外部事件接入,包括消息解析、准入校验、事件格式化、向 MQ 发布 BusinessEvent。
203
+
204
+ ## 并行开发要求(Worktree 隔离)
205
+
206
+ 本任务必须使用独立 git worktree 开分支开发,避免多个 agent 在同一工作树并行修改互相覆盖。
207
+
208
+ 在项目根目录执行:
209
+
210
+ ```bash
211
+ git status --short
212
+ git worktree add -b feature/{change-id}-{batch-id}-{short-name} ../{project}-{batch-id}-worktree HEAD
213
+ cd ../{project}-{batch-id}-worktree
214
+ ```
215
+
216
+ 如果分支已存在,改用:
217
+
218
+ ```bash
219
+ git worktree add ../{project}-{batch-id}-worktree feature/{change-id}-{batch-id}-{short-name}
220
+ cd ../{project}-{batch-id}-worktree
221
+ ```
222
+
223
+ 所有编码、测试、文档更新、代码评审和 git 提交都必须在该 worktree 内完成。不要在主工作树直接开发,不要回滚或删除其他 agent 的改动。完成后在报告中写明 worktree 路径、分支名和提交号。
224
+
225
+ ### Worktree 进入后强制验证(必须执行)
226
+
227
+ ```bash
228
+ pwd
229
+ git branch --show-current
230
+ git status --short
231
+ ```
232
+ - 确认当前目录包含本批次 worktree 名称
233
+ - 确认当前分支是本批次分支
234
+ - 如有异常,停止工作,不得开始任何代码编辑
235
+
236
+ ### 端口管理(强制)
237
+
238
+ 本任务预设端口 = {base-port} + {batch-id} = {port}(如 9250 + 15 = 9265)。
239
+
240
+ 启动应用前检查端口占用:
241
+ ```bash
242
+ PORT={port}
243
+ lsof -i :$PORT 2>/dev/null || netstat -tlnp 2>/dev/null | grep ":$PORT "
244
+ ```
245
+ - 若预设端口被其他 agent 占用 → 向后递增查找可用端口(到 9350),禁止关闭其他进程
246
+ - 若更换端口,所有接口测试 URL 同步更新
247
+
248
+ ### 编译依赖问题处理(强制)
249
+
250
+ 编译失败时禁止直接终止:
251
+ - 分析错误类型 → 对照 design.md 检查 → 尝试修复 → 重新 clean compile
252
+ - 其他 agent 能正常编译说明环境是对的,问题出在自己的代码
253
+ - 15 分钟无法解决才上报 Leader
254
+
255
+ ### Token 获取(强制)
256
+
257
+ 接口测试必须先获取真实 token:
258
+ ```bash
259
+ # 1. 获取验证码(带 Cookie)
260
+ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
261
+ "http://localhost:{port}{context-path}/captcha/image" -o /dev/null
262
+
263
+ # 2. 登录(表单提交)
264
+ curl -s -c /tmp/cookies.txt -b /tmp/cookies.txt \
265
+ -X POST "http://localhost:{port}{context-path}/login" \
266
+ -H "Content-Type: application/x-www-form-urlencoded" \
267
+ -d "userName=admin&password=...&captchaCode=9999"
268
+
269
+ # 3. 从响应 data.token 提取,后续请求 Header 带 token: $TOKEN
270
+ ```
271
+ - 禁止 mock-only、禁止假设固定 token
272
+ - 登录失败时必须输出完整响应分析原因
273
+
274
+ ## 三层验收门禁(强制)
275
+
276
+ 本批次涉及接口、CRUD、Mapper/XML、数据库字段或配置驱动行为时,必须同时满足:
277
+
278
+ 1. **Prompt 完成定义**:编译、单测、应用新进程启动、真实 curl/API 调用、
279
+ 数据库查询、日志检查、test-report 回填全部完成。
280
+ 2. **Hook 过程拦截**:`.sdd-enforced` 和 `.db-verified` 保持激活,直到
281
+ 集成验收脚本通过;运行时代码提交必须同步提交 test-report 证据。
282
+ 3. **验收脚本判定**:完成前执行:
283
+
284
+ ```bash
285
+ ~/.codex/hooks/superflow-verify-integration.sh \
286
+ doc/openspec/changes/{change-id}/embedded-changes/pXX-xxx/test-report.md
287
+ ```
288
+
289
+ 脚本失败时不得提交、不得交付、不得写"建议后续测试";只能补齐真实证据后重跑,
290
+ 或把任务标记为 `Blocked` / `Partially verified` 并说明阻塞原因。
291
+
292
+ ## 允许修改的仓库
293
+ {repository-name}
294
+
295
+ ## 允许修改的目录/文件范围
296
+ {具体列出允许修改的文件路径,精确到类名}
297
+
298
+ 示例:
299
+ - src/main/java/com/example/domain/entity/BusinessRecord.java
300
+ - src/main/java/com/example/domain/mapper/BusinessRecordMapper.java
301
+ - src/main/resources/mapper/BusinessRecordMapper.xml
302
+ - src/main/java/com/example/domain/service/BusinessRecordService.java
303
+ - src/main/java/com/example/domain/controller/BusinessRecordController.java
304
+ - src/main/resources/db/migration/V{version}__add_business_record.sql
305
+
306
+ ## 禁止修改的范围
307
+ {明确列出禁止触碰的边界}
308
+
309
+ 示例:
310
+ - 禁止修改 OtherDomainService.java 及其相关接口(由其他批次负责)
311
+ - 禁止修改 PublicApiController.java(对外接口由其他批次负责)
312
+ - 禁止修改消息协议相关配置和类(由其他批次负责)
313
+ - 禁止引入项目未确认的新中间件依赖
314
+ - 禁止修改既有枚举值(如需新增枚举值,在报告中声明)
315
+
316
+ ## 依赖的前置批次
317
+ {列出本批依赖哪些批次已完成}
318
+
319
+ 示例:
320
+ - P0 基线:已完成,数据库表结构和实体已对齐
321
+ - P1 核心主数据:已完成,基础 CRUD 可用
322
+
323
+ ## 业务背景
324
+ {简述本批在整体业务中的位置和上下游关系}
325
+
326
+ 示例:
327
+ 本批是某业务流程的 P2 核心链路。用户或外部系统提交业务请求后,系统需要:
328
+ 1. 校验主数据有效性(依赖 P1 的主数据能力)
329
+ 2. 创建业务记录并初始化状态机
330
+ 3. 根据用户、租户或配置计算业务规则命中
331
+ 4. 生成业务快照(记录当时有效的关键字段)
332
+ 5. 调用下游依赖完成资源锁定、通知或后续处理
333
+
334
+ ## 精确实现步骤
335
+ {按顺序列出具体要做什么,引用 design.md 章节}
336
+
337
+ 步骤 1:{具体动作}(参考 design.md #{章节})
338
+ 步骤 2:{具体动作}(参考 design.md #{章节})
339
+ ...
340
+
341
+ ## 数据库字段要求
342
+ {明确字段名、类型、约束,引用 database-contract.md 或 design.md}
343
+
344
+ **汇总 SQL 文件**:`openspec/changes/{change-id}/sql/{汇总SQL文件名}`
345
+ - 本批次所有数据库变更脚本必须从该文件获取
346
+ - 如果需要新增数据库变更,必须追加到该汇总 SQL 文件(按任务编号注释,如 `-- P16 业务字段补齐`)
347
+ - SQL 脚本采用简单直接格式(ALTER TABLE / INSERT),不使用 INFORMATION_SCHEMA 判断、PREPARE/EXECUTE 等过度兼容脚本
348
+ - 如果本批次不需要新增 SQL,写明"本批次不新增 SQL,但开始前仍需核查依赖表结构是否已满足设计"
349
+
350
+ 示例:
351
+ - business_record 表:
352
+ - id: BIGINT PK AUTO_INCREMENT
353
+ - name: VARCHAR(64) NOT NULL
354
+ - type: TINYINT NOT NULL COMMENT '按项目枚举定义'
355
+ - amount: DECIMAL(10,2) NOT NULL
356
+ - valid_days: INT NOT NULL DEFAULT 30
357
+ - status: TINYINT NOT NULL DEFAULT 1 COMMENT '0-禁用 1-启用'
358
+ - created_at / updated_at: datetime
359
+
360
+ ## API/消息契约要求
361
+ {明确接口路径、方法、请求/响应字段,或 MQ topic、消息格式}
362
+
363
+ 示例:
364
+ HTTP 接口:
365
+ - POST /api/business-records
366
+ - Request: BusinessRecordCreateDTO
367
+ - Response: Result<Long>(返回创建后的 id)
368
+
369
+ MQ 消息:
370
+ - Topic: domain.business.event
371
+ - Body: BusinessEvent
372
+ - recordId: String
373
+ - tenantId: String
374
+ - status: Integer(按项目枚举定义)
375
+ - timestamp: Long
376
+
377
+ ## 幂等、事务、失败处理要求
378
+ {明确每个关键操作的幂等策略、事务边界、失败处理}
379
+
380
+ 示例:
381
+ - 创建业务记录:
382
+ - 幂等:基于 userId + businessId + 日期做幂等,重复请求返回已有记录号
383
+ - 事务:@Transactional(rollbackFor = Exception.class)
384
+ - 失败:下游依赖失败时状态回滚为 INIT,不产生不可逆副作用
385
+
386
+ - 消费 MQ:
387
+ - 幂等:基于 messageId 做幂等,已消费的消息直接 ACK
388
+ - 事务:消息消费与业务状态更新在同一个事务内
389
+ - 失败:业务异常时抛异常让 MQ 重试,达到最大重试次数后进死信队列
390
+
391
+ ## 测试要求
392
+ {明确本批需要验证的用例,引用 tests.md}
393
+
394
+ - 用例 1:{描述}(tests.md #{章节})
395
+ - 用例 2:{描述}(tests.md #{章节})
396
+
397
+ 每个用例必须执行:接口调用 → 数据库验证 → 日志检查
398
+
399
+ ## 验收命令
400
+ {列出本批验收时需要执行的命令}
401
+
402
+ ```bash
403
+ # 编译
404
+ {compile-cmd}
405
+
406
+ # 启动
407
+ {run-cmd}
408
+
409
+ # 接口测试
410
+ curl -X POST http://localhost:{port}{context-path}/api/business-records \
411
+ -H "Content-Type: application/json" \
412
+ -d '{json}'
413
+
414
+ # 数据库验证
415
+ mysql -u{user} -p{pass} -e "SELECT * FROM business_record WHERE id = {id};"
416
+
417
+ # 日志检查
418
+ grep ERROR {log-path} || echo "无 ERROR"
419
+ ```
420
+
421
+ ## 完成后必须输出的报告格式
422
+
423
+ ```
424
+ 批次完成报告:
425
+ - 批次:P{n} - {名称}
426
+ - 完成范围:{简述}
427
+ - Worktree 路径:{实际 worktree 绝对路径}
428
+ - 分支名:{实际分支名}
429
+ - 实际使用端口:{如 9250 或更换后的端口}
430
+ - 修改文件清单:
431
+ - {file-path}(新增/修改/删除)
432
+ - 对应 OpenSpec 章节:
433
+ - design.md #{章节}
434
+ - api.md #{章节}
435
+ - tests.md #{章节}
436
+ - 编译状态:
437
+ - 命令:{compile-cmd}
438
+ - 结果:BUILD SUCCESS / 失败原因
439
+ - 数据库前置门禁:
440
+ - 检查的表/字段/索引/初始化数据:{列出具体检查项}
441
+ - 汇总 SQL 文件路径:{如 openspec/changes/xxx/sql/{version}.sql}
442
+ - 执行的脚本:{具体 ALTER TABLE / INSERT 语句或脚本行号范围}
443
+ - 执行结果:{成功/失败,如失败写明错误信息}
444
+ - 复查确认:{再次 SHOW CREATE TABLE / SELECT 确认结果}
445
+ - 如本批次不需要 SQL:{写明"本批次不新增 SQL,依赖表结构已核查满足设计"}
446
+ - 进程验证:
447
+ - PID:{pid}
448
+ - 启动时间:{timestamp}
449
+ - 端口:{实际端口}
450
+ - 健康检查:UP ✓
451
+ - 执行过的测试/命令:
452
+ - {命令} → {结果}
453
+ - 未执行测试及原因:
454
+ - {用例}:原因(如依赖 P{n+1})
455
+ - 与设计不一致的地方:
456
+ - {描述} → 处理方式(已修复/已上报/待确认)
457
+ - 需要人工确认的问题:
458
+ - {问题}
459
+ - 后续批次依赖事项:
460
+ - P{n+1} 需要本批提供的 {接口/数据/契约}
461
+ - 交付前核对:
462
+ - [ ] 已逐条核对 prompt 的"必须完成"
463
+ - [ ] 已逐条核对 prompt 的"验收标准"
464
+ - [ ] 每条都有真实测试证据(curl + DB + 日志)
465
+ - [ ] 无 mock-only 或占位参数
466
+ ```
467
+
468
+ ## 偏离设计时必须停止并报告
469
+
470
+ - 如果发现 design.md 中某个方案无法实现,**停止**,列出原因,上报 Leader,不允许自行改用其他方案
471
+ - 如果发现需要修改"禁止修改的范围"内的文件才能完成本批目标,**停止**,上报 Leader,不允许越界修改
472
+ - 如果发现 tests.md 中的断言在实际环境中不成立,**停止**,列出差异,上报 Leader
473
+ - 如果编译或启动失败且 15 分钟内无法解决,**停止**,上报 Leader
474
+ ```
475
+
476
+ ---
477
+
478
+ ## 跨仓库 Prompt 的特殊要求
479
+
480
+ 当 prompt 涉及跨仓库交互时,必须在"业务背景"或"API/消息契约要求"中增加:
481
+
482
+ ```
483
+ ## 跨仓库交互契约
484
+
485
+ ### 本仓库角色
486
+ {生产者/消费者/契约层/业务归口}
487
+
488
+ ### 上游依赖(本仓库消费)
489
+ | 来源仓库 | 接口/消息 | 契约详情 | 状态 |
490
+ |----------|-----------|----------|------|
491
+ | {repo} | {path/topic} | {字段定义} | 已由 P{n} 提供 |
492
+
493
+ ### 下游契约(本仓库提供)
494
+ | 目标仓库 | 接口/消息 | 契约详情 | 状态 |
495
+ |----------|-----------|----------|------|
496
+ | {repo} | {path/topic} | {字段定义} | 本批交付 |
497
+
498
+ ### 禁止越界
499
+ - 本仓库不处理 {其他仓库的职责}
500
+ - 本仓库不直接操作 {其他仓库的数据库}
501
+ ```
502
+
503
+ ---
504
+
505
+ ## 生成多份 Prompt 时的总览文件
506
+
507
+ 当需求拆分为多批时,必须生成 `prompt/implementation.md` 作为总览:
508
+
509
+ ```markdown
510
+ # Implementation Prompt 总览
511
+
512
+ ## 批次计划
513
+
514
+ | 批次 | 名称 | 目标 | 依赖 | 状态 |
515
+ |------|------|------|------|------|
516
+ | P0 | 基线 | 清理、字段校验、编译 | 无 | 待执行 |
517
+ | P1 | 核心主数据 | SQL + 实体 + 基础 CRUD | P0 | 待执行 |
518
+ | P2 | 核心业务链路 | 创建/提交 + 状态机 + 业务规则 | P1 | 待执行 |
519
+ | P3 | 异步/外部 | 外部事件 + MQ + 外部集成 | P2 | 待执行 |
520
+ | P4 | 联调验收 | 全链路回归 + 边界场景 | P3 | 待执行 |
521
+
522
+ ## 执行顺序
523
+ 1. P0 → 验收通过 → P1 → 验收通过 → P2 → ...
524
+ 2. 每批验收通过后才能开始下一批
525
+ 3. 如某批失败,修复后重新验收,不影响已完成批次
526
+
527
+ ## 各批次 Prompt 文件
528
+ - [p0-baseline.md](p0-baseline.md)
529
+ - [p1-business-record.md](p1-business-record.md)
530
+ - [p2-business-flow.md](p2-business-flow.md)
531
+ - [p3-external-integration.md](p3-external-integration.md)
532
+ - [p4-integration-test.md](p4-integration-test.md)
533
+
534
+ ## 评审清单
535
+ - [reviewer-checklist.md](reviewer-checklist.md)
536
+ ```
@@ -0,0 +1,140 @@
1
+ # 分批实现拆分指南
2
+
3
+ ## 为什么要拆分
4
+
5
+ 复杂需求一次性塞给单个 agent,会导致:
6
+ - 看似功能都写了,但关键链路没有闭环
7
+ - SQL、实体、Mapper 字段不一致
8
+ - 子功能没有复用既有链路,而是重复实现
9
+ - 服务间调用契约不完整,出现 fail-open 风险
10
+ - 外部协议逻辑写进业务核心
11
+ - 边界不清,测试验收困难
12
+
13
+ 拆分的核心目标:**把复杂需求切成"可实现、可测试、可评审、可回滚"的小批次**。
14
+
15
+ ---
16
+
17
+ ## 触发条件:何时必须拆分
18
+
19
+ 当需求满足**任一**条件时,skill 必须自动拆分 implementation prompt:
20
+
21
+ | # | 条件 | 说明 |
22
+ |---|------|------|
23
+ | 1 | 涉及 2 个以上仓库 | 跨仓库变更不能在一个 prompt 中完成 |
24
+ | 2 | 涉及 SQL + 后端业务 + MQ/定时/异步 | 技术栈跨度大,需要分阶段 |
25
+ | 3 | 涉及外部系统接口 | 外部协议适配与业务实现需分离 |
26
+ | 4 | 涉及支付、退款、余额、发票、权益等资金或权益链路 | 资金链路必须独立验证 |
27
+ | 5 | 涉及历史字段兼容 | 兼容逻辑容易污染新功能 |
28
+ | 6 | 涉及用户侧交易、审批、履约或核心业务状态机 | 状态机复杂,需独立闭环验证 |
29
+ | 7 | 预计修改文件超过 20 个 | 上下文超载,agent 会遗漏 |
30
+ | 8 | 测试用例超过 10 条 | 验证范围过大,难以一次通过 |
31
+ | 9 | 涉及 3 个以上业务闭环 | 每个闭环应独立验收 |
32
+
33
+ **判断方式**:在 Stage 5(生成 Tasks)完成后,统计任务数量和涉及范围,自动触发判断。
34
+
35
+ ---
36
+
37
+ ## 功能闭环拆分原则
38
+
39
+ ### 什么是"功能闭环"
40
+
41
+ 一个功能闭环是指:**从输入到输出,不依赖外部未实现部分,可独立编译、独立启动、独立测试验证的最小业务单元**。
42
+
43
+ **好的闭环示例**:
44
+ - "主数据 CRUD + 数据库表 + 后台列表接口" — 可自行验证
45
+ - "外部事件接入 + MQ 发布" — 可独立测试消息流
46
+ - "业务下单/创建接口 + 状态机" — 可端到端验证
47
+
48
+ **不好的拆分示例**:
49
+ - "前半部分改 SQL,后半部分改 Service" — 无法独立验证
50
+ - "改 Controller 但不改对应的 Service" — 接口调不通
51
+ - "同时改两个微服务的一半逻辑" — 两边都无法启动
52
+
53
+ ### 拆分规则
54
+
55
+ **规则 1:按可独立验收的闭环拆分**
56
+ - 每个 prompt 只覆盖一个明确闭环
57
+ - 闭环内部必须能走完"编译 → 启动 → 调接口 → 查数据库 → 看日志"全流程
58
+ - 闭环之间通过"前置依赖"声明关系
59
+
60
+ **规则 2:每份 prompt 必须写清楚"不允许做什么"**
61
+ - 明确列出禁止修改的文件和方法
62
+ - 明确列出禁止引入的依赖
63
+ - 明确列出禁止改动的既有接口签名
64
+
65
+ **规则 3:禁止跨边界修改**
66
+ - 处理外部协议的 prompt,不允许改业务状态机
67
+ - 处理业务状态机的 prompt,不允许改外部协议解析
68
+ - 处理外部接口适配的 prompt,不允许改内部核心逻辑
69
+
70
+ ---
71
+
72
+ ## 跨仓库任务拆分规则
73
+
74
+ ### 拆分维度
75
+
76
+ 按"生产者 / 消费者 / 契约 / 业务归口"拆分:
77
+
78
+ | 角色 | 职责 | 示例 |
79
+ |------|------|------|
80
+ | **生产者** | 负责数据采集、协议解析、事件发布 | connector-service:解析外部事件,发布 MQ |
81
+ | **消费者** | 负责消费事件、固化业务状态 | domain-api:消费 MQ,更新业务状态 |
82
+ | **契约层** | 负责外部协议适配、内部 HTTP 调用 | integration-service:适配外部协议,同步调用 domain-api |
83
+ | **业务归口** | 负责核心业务逻辑、状态机、资金/权益 | domain-api:业务记录、权益、退款等核心逻辑 |
84
+
85
+ ### 每个仓库的 prompt 必须声明
86
+
87
+ 1. **本仓库职责边界**:我负责什么,不负责什么
88
+ 2. **上游依赖**:我依赖哪个仓库的什么接口/消息
89
+ 3. **下游契约**:我向谁提供什么接口/消息
90
+ 4. **交互契约详情**:HTTP 路径、方法、请求/响应字段、MQ topic、消息格式
91
+
92
+ **禁止**:靠实现 agent 自行猜测与其他仓库的交互方式。
93
+
94
+ ### 跨仓库示例
95
+
96
+ **通用业务平台的跨仓库拆分**:
97
+
98
+ ```
99
+ Repository: connector-service
100
+ Role: 生产者
101
+ Scope: 外部协议解析、事件格式化、MQ 发布
102
+ Downstream: 向 topic "domain.business.event" 发布 BusinessEvent
103
+ Forbidden: 不处理业务状态、不操作数据库、不调用 domain-api
104
+
105
+ Repository: domain-api
106
+ Role: 消费者 + 业务归口
107
+ Scope: 消费 BusinessEvent、业务状态机、权益/退款链路
108
+ Upstream: 从 topic "domain.business.event" 消费
109
+ Downstream: 向 integration-service 提供 HTTP /api/v1/business-records
110
+ Forbidden: 不处理外部协议、不直接对接外部平台
111
+
112
+ Repository: integration-service
113
+ Role: 契约层
114
+ Scope: 外部协议适配、鉴权、转换、同步调用 domain-api
115
+ Upstream: 调用 domain-api /api/v1/business-records
116
+ Forbidden: 不直接操作数据库、不处理外部协议底层细节、不写核心业务状态机
117
+ ```
118
+
119
+ ---
120
+
121
+ ## 默认批次顺序
122
+
123
+ 对复杂需求,默认推荐以下顺序。每批必须等前一批验收通过后才能开始。
124
+
125
+ ```
126
+ P0 基线 → P1 核心主数据 → P2 交易链路 → P3 异步/外部系统 → P4 联调验收
127
+ ```
128
+
129
+ | 批次 | 内容 | 验收标准 |
130
+ |------|------|---------|
131
+ | **P0** | 清理工作树、确认仓库/分支、校验 SQL/实体/Mapper/DTO 字段一致、最小编译验证 | git status 干净、编译通过、字段一致性校验通过 |
132
+ | **P1** | 数据库基线(SQL)、实体/Mapper/DTO、枚举常量、核心主数据接口 | 表结构与实体一致、基础 CRUD 可调用 |
133
+ | **P2** | 交易链路核心(下单、状态机、优惠命中、快照、预充值/退款) | 端到端交易流程可验证 |
134
+ | **P3** | 异步/外部系统(事件接入、MQ 消费、外部集成适配、权益接口) | 消息流/外部调用可验证 |
135
+ | **P4** | 联调验收、全链路回归、批量导入、后台列表、边界场景 | 全部 tests.md 用例通过 |
136
+
137
+ **注意**:
138
+ - P0 是**强制前置**,复杂需求必须先过 P0
139
+ - 实际批次数量和命名根据需求调整,不是固定 5 批
140
+ - 每批的验收标准必须可独立验证,不依赖后续批次