Commit bfc5fb922853dc67407c227a8341226f55147187

Authored by yanghl
1 parent 9e8db6d8

feat(skills): 前端阶段必产 FE-00 应用壳·导航·首页,修复主界面无功能

frontend-start 推导 FE 清单时只从业务 REQ + prototype 拆,应用壳/导航/
路由/首页仪表盘不对应任何 REQ,从未被列为 FE 实现,导致生成项目主界面
空、点了没反应。

- frontend-start 步骤2:必产 FE-00(关联 REQ 为 —,置清单最前),承载
  布局壳 + 统一路由(点菜单真跳转)+ 首页仪表盘(真实后端端点指标);
  业务 FE 从 FE-01 起;加载分支支持 关联 REQ:— 解析为空数组
- fe-feature-brainstorm:新增应用壳 FE 特例,以 docs/06 §三 为导航/路由
  权威、docs/05 真实端点为首页指标来源,要求首页真实功能禁止静态占位
- 同步 CLAUDE-template / docs-08-initial-template / README 的 FE 推导说明

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
README.md
... ... @@ -83,7 +83,7 @@ Claude Code 插件:ERP / 后端管理系统全流程开发框架。
83 83  
84 84 **前端阶段(frontend-start 内,自带前置门禁)**:
85 85 - 步骤 1:prototype/ 门禁(≥ 1 个 *.html,缺失则 AskUserQuestion 提示用户补齐 → 停下)
86   - - 步骤 2:准备 FE 清单(无审阅断点)。§ 三 占位则 AI 扫 prototype + docs/01 + docs/05 自主推导 FE 业务功能清单写入 § 三(每个 FE 标注关联 REQ + 关联原型;FE 数与 HTML 文件数无关);§ 三 已有则直接加载
  86 + - 步骤 2:准备 FE 清单(无审阅断点)。§ 三 占位则 AI 扫 prototype + docs/01 + docs/05 + docs/06 § 三 自主推导写入 § 三:**必产 `FE-00 应用壳·导航·首页`(关联 REQ 为 `—`,置首)承载主界面壳/导航/路由/首页仪表盘**,业务 FE 从 FE-01 起(每个标注关联 REQ + 关联原型;FE 数与 HTML 文件数无关);§ 三 已有则直接加载
87 87 - 步骤 3-7:里程碑 tag 判定 → 切 `frontend-phase` 分支 → 跑 fe-feature 循环(fe-feature-brainstorm → ... → fe-feature-review,专用 `fe-code-reviewer` agent 做 7 维 review)→ 全 approve → test-gate(frontend) → module-report(frontend) → milestone-tag(docs/08 § 三 整体里程碑)→ 自动回 coding-start → 全部完成
88 88  
89 89 `docs/08 § 二` 每后端模块占一行 bullet,`§ 三` 是前端阶段整体段,完成信号统一由本地 `git tag -l 'milestone/<id>'` 判定。
... ...
skills/coding/fe-feature-brainstorm/SKILL.md
... ... @@ -15,6 +15,17 @@ allowed-tools: Read Write Skill AskUserQuestion Glob Grep
15 15  
16 16 一个 FE 是**业务功能**粒度,可能关联多个 prototype 文件区域和多个 REQ。
17 17  
  18 +## 应用壳 FE(FE-00 应用壳·导航·首页)特例
  19 +
  20 +当 `frontend-start` 派发的 FE `associated_reqs[]` 为空(即 FE-00 应用壳),它不对应单个业务 REQ,而是「主界面」可用性的载体。此时按下列方式收集证据、写 spec,**其余流程(自决/Q&A/自审/链 plan)完全不变**:
  21 +
  22 +- **导航与路由权威 = `docs/06-UI交互规范.md § 三 页面清单`**:逐页取 `route` + `入口菜单`,构建导航菜单树与统一路由表(`frontend/src/routes`,路径从 docs/09 § 前端目录结构取),保证点菜单能真实跳到对应业务页面(业务页面组件由后续 FE 落地,路由先注册占位)。
  23 +- **布局权威 = prototype 的布局/导航区域**(`associated_prototypes[]`);prototype 无独立布局区域时,按 docs/06 § 一~二 通用规则 + UI 库(docs/04 § 零 `frontend.ui_lib`)默认推导标准壳(header + 侧/顶菜单 + 内容区 outlet)。
  24 +- **首页/仪表盘要真实功能,禁止纯静态占位**:模块快捷入口卡片(真实路由跳转)+ 关键指标。指标优先调 `docs/05-API接口契约.md` 中真实的列表/计数/统计端点(如各模块总数、最近记录);契约确无统计端点时,至少做模块入口卡片 + 一个真实列表概览。
  25 +- **组件树**:`App → Header / Nav(递归菜单树) / MainContent(router-outlet) + Home(Dashboard)`。
  26 +- **状态机**:菜单加载中 / 正常 / 鉴权失效,叠加首页 loading / empty / error / 正常。
  27 +- **业务规则前端复刻清单**:壳层无业务表单校验时,此节填导航/权限可见性规则(如「仅渲染当前用户有权限的菜单项,权限由后端菜单/鉴权接口决定」),**不得留空节**。
  28 +
18 29 ## 占位符规则
19 30  
20 31 本 skill 写的 spec 是 CC 内部推理产物,不是用户审阅文档。**不允许** `【人工填写:...】` 占位符——A 阶段标记。需要具体值时:
... ...
skills/coding/frontend-start/SKILL.md
... ... @@ -19,17 +19,24 @@ allowed-tools: Read Write Edit Skill Glob Grep AskUserQuestion Bash(git branch *
19 19  
20 20 读 docs/08 § 三 "功能:" 项:
21 21  
22   -- 已有 `- [ ] FE-NN ...` 或 `- [x] FE-NN ...` 行 → **加载**:逐行解析得 `fe_list[]`,每项 `{ fe_id, name, status, associated_reqs[], associated_prototypes[] }`。行格式不符 → 硬停打印问题行 `[ERP-HALT]`
  22 +- 已有 `- [ ] FE-NN ...` 或 `- [x] FE-NN ...` 行 → **加载**:逐行解析得 `fe_list[]`,每项 `{ fe_id, name, status, associated_reqs[], associated_prototypes[] }`(`关联 REQ:—` 解析为空数组——FE-00 应用壳即此情形)。行格式不符 → 硬停打印问题行 `[ERP-HALT]`
23 23 - 仅有 HTML 注释占位(无 FE bullet)→ **推导**:
24   - 1. 读 `prototype/**/*.html` + `docs/01-需求清单/**/*.md` + `docs/05-API接口契约.md`
25   - 2. 以**业务功能**为单位拆分(同流程多屏可合 1 FE;一 HTML 多功能可拆多 FE;无 UI 的 REQ 不产生 FE)。每个 FE:`{ fe_id: FE-NN, name, associated_reqs[], associated_prototypes[] }`,prototype 路径可带 anchor 区分文件内多区域
26   - 3. **写入 § 三 "功能:" 项**(替换占位 HTML 注释),行格式:
  24 + 1. 读 `prototype/**/*.html` + `docs/01-需求清单/**/*.md` + `docs/05-API接口契约.md` + `docs/06-UI交互规范.md § 三 页面清单`(downstream-gen 产出,含每页 route / 入口菜单,是导航与路由的权威)
  25 + 2. **先产基础设施 FE(必产,置于清单最前)**:无论 prototype 是否单列布局区域,都生成一条 FE-00——它是「主界面」可用性的载体,**不依赖任何 REQ,故关联 REQ 填 `—`**:
  26 +
  27 + ```
  28 + - [ ] FE-00 应用壳·导航·首页 | 关联 REQ:— | 关联原型:<prototype 中的布局/导航区域,无独立区域则填 prototype 全集>
  29 + ```
  30 +
  31 + 它负责:全局布局壳(header + 侧/顶导航菜单)、把 docs/06 § 三 每个业务页面接入的**统一路由表**(点菜单真实跳转)、**首页/仪表盘落地页**(模块入口卡片 + 调真实后端端点的关键指标)。
  32 + 3. 再以**业务功能**为单位拆分业务 FE(同流程多屏可合 1 FE;一 HTML 多功能可拆多 FE;无 UI 的 REQ 不产生 FE),**从 FE-01 起编号**。每个 FE:`{ fe_id: FE-NN, name, associated_reqs[], associated_prototypes[] }`,prototype 路径可带 anchor 区分文件内多区域
  33 + 4. **写入 § 三 "功能:" 项**(替换占位 HTML 注释),FE-00 在最前、业务 FE 随后,行格式:
27 34  
28 35 ```
29 36 - [ ] FE-NN 功能名 | 关联 REQ:REQ-A, REQ-B | 关联原型:prototype/<file>.html
30 37 ```
31 38  
32   - 保留 `- 整体里程碑: —` 不动;写入后解析得 `fe_list[]`,继续步骤 3
  39 + (FE-00 的「关联 REQ」为 `—`)保留 `- 整体里程碑: —` 不动;写入后解析得 `fe_list[]`,继续步骤 3
33 40  
34 41 ### 步骤 3:检查前端里程碑状态
35 42  
... ...
skills/plan/project-init/templates/CLAUDE-template.md
... ... @@ -40,7 +40,7 @@ B 阶段分两段,**全部固化到 skills**。入口:`/erp-workflow:coding-
40 40  
41 41 ### 前端阶段(整体一个里程碑 tag,所有后端模块打里程碑后启动)
42 42  
43   -- **FE 清单(AI 自主推导,无审阅断点)**:`frontend-start` 进入时扫 prototype + docs/01 + docs/05 → AI 自主推导 FE 业务功能清单写入 `docs/08 § 三`(已有则加载)。**FE 是业务功能粒度,与 prototype HTML 文件数无关**——一个 HTML 可拆多个 FE,多个 HTML 也可合成一个 FE。FE 清单的合理性由 fe-feature-review / milestone-tag 在整体里程碑标记时一并校核(全程无人工介入)。
  43 +- **FE 清单(AI 自主推导,无审阅断点)**:`frontend-start` 进入时扫 prototype + docs/01 + docs/05 + docs/06 § 三 → AI 自主推导 FE 业务功能清单写入 `docs/08 § 三`(已有则加载)。**必产 `FE-00 应用壳·导航·首页`(关联 REQ 为 `—`,置于清单最前)**——它承载「主界面」可用性:全局布局壳 + 把各业务页面接入的统一路由(点菜单真跳转)+ 首页仪表盘(模块入口 + 真实后端端点指标)。其余 **FE 是业务功能粒度,与 prototype HTML 文件数无关**——一个 HTML 可拆多个 FE,多个 HTML 也可合成一个 FE。FE 清单的合理性由 fe-feature-review / milestone-tag 在整体里程碑标记时一并校核(全程无人工介入)。
44 44 - **FE 循环(外)**:`frontend-start` → fe-feature 循环 → `test-gate(phase=frontend)` → `module-report(phase=frontend)` → `milestone-tag`(分支 `frontend-phase`,docs/08 § 三 整体里程碑)。
45 45 - **FE 功能循环(内,每个 FE-NN 一遍)**:`fe-feature-brainstorm` → `fe-feature-plan` → `fe-feature-tdd` → `fe-feature-verify` → `fe-feature-review`(专用 `fe-code-reviewer` agent,硬编码 7 维 review checklist)
46 46 - 前端阶段任务严格落在 `frontend/` 路径下;布局以 `prototype/` 为权威。
... ...
skills/plan/project-init/templates/docs-08-initial-template.md
... ... @@ -57,7 +57,7 @@
57 57  
58 58 ## 三、Coding 阶段(前端整体)
59 59  
60   -(`frontend-start` 进入时扫 prototype/ + docs/01 + docs/05 → AI 自主推导 FE 业务功能清单写到下方"功能:"项(无人工审阅断点;合理性由整体里程碑标记时统一校核)。已有清单则直接加载。整个前端阶段 1 个里程碑 tag,分支 `frontend-phase`。)
  60 +(`frontend-start` 进入时扫 prototype/ + docs/01 + docs/05 + docs/06 § 三 → AI 自主推导 FE 业务功能清单写到下方"功能:"项(无人工审阅断点;合理性由整体里程碑标记时统一校核)。**首条必为 `FE-00 应用壳·导航·首页`(关联 REQ 为 `—`),承载主界面壳/导航/路由/首页仪表盘**,业务 FE 从 FE-01 起。已有清单则直接加载。整个前端阶段 1 个里程碑 tag,分支 `frontend-phase`。)
61 61  
62 62 - 整体里程碑: —
63 63 - 功能:
... ...