sync: 铁律六 — 页面变更必须同步原型 + 关联页面同步机制 #10

Merged
d8dfun merged 1 commits from sync/d8d-skills-20260408-123921 into master 2026-04-08 20:44:52 +08:00
6 changed files with 76 additions and 12 deletions

View File

@@ -260,3 +260,37 @@ Epic N+1 完成
- ❌ API 返回 500 但未检查源码 try-catch 就标记"环境问题"或"已知问题"
- ❌ 页面 navigateBack 后数据未刷新但标记"已通过 API 验证"(必须检查 onShow
## 铁律六:页面变更必须同步原型
**铁律一说速度,铁律二说质量,铁律三说粒度,铁律四说深度,铁律五说自愈,铁律六说原型同步。**
任何涉及新 UI 页面或页面修改的 Story完成后必须同步更新原型系统。原型是 UI 的唯一参考来源,代码实现与原型不同步 = 规格与实现不一致。
```
❌ 错误做法(实现后不管原型):
Story 7-4 实现了批量任务面板 UI → 原型仍只有 Epic 1-6 的页面
结果:新页面在原型中无法预览,文档中心缺少新页面卡片
✅ 正确做法(实现后同步原型):
Story 7-4 实现了批量任务面板 UI
→ 原型系统更新:添加批量任务面板页面
→ 文档中心更新docs-index.html 添加新文档卡片
→ 统一入口更新index.html 更新页数和快速导航
```
**判断规则**
| Story 类型 | 原型同步 | 文档中心更新 | 入口页更新 |
|------------|---------|------------|-----------|
| 新 UI 页面 | **必须** | **必须** | **必须** |
| 修改现有 UI 布局/组件 | **必须** | 可选 | 可选 |
| 纯后端/API | 跳过 | 可选 | 跳过 |
| 纯配置/Schema | 跳过 | 跳过 | 跳过 |
**违反此规则的行为**
- ❌ 实现了新 UI 页面但原型中无对应页面
- ❌ d8d-iterate feature 类型涉及新页面但跳过 Phase 3
- ❌ 原型页面更新了但文档中心未更新
- ❌ 统一入口页 (index.html) 页数未更新或快速导航缺少新页面
- ❌ 用"遵循现有 UI 模式"作为跳过原型的理由

View File

@@ -150,5 +150,11 @@ echo "journey_results=$JOURNEY_COUNT"
- 通过: 所有旅程 PASS
- 阻断: Epic 不得标记 done可标记 `done-with-issues`
### 关卡 5: 原型同步(⚠️ 铁律六d8d-iterate 编排下生效)
- 检测: 检查本次 Epic 是否有新 UI 页面,原型中是否已对应
- 通过: 无新 UI 页面,或所有新 UI 页面在原型中已有对应文件
- 阻断: 仅在 d8d-iterate 编排模式下生效d8d-dev 独立运行时记录为 WARN
- 修复: 调用 d8d-prototype --incremental 更新原型
> 完整的 FAIL 分类标准、GATE-CHECK 和修复流程见 ./auto-fix-engine.md

View File

@@ -91,14 +91,20 @@ greenfield:
→ 完成后自动触发 d8d-prototype
→ 完成后自动触发 d8d-dev
feature (low risk):
feature (low risk, 无新 UI 页面):
→ Phase 2: edit-prd + update arch/ux + new epic
→ Phase 4: d8d-dev --epic {new-epic}
→ Phase 5: d8d-dev --regression
feature (low risk, 有新 UI 页面):
→ Phase 2: edit-prd + update arch/ux + new epic
→ Phase 3: d8d-prototype --incremental [P] 或 [A](⛔ 铁律六 MANDATORY
→ Phase 4: d8d-dev --epic {new-epic}
→ Phase 5: d8d-dev --regression
feature (medium/high risk):
→ Phase 2: edit-prd + correct-course + update docs + new epic
→ Phase 3: d8d-prototype --incremental (如果新 UI)
→ Phase 3: d8d-prototype --incremental(⛔ 如有新 UI 则 MANDATORY铁律六
→ Phase 4: d8d-dev --epic {new-epic}
→ Phase 5: d8d-dev --regression
@@ -148,8 +154,8 @@ design:
- Epic: 需要创建新 Epic (估计 7 个 Story)
### 执行路径
Phase 2 → Phase 4 → Phase 5
(跳过 Phase 3 原型,因为遵循现有 UI 模式)
Phase 2 → Phase 3 → Phase 4 → Phase 5
(Phase 3: [P] 特定页面更新 — 铁律六:有新 UI 页面不可跳过)
```
更新 `iterate-checkpoint.md``change_type``current_phase` 字段。

View File

@@ -1,4 +1,4 @@
# Phase 3: 原型更新(可选
# Phase 3: 原型更新(⛔ 有新 UI 时 MANDATORY铁律六
**目标**:当变更涉及新 UI 页面、交互变更或文档变更时,利用 d8d-prototype 的增量更新能力精确更新原型系统。
@@ -6,7 +6,7 @@
```
IF 变更类型 == design → 执行 Phase 3
IF 变更类型 == feature 且涉及新页面/组件 → 执行 Phase 3
IF 变更类型 == feature 且涉及新页面/组件 → Phase 3 MANDATORY铁律六
IF 变更类型 == feature 且只有后端变更 → 看是否有文档变更
IF 变更类型 == bugfix → 跳过
IF 变更类型 == refactor 且不涉及 UI → 跳过
@@ -68,6 +68,24 @@ IF status=completed → 增量更新(进入 Step 3.2
1. 先执行 step-05b 更新文档中心
2. 再按需重新生成变更的页面
### Step 3.5: 文档中心更新(⛔ 所有非跳过模式必须执行)
无论选择 [D]、[P] 还是 [A] 模式,最后都必须更新文档中心:
1. 全量扫描 `_bmad-output/` 所有 `.md``.yaml` 文件
2. 重建 `docs-index.html`,包含所有文档卡片(含新增 Epic 的文档)
3. 此步骤不可跳过
### Step 3.6: 关联页面同步(⛔ 有新 UI 时必须执行)
检查新功能是否影响了共享组件Header/Nav/Sidebar/Footer
1. 对比变更前后的共享组件(如 Header 添加了新按钮)
2. 列出所有使用该共享组件的现有原型页面
3. 对这些页面重新生成以保持一致性
4. 重新生成入口页 `index.html`(更新页数和快速导航)
5. 重新生成平铺入口 `admin-index.html`(更新页数和网格)
### Step 3.3: 首次生成(原型不存在时)
```

View File

@@ -42,7 +42,7 @@
┌──────────────────────┐
│ 决策路由 │
│ greenfield? ───→ 全量流程 (d8d-requirements → prototype → dev)
│ feature? ───→ Phase 2 → 4 → 5
│ feature? ───→ Phase 2 → (has UI? → Phase 3 ⛔) → Phase 4 → 5
│ bugfix? ───→ Phase 4 (single-story)
│ refactor? ───→ Phase 2 → 4 → 5
│ regression?───→ Phase 5 only
@@ -55,7 +55,7 @@
└────────┬────────┘
┌─────────────────┐
│ Phase 3 │ 原型更新 (可选)
│ Phase 3 │ 原型更新 (有新UI时 ⛔ MANDATORY)
│ PROTOTYPE │ d8d-prototype --incremental
└────────┬────────┘
@@ -152,7 +152,7 @@ phase-05-verify: completed | skipped | failed
| 变更类型 | 执行路径 | 跳过 |
|----------|----------|------|
| **greenfield** | Phase 0 → 调用 d8d-requirements → d8d-prototype → d8d-dev内置回归+旅程) | Phase 1-5 全跳过 |
| **feature** | Phase 2 → (Phase 3 可选) → Phase 4 → Phase 5 | 按需 |
| **feature** | Phase 2 → (Phase 3: 有新UI则⛔MANDATORY) → Phase 4 → Phase 5 | 按需 |
| **bugfix** | Phase 4 (single-story) → Phase 5 | Phase 2, 3 |
| **refactor** | Phase 2 → Phase 4 → Phase 5 | Phase 3 |
| **regression** | Phase 5 only | Phase 2, 3, 4 |

View File

@@ -116,9 +116,9 @@ page_counts:
→ 询问用户:
[R] 重新生成(删除状态文件,从头开始)
[U] 增量更新 — 选择更新范围:
[D] 更新文档中心 — 重新扫描 _bmad-output/,更新 docs-index.html + view-doc.html → 加载 step-08-commit.md
[P] 更新特定页面 — 选择前台/后台/特定页面重新生成 → 加载 step-08-commit.md
[A] 全部更新 — 文档 + 页面一起更新 → 加载 step-08-commit.md
[D] 更新文档中心 — 重新扫描 _bmad-output/,更新 docs-index.html + view-doc.html → 重新生成 step-03 + step-04 → 加载 step-08-commit.md
[P] 更新特定页面 — 选择前台/后台/特定页面重新生成 → 关联页面同步(铁律六) → 重新生成 step-03 + step-04 → 加载 step-08-commit.md
[A] 全部更新 — 文档 + 页面一起更新 → 关联页面同步(铁律六) → 重新生成 step-03 + step-04 → 加载 step-08-commit.md
[V] 查看当前原型(启动服务器)
```