Commit 91a6322cd5770abf0f069c1a19dfa9dad61d8895

Authored by zichun
1 parent 2ef891d4

fix(lite): restore frontend phase in lite-init (docs/08 §三 + CLAUDE-template two…

…-phase model + S2 soft rule)
skills/plan/lite-init/templates/CLAUDE-template.md
... ... @@ -13,36 +13,43 @@
13 13  
14 14 ---
15 15  
16   -## 🔄 编码开发流程(统一循环)
  16 +## 🔄 编码开发流程(两阶段 + 统一功能循环)
17 17  
18   -编码阶段入口:`/erp-workflow:coding-start`。所有模块统一走同一个 phase-driver 循环,无前后端分段
  18 +编码阶段入口:`/erp-workflow:coding-start`。lite 保留**后端模块阶段**与**前端整体阶段**两段,但两段共用**同一套功能循环 skill**(`feature-spec → feature-tdd → feature-review`),由 `phase` 参数区分
19 19  
20 20 ### 阶段路由(coding-start 内,只做分发)
21 21  
22   -`coding-start` 每次入口扫描 `docs/08 § 二` 的 `里程碑:` 字段 + 本地 `git tag -l 'milestone/<id>'`,找第一个未打里程碑的模块分发到 `phase-driver`;所有模块里程碑均已打 → 输出"全部完成"。
  22 +`coding-start` 每次入口按"先后端、再前端"检查并派发到 `phase-driver`:
23 23  
24   -### 统一功能循环
  24 +1. 扫 `docs/08 § 二` 各后端模块 `里程碑:` 字段 + `git tag -l 'milestone/<id>'`:有未打里程碑模块 → 派发 `phase-driver`(phase=backend),结束。
  25 +2. 后端全部打里程碑 → 读 `docs/08 § 三` `整体里程碑:` + `git tag -l 'milestone/frontend-phase'`:未完成 → 派发 `phase-driver`(phase=frontend),结束。
  26 +3. 后端 + 前端都完成 → 输出"所有阶段已完成"。
25 27  
26   -**模块循环(外)**:`phase-driver` → feature 循环 → `milestone`(本地 merge 进默认分支 + 打 `milestone/<id>` tag)→ 自动回调 `coding-start` 路由下一模块(无人工介入)。
  28 +### 统一功能循环(两阶段共用)
27 29  
28   -**功能循环(内,每个 REQ-XXX-NNN 一遍)**:`feature-spec` → `feature-tdd` → `feature-review`。
29   -- `feature-review` verdict=approve → 勾选 docs/08 § 二 对应功能子项,继续下一 feature;
30   -- 模块所有 feature 完成 → 调用 `milestone` 打里程碑 tag + 回调 `coding-start`。
  30 +**阶段驱动(外)**:`phase-driver`(phase=backend 走后端模块;phase=frontend 走前端整体阶段——自带 prototype/ 门禁 + 从 prototype/docs01/docs05 推导 FE 清单写入 docs/08 § 三)→ feature 循环 → `milestone`(本地 merge 进默认分支 + 打 `milestone/<id>` 或 `milestone/frontend-phase` tag)→ 自动回调 `coding-start` 路由下一阶段(无人工介入)。
  31 +
  32 +**功能循环(内,每个 REQ-XXX-NNN 或 FE-NN 一遍)**:`feature-spec` → `feature-tdd` → `feature-review`。
  33 +- phase=backend:单元是 REQ,分支 `module-<id>`,产出 controller/service/repository/DTO/migration;
  34 +- phase=frontend:单元是 FE,分支 `frontend-phase`,产出 `frontend/` 下组件/路由/API client(以 prototype 为页面权威);
  35 +- `feature-review` verdict=approve → 勾选 docs/08 § 二(后端 REQ)/ § 三(前端 FE)对应子项,继续下一单元;
  36 +- 本阶段单元全部完成 → 调用 `milestone` 打里程碑 tag + 回调 `coding-start`。
31 37  
32 38 ### 里程碑前守门
33 39  
34   -- `milestone` 在打 tag 前内置测试闸门(后端:`scripts/test.sh`);红色不得跳过。
  40 +- `milestone` 在打 tag 前内置测试闸门(phase 由分支推断:后端 `scripts/test.sh`;前端 vitest + Playwright,命令取自 docs/04 § 零);红色不得跳过。
35 41 - 测试 / 验证统一派发到 Agent 子会话执行,主会话只接收结构化结论。
36 42  
37 43 ---
38 44  
39 45 ## ✅ 阶段完成判定规则
40 46  
41   -`docs/08-模块任务管理.md` 分段:
  47 +`docs/08-模块任务管理.md` 分段:
42 48 - `§ 一`:计划阶段三段(①②③)进度勾选
43   -- `§ 二`:编码模块元数据表(每个模块一行 bullet,记录依赖 / 路径 / 里程碑 tag / 功能子项)
  49 +- `§ 二`:后端编码模块元数据表(每个模块一行 bullet,记录依赖 / 路径 / 里程碑 tag / REQ 功能子项;行序即 REQ 开发顺序,是 phase-driver 的排序权威)
  50 +- `§ 三`:前端整体阶段(`整体里程碑:` 字段 + FE 功能清单,由 phase-driver(phase=frontend) 推导填入)
44 51  
45   -**阶段完成判定**统一以 `里程碑:` 字段 + 本地 `git tag -l 'milestone/<id>'` 判定;子项勾选只作可视化进度,不参与完成判定。
  52 +**阶段完成判定**统一以 `里程碑:` 字段(§二 模块 / §三 整体)+ 本地 `git tag -l 'milestone/<id>'` 判定;子项勾选只作可视化进度,不参与完成判定。
46 53  
47 54 ### 后端模块格式
48 55  
... ... @@ -165,7 +172,7 @@
165 172 | # | 软规则 | 允许动作 | 强制后续 |
166 173 | - | ----- | ------- | ------- |
167 174 | S1 | **技术栈外组件引入** | 用 `AskUserQuestion` 给用户三选一:接受引入 / 换方案 / 拒绝 | ① **接受** → 同会话直接在 `docs/04 § 零` 追加一行 → 继续流程 ② **换方案 / 拒绝** → 视为常规歧义澄清,继续 Q&A 收敛 ③ 不写 Blocker、不中断流程 |
168   -| S2 | **跨模块改动** | **默认不改**,仅为当前模块实现所必需时允许修改 | ① hook `log-cross-module.sh` 自动落存根 ② `milestone` 在打里程碑前调用 `interrupt-check` skill 批量补齐「原因 / 影响评估」节 |
  175 +| S2 | **跨模块改动** | **默认不改**,仅为当前模块实现所必需时允许修改 | 在该模块 `milestone` 完成报告的「⑤ 偏离与取舍」节如实记录改了哪个非当前模块的文件 + 原因(lite 无自动留痕 hook,靠报告人工记录) |
169 176  
170 177 ---
171 178  
... ... @@ -236,7 +243,7 @@ Strong success criteria let you loop independently. Weak criteria (&quot;make it work
236 243 | Skill | 描述 |
237 244 |-------|------|
238 245 | `plan-start` | 计划阶段入口——扫 docs/08 § 一找第一个未完成计划段(①②③)并派发 |
239   -| `coding-start` | 编码阶段入口——扫 docs/08 § 二找第一个未打里程碑模块并派发 phase-driver |
  246 +| `coding-start` | 编码阶段入口 + 阶段分发器——先后端(docs/08 § 二)后前端(§ 三),派发 phase-driver(phase=backend/frontend);都完成则输出全部完成 |
240 247  
241 248 ### 计划阶段
242 249  
... ... @@ -250,11 +257,11 @@ Strong success criteria let you loop independently. Weak criteria (&quot;make it work
250 257  
251 258 | Skill | 描述 |
252 259 |-------|------|
253   -| `phase-driver` | 模块驱动——加载当前模块 REQ 清单,逐个派发 feature 循环 |
254   -| `feature-spec` | 功能规格——为 REQ 生成 spec 文档(API 签名、数据变更、边界) |
255   -| `feature-tdd` | TDD 实现——按 spec 写测试先行,再实现,Agent 子会话跑测试 |
256   -| `feature-review` | AI 代码审查——审查当前 REQ 实现,verdict approve/reject,approve 时勾选进度 |
257   -| `milestone` | 里程碑——内置测试闸门(Agent 子会话),green 则本地 merge + 打 tag,生成模块完成报告 |
  260 +| `phase-driver` | 阶段驱动(phase 参数区分)——backend:加载当前模块 REQ 清单逐个派发;frontend:prototype/ 门禁 + 推导 FE 清单写 docs/08 § 三后逐个派发 |
  261 +| `feature-spec` | 功能规格(两阶段共用)——为 REQ(后端)/ FE(前端)生成"规格 + 任务级计划"合并文档 |
  262 +| `feature-tdd` | TDD 实现(两阶段共用)——按 plan 测试先行再实现,Agent 子会话跑测试;路径护栏按 phase 区分 |
  263 +| `feature-review` | 验证 + AI 自审(两阶段共用)——子会话跑测试 + reviewer agent(后端 superpower / 前端 fe-code-reviewer),approve 勾选进度回 phase-driver |
  264 +| `milestone` | 里程碑(phase 由分支推断)——内置测试闸门(Agent 子会话),green 则本地 merge + 打 tag,生成完成报告 |
258 265  
259 266 ### 守门
260 267  
... ... @@ -268,6 +275,6 @@ Strong success criteria let you loop independently. Weak criteria (&quot;make it work
268 275 |------|------|
269 276 | `docs/01-需求清单/` | REQ 卡片目录(模块子目录 + index.md) |
270 277 | `docs/03-数据库设计文档.md` | 表/字段/索引/外键 SSoT(lite-design 生成,编码阶段同步更新) |
271   -| `docs/04-技术规范.md` | 技术栈总览(§ 零)+ 架构规范 + 环境变量说明(含 .env.local 密钥字段) |
  278 +| `docs/04-技术规范.md` | 技术栈总览(§ 零)+ 架构规范 + 前端 Design Tokens / 交互约定 + 环境变量说明(含 .env.local 密钥字段)——lite 把原 UI 规范与环境配置并入此文件 |
272 279 | `docs/05-API接口契约.md` | 所有后端接口契约(lite-build-db 生成,feature-spec 按需追加) |
273   -| `docs/08-模块任务管理.md` | 全流程进度跟踪(§ 一计划 / § 二编码) |
  280 +| `docs/08-模块任务管理.md` | 全流程进度跟踪(§ 一计划 / § 二后端模块 / § 三前端整体) |
... ...
skills/plan/lite-init/templates/docs-08-initial-template.md
... ... @@ -2,7 +2,8 @@
2 2  
3 3 > 全流程进度跟踪。CC 每完成一项产出就勾选一项。
4 4 > - **§ 一 计划阶段**:`plan-start` 找第一个未勾的计划段(①②③)分发到对应 skill
5   -> - **§ 二 Coding(模块)**:`coding-start` 扫描 docs/08 § 二 的 `里程碑:` 字段 + 本地 `git tag -l 'milestone/<id>'`,找第一个未打里程碑模块分发。本 § 二 行序无语义,仅作模块元数据表
  5 +> - **§ 二 Coding(后端模块)**:`coding-start` 扫描 docs/08 § 二 的 `里程碑:` 字段 + 本地 `git tag -l 'milestone/<id>'`,找第一个未打里程碑模块,派发 `phase-driver`(phase=backend)。本 § 二 行序即 REQ 开发顺序(lite-build-db 按依赖拓扑写入),是 phase-driver 的排序权威
  6 +> - **§ 三 Coding(前端整体)**:后端全部打里程碑后,`coding-start` 读 § 三 `整体里程碑:` + `git tag -l 'milestone/frontend-phase'`,未完成则派发 `phase-driver`(phase=frontend)
6 7  
7 8 ## 一、计划阶段进度
8 9  
... ... @@ -35,3 +36,17 @@
35 36 - [ ] REQ-SYS-001 用户登录
36 37 - [ ] REQ-SYS-002 用户注册
37 38 -->
  39 +
  40 +## 三、Coding 阶段(前端整体)
  41 +
  42 +(`phase-driver`(phase=frontend)进入时扫 prototype/ + docs/01 + docs/05 → AI 自主推导 FE 业务功能清单写到下方"功能:"项(无人工审阅断点;合理性由整体里程碑标记时统一校核)。已有清单则直接加载。整个前端阶段 1 个里程碑 tag,分支 `frontend-phase`。)
  43 +
  44 +- 整体里程碑: —
  45 +- 功能:
  46 + <!-- AI 进入时按以下行格式写入(每行 1 个 FE,可关联多个 REQ / 多份原型):
  47 + - [ ] FE-NN 功能名 | 关联 REQ:REQ-A, REQ-B | 关联原型:prototype/<file>.html, prototype/<other>.html
  48 +
  49 + 示例:
  50 + - [ ] FE-01 用户登录与注册 | 关联 REQ:REQ-SYS-001, REQ-SYS-002 | 关联原型:prototype/auth.html
  51 + - [ ] FE-02 仪表盘总览 | 关联 REQ:REQ-DASH-001 | 关联原型:prototype/dashboard.html
  52 + -->
... ...