sync: 铁律六 — 页面变更必须同步原型 + 关联页面同步机制
变更内容: - d8d-dev: 新增铁律六(页面变更必须同步原型)+ 关卡5质量检查 - d8d-iterate phase-01: feature+新UI 路由强制走 Phase 3(拆分 low-risk 有无新UI) - d8d-iterate phase-03: MANDATORY 标记 + 文档中心更新(Step 3.5) + 关联页面同步(Step 3.6) - d8d-iterate workflow: 状态机和路由表更新 - d8d-prototype workflow: [P]/[A] 增量模式增加关联页面同步 + 入口页重生成
This commit is contained in:
@@ -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 模式"作为跳过原型的理由
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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` 字段。
|
||||
|
||||
@@ -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: 首次生成(原型不存在时)
|
||||
|
||||
```
|
||||
|
||||
@@ -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 |
|
||||
|
||||
@@ -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] 查看当前原型(启动服务器)
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user