@zeyue0329/xiaoma-cli 6.0.0-alpha.17 → 6.0.0-alpha.19
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.
- package/package.json +1 -1
- package/src/modules/xmc/agents/auto-iteration-orchestrator.agent.yaml +8 -0
- package/src/modules/xmc/workflows/auto-iteration/full-auto-workflow.md +813 -394
- package/src/modules/xmc/workflows/auto-iteration/requirement-to-epic-workflow.md +428 -0
- package/src/modules/xmc/workflows/auto-iteration/story-implementation-workflow.md +675 -0
- package/src/modules/xmc/workflows/auto-iteration/full-auto-workflow-old.yaml +0 -0
|
@@ -0,0 +1,675 @@
|
|
|
1
|
+
# 用户故事自动化实现工作流
|
|
2
|
+
|
|
3
|
+
> **工作流 ID**: story-implementation
|
|
4
|
+
> **触发命令**: `*story-implementation`
|
|
5
|
+
> **智能体**: Phoenix (全自动化迭代开发编排器)
|
|
6
|
+
> **说明**: 本工作流是 `full-auto-workflow` 的后半部分,专注于用户故事的完整生命周期自动化实现
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 工作流概述
|
|
11
|
+
|
|
12
|
+
本工作流实现用户故事从创建到测试验证的完整生命周期自动化,融合 SM、DEV、TEA 三大智能体能力。**每个故事必须完成全部 5 步后才能开始下一个故事**。
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
┌─────────────────────────────────────────────────────────────────────────┐
|
|
16
|
+
│ 用户故事自动化实现流程 │
|
|
17
|
+
├─────────────────────────────────────────────────────────────────────────┤
|
|
18
|
+
│ 前置条件 (由 requirement-to-epic-workflow 产出) │
|
|
19
|
+
│ ├─ epics/epic-XXX.md (史诗和故事定义) │
|
|
20
|
+
│ ├─ architecture.md (架构设计文档) │
|
|
21
|
+
│ └─ prd.md (产品需求文档) │
|
|
22
|
+
├─────────────────────────────────────────────────────────────────────────┤
|
|
23
|
+
│ Step 0: Sprint 规划 [SM 能力] │
|
|
24
|
+
│ ├─ 唤醒命令: /sm │
|
|
25
|
+
│ ├─ 执行命令: *sprint-planning │
|
|
26
|
+
│ └─ 输出: sprint-status.yaml │
|
|
27
|
+
├─────────────────────────────────────────────────────────────────────────┤
|
|
28
|
+
│ 🔄 For Each Story 完整生命周期循环: │
|
|
29
|
+
│ │ │
|
|
30
|
+
│ │ STEP 1: 创建用户故事 [SM - Bob] │
|
|
31
|
+
│ │ ├─ 命令: /sm → *create-story │
|
|
32
|
+
│ │ ├─ 状态: backlog → drafted │
|
|
33
|
+
│ │ └─ 输出: /sprint-artifacts/stories/{story-key}.md │
|
|
34
|
+
│ │ │
|
|
35
|
+
│ │ STEP 2: 校验用户故事 [SM - Bob] │
|
|
36
|
+
│ │ ├─ 命令: /sm → *validate-create-story │
|
|
37
|
+
│ │ └─ 状态: drafted → ready-for-dev │
|
|
38
|
+
│ │ │
|
|
39
|
+
│ │ STEP 3: 开发用户故事 [DEV - Amelia] │
|
|
40
|
+
│ │ ├─ 命令: /dev → *develop-story │
|
|
41
|
+
│ │ ├─ 执行: TDD 驱动开发 (红-绿-重构) │
|
|
42
|
+
│ │ └─ 状态: ready-for-dev → in-progress │
|
|
43
|
+
│ │ │
|
|
44
|
+
│ │ STEP 4: 代码审查 [DEV - Amelia] │
|
|
45
|
+
│ │ ├─ 命令: /dev → *code-review │
|
|
46
|
+
│ │ ├─ 结果: APPROVED → 继续 / CHANGES_REQUESTED → 返回 STEP 3 │
|
|
47
|
+
│ │ └─ 状态: in-progress → review │
|
|
48
|
+
│ │ │
|
|
49
|
+
│ │ STEP 5: 测试验证 [TEA - Murat] │
|
|
50
|
+
│ │ ├─ 命令: /tea → *trace + *test-review │
|
|
51
|
+
│ │ ├─ 结果: PASS → done / FAIL → 返回 STEP 3 │
|
|
52
|
+
│ │ └─ 状态: review → done │
|
|
53
|
+
│ │ │
|
|
54
|
+
│ └─ ✅ 故事完成 → 🔄 返回 STEP 1 开始下一个故事 │
|
|
55
|
+
├─────────────────────────────────────────────────────────────────────────┤
|
|
56
|
+
│ 输出 │
|
|
57
|
+
│ ├─ 实现的代码 │
|
|
58
|
+
│ ├─ 测试代码 │
|
|
59
|
+
│ ├─ 每个故事的验证报告 │
|
|
60
|
+
│ └─ sprint-status.yaml (已更新) │
|
|
61
|
+
└─────────────────────────────────────────────────────────────────────────┘
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 智能体命令汇总表
|
|
67
|
+
|
|
68
|
+
| 步骤 | 智能体 | 唤醒命令 | 核心工作流命令 | 用途 | 状态变更 |
|
|
69
|
+
|------|--------|---------|---------------|------|----------|
|
|
70
|
+
| Step 0 | Bob (SM) | `/sm` | `*sprint-planning` | Sprint 规划 | - |
|
|
71
|
+
| STEP 1 | Bob (SM) | `/sm` | `*create-story` | 创建故事文件 | backlog→drafted |
|
|
72
|
+
| STEP 2 | Bob (SM) | `/sm` | `*validate-create-story` | 校验故事 | drafted→ready-for-dev |
|
|
73
|
+
| STEP 3 | Amelia (DEV) | `/dev` | `*develop-story` | TDD 开发 | ready-for-dev→in-progress |
|
|
74
|
+
| STEP 4 | Amelia (DEV) | `/dev` | `*code-review` | 代码审查 | in-progress→review |
|
|
75
|
+
| STEP 5 | Murat (TEA) | `/tea` | `*trace` + `*test-review` | 测试验证 | review→done |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 故事状态系统 (6状态流转)
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
backlog → drafted → ready-for-dev → in-progress → review → done
|
|
83
|
+
│ │ │ │ │ │
|
|
84
|
+
│ │ │ │ │ └─ 故事完成
|
|
85
|
+
│ │ │ │ └─ 等待测试验证
|
|
86
|
+
│ │ │ └─ 开发进行中
|
|
87
|
+
│ │ └─ 可以开始开发
|
|
88
|
+
│ └─ 故事文件已创建
|
|
89
|
+
└─ 仅存在于 Epic 文件中
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## ⛔ 强制性执行约束 (MANDATORY CONSTRAINTS)
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
╔═══════════════════════════════════════════════════════════════════════════════╗
|
|
98
|
+
║ 🚨 绝对禁止 - ABSOLUTELY FORBIDDEN 🚨 ║
|
|
99
|
+
╠═══════════════════════════════════════════════════════════════════════════════╣
|
|
100
|
+
║ ║
|
|
101
|
+
║ 1. ❌ 禁止跳过故事文件创建 ║
|
|
102
|
+
║ - 绝对禁止直接基于 Epic 进行开发 ║
|
|
103
|
+
║ - 每个故事必须先创建独立的故事文件到 /sprint-artifacts/stories/ 目录 ║
|
|
104
|
+
║ - 没有故事文件 = 不允许开发 ║
|
|
105
|
+
║ ║
|
|
106
|
+
║ 2. ❌ 禁止跳过故事验证 ║
|
|
107
|
+
║ - 故事文件创建后必须执行 *validate-create-story 验证 ║
|
|
108
|
+
║ - 验证未通过 = 不允许进入开发阶段 ║
|
|
109
|
+
║ ║
|
|
110
|
+
║ 3. ❌ 禁止跳过单元测试 ║
|
|
111
|
+
║ - 开发完成后必须执行单元测试 ║
|
|
112
|
+
║ - 测试未通过 = 不允许进入代码审查阶段 ║
|
|
113
|
+
║ ║
|
|
114
|
+
║ 4. ❌ 禁止跳过代码审查 ║
|
|
115
|
+
║ - 所有代码必须通过 *code-review 审查 ║
|
|
116
|
+
║ - 审查未通过 = 必须返回修复 ║
|
|
117
|
+
║ ║
|
|
118
|
+
║ 5. ❌ 禁止跳过测试验证 ║
|
|
119
|
+
║ - 代码审查通过后必须执行 TEA 测试验证 ║
|
|
120
|
+
║ - 测试验证未通过 = 必须返回修复 ║
|
|
121
|
+
║ ║
|
|
122
|
+
║ 6. ❌ 禁止批量处理多个故事 ║
|
|
123
|
+
║ - 必须一个故事一个故事地完成 ║
|
|
124
|
+
║ - 当前故事未完成 = 不允许开始下一个故事 ║
|
|
125
|
+
║ ║
|
|
126
|
+
╚═══════════════════════════════════════════════════════════════════════════════╝
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 执行指令
|
|
132
|
+
|
|
133
|
+
当用户输入 `*story-implementation` 时,按以下流程自动执行:
|
|
134
|
+
|
|
135
|
+
### Step 0: Sprint 规划
|
|
136
|
+
|
|
137
|
+
**角色激活**: SM (Bob)
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
141
|
+
│ Step 0: Sprint 规划 │
|
|
142
|
+
│ 智能体: Bob (SM) │
|
|
143
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
144
|
+
│ │
|
|
145
|
+
│ 1. 唤醒 SM 智能体 │
|
|
146
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
147
|
+
│ │ 执行命令: /sm │ │
|
|
148
|
+
│ │ 说明: 唤醒 Scrum Master Bob,准备进行 Sprint 规划 │ │
|
|
149
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
150
|
+
│ │
|
|
151
|
+
│ 2. 执行 Sprint 规划工作流 │
|
|
152
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
153
|
+
│ │ 执行命令: *sprint-planning │ │
|
|
154
|
+
│ │ 说明: 分析 Epic 文件,生成 sprint-status.yaml │ │
|
|
155
|
+
│ │ 输入: epics/*.md │ │
|
|
156
|
+
│ │ 输出: sprint-status.yaml │ │
|
|
157
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
158
|
+
│ │
|
|
159
|
+
│ 🚨 门禁检查: sprint-status.yaml 必须存在才能继续 │
|
|
160
|
+
│ │
|
|
161
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**执行命令**:
|
|
165
|
+
```bash
|
|
166
|
+
# 唤醒 SM 智能体
|
|
167
|
+
/sm
|
|
168
|
+
|
|
169
|
+
# 执行 Sprint 规划
|
|
170
|
+
*sprint-planning
|
|
171
|
+
|
|
172
|
+
# 🚨 门禁检查: 确认 sprint-status.yaml 已生成
|
|
173
|
+
ls {sprint_artifacts}/sprint-status.yaml
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### 🔄 故事完整生命周期循环
|
|
179
|
+
|
|
180
|
+
> ⚠️ **强制要求**: 对于 sprint-status.yaml 中的每一个故事,必须严格按以下 5 步流程执行,当前故事完成后才能开始下一个故事!
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
#### STEP 1: 创建用户故事 [必须]
|
|
185
|
+
|
|
186
|
+
**角色激活**: SM (Bob)
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
190
|
+
│ 🔴 STEP 1: 创建用户故事 [必须] │
|
|
191
|
+
│ 智能体: Bob (SM) │
|
|
192
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
193
|
+
│ │
|
|
194
|
+
│ 执行步骤: │
|
|
195
|
+
│ │
|
|
196
|
+
│ 1. 唤醒 SM 智能体 │
|
|
197
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
198
|
+
│ │ 执行命令: /sm │ │
|
|
199
|
+
│ │ 说明: 唤醒 Scrum Master Bob,准备创建故事文件 │ │
|
|
200
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
201
|
+
│ │
|
|
202
|
+
│ 2. 🔴 创建故事文件 [必须] │
|
|
203
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
204
|
+
│ │ 执行命令: *create-story │ │
|
|
205
|
+
│ │ 说明: 从 Epic 中提取故事定义,创建独立的故事文件 │ │
|
|
206
|
+
│ │ 输入: sprint-status.yaml + epics/*.md │ │
|
|
207
|
+
│ │ 输出: /sprint-artifacts/stories/{story-key}.md │ │
|
|
208
|
+
│ │ 状态: backlog → drafted │ │
|
|
209
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
210
|
+
│ │
|
|
211
|
+
│ 🚨 门禁检查 (GATE 1): │
|
|
212
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
213
|
+
│ │ # 必须验证故事文件已创建 │ │
|
|
214
|
+
│ │ ls -la {sprint_artifacts}/stories/{story-key}.md │ │
|
|
215
|
+
│ │ │ │
|
|
216
|
+
│ │ ❌ 如果文件不存在:禁止继续!必须先创建故事文件! │ │
|
|
217
|
+
│ │ ✅ 如果文件存在:可以进入 STEP 2 │ │
|
|
218
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
219
|
+
│ │
|
|
220
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**执行命令**:
|
|
224
|
+
```bash
|
|
225
|
+
# 唤醒 SM 智能体
|
|
226
|
+
/sm
|
|
227
|
+
|
|
228
|
+
# 🔴 [必须] 创建故事文件
|
|
229
|
+
*create-story
|
|
230
|
+
|
|
231
|
+
# 🚨 门禁检查:验证故事文件已创建
|
|
232
|
+
ls -la {sprint_artifacts}/stories/{story-key}.md
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
#### STEP 2: 校验用户故事 [必须]
|
|
238
|
+
|
|
239
|
+
**角色激活**: SM (Bob)
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
243
|
+
│ 🔴 STEP 2: 校验用户故事 [必须] │
|
|
244
|
+
│ 智能体: Bob (SM) │
|
|
245
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
246
|
+
│ │
|
|
247
|
+
│ 前置条件检查: │
|
|
248
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
249
|
+
│ │ # 验证故事文件存在且状态为 drafted │ │
|
|
250
|
+
│ │ grep "Status: drafted" {sprint_artifacts}/stories/*.md │ │
|
|
251
|
+
│ │ │ │
|
|
252
|
+
│ │ ❌ 如果没有 drafted 状态的故事:返回 STEP 1 │ │
|
|
253
|
+
│ │ ✅ 如果存在:继续执行验证 │ │
|
|
254
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
255
|
+
│ │
|
|
256
|
+
│ 执行步骤: │
|
|
257
|
+
│ │
|
|
258
|
+
│ 1. 唤醒 SM 智能体 │
|
|
259
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
260
|
+
│ │ 执行命令: /sm │ │
|
|
261
|
+
│ │ 说明: 唤醒 Scrum Master Bob,准备验证故事 │ │
|
|
262
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
263
|
+
│ │
|
|
264
|
+
│ 2. 🔴 验证故事文件 [必须] │
|
|
265
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
266
|
+
│ │ 执行命令: *validate-create-story │ │
|
|
267
|
+
│ │ 验证内容: │ │
|
|
268
|
+
│ │ - 接受标准完整性 (Given-When-Then) │ │
|
|
269
|
+
│ │ - 任务分解合理性 │ │
|
|
270
|
+
│ │ - 技术说明充分性 │ │
|
|
271
|
+
│ │ 状态: drafted → ready-for-dev │ │
|
|
272
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
273
|
+
│ │
|
|
274
|
+
│ 🚨 门禁检查 (GATE 2): │
|
|
275
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
276
|
+
│ │ # 验证故事状态已更新为 ready-for-dev │ │
|
|
277
|
+
│ │ grep "Status: ready-for-dev" {story-file} │ │
|
|
278
|
+
│ │ │ │
|
|
279
|
+
│ │ ❌ 验证未通过:返回 STEP 1 修正故事 │ │
|
|
280
|
+
│ │ ✅ 验证通过:可以进入 STEP 3 │ │
|
|
281
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
282
|
+
│ │
|
|
283
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**执行命令**:
|
|
287
|
+
```bash
|
|
288
|
+
# 唤醒 SM 智能体
|
|
289
|
+
/sm
|
|
290
|
+
|
|
291
|
+
# 🔴 [必须] 验证故事文件
|
|
292
|
+
*validate-create-story
|
|
293
|
+
|
|
294
|
+
# 🚨 门禁检查:验证故事状态已更新
|
|
295
|
+
grep "Status: ready-for-dev" {sprint_artifacts}/stories/{story-key}.md
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
#### STEP 3: 开发用户故事 [必须]
|
|
301
|
+
|
|
302
|
+
**角色激活**: DEV (Amelia)
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
306
|
+
│ 🔴 STEP 3: 开发用户故事 [必须] │
|
|
307
|
+
│ 智能体: Amelia (DEV) │
|
|
308
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
309
|
+
│ │
|
|
310
|
+
│ 前置条件检查 (强制!): │
|
|
311
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
312
|
+
│ │ # 🚨 必须验证故事文件存在且状态为 ready-for-dev │ │
|
|
313
|
+
│ │ ls {sprint_artifacts}/stories/{story-key}.md │ │
|
|
314
|
+
│ │ grep "Status: ready-for-dev" {story-file} │ │
|
|
315
|
+
│ │ │ │
|
|
316
|
+
│ │ ❌ 如果故事文件不存在:禁止开发!返回 STEP 1 │ │
|
|
317
|
+
│ │ ❌ 如果状态不是 ready-for-dev:返回 STEP 1-2 │ │
|
|
318
|
+
│ │ ✅ 如果存在且状态正确:继续开发 │ │
|
|
319
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
320
|
+
│ │
|
|
321
|
+
│ 执行步骤: │
|
|
322
|
+
│ │
|
|
323
|
+
│ 1. 唤醒 DEV 智能体 │
|
|
324
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
325
|
+
│ │ 执行命令: /dev │ │
|
|
326
|
+
│ │ 说明: 唤醒开发者 Amelia,准备进行 TDD 开发 │ │
|
|
327
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
328
|
+
│ │
|
|
329
|
+
│ 2. 🔴 执行故事开发工作流 [必须] │
|
|
330
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
331
|
+
│ │ 执行命令: *develop-story │ │
|
|
332
|
+
│ │ 说明: 基于故事文件执行 TDD 驱动开发 │ │
|
|
333
|
+
│ │ 执行流程: │ │
|
|
334
|
+
│ │ - TDD 实现 (红-绿-重构) │ │
|
|
335
|
+
│ │ - 编写全面测试 │ │
|
|
336
|
+
│ │ - 运行验证和测试 │ │
|
|
337
|
+
│ │ 状态: ready-for-dev → in-progress │ │
|
|
338
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
339
|
+
│ │
|
|
340
|
+
│ 🚨 关键规则: │
|
|
341
|
+
│ ┌─────────────────────────────────────────────────────────────┐ │
|
|
342
|
+
│ │ ❌ 禁止基于 Epic 直接开发!必须基于 Story 文件! │ │
|
|
343
|
+
│ │ ✅ 故事文件是唯一的事实来源 │ │
|
|
344
|
+
│ │ ✅ 严格按照 Tasks/Subtasks 顺序执行 │ │
|
|
345
|
+
│ │ ✅ 每个任务完成前必须有测试覆盖 │ │
|
|
346
|
+
│ │ ✅ 所有单元测试必须 100% 通过 │ │
|
|
347
|
+
│ └─────────────────────────────────────────────────────────────┘ │
|
|
348
|
+
│ │
|
|
349
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**执行命令**:
|
|
353
|
+
```bash
|
|
354
|
+
# 🚨 前置检查:验证故事文件存在
|
|
355
|
+
ls {sprint_artifacts}/stories/{story-key}.md
|
|
356
|
+
grep "Status: ready-for-dev" {sprint_artifacts}/stories/{story-key}.md
|
|
357
|
+
|
|
358
|
+
# 唤醒 DEV 智能体
|
|
359
|
+
/dev
|
|
360
|
+
|
|
361
|
+
# 🔴 [必须] 执行故事开发 (基于故事文件!)
|
|
362
|
+
*develop-story
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
**TDD 执行流程**:
|
|
366
|
+
```
|
|
367
|
+
For Each Task in Story:
|
|
368
|
+
1. 🔴 编写测试 (Red Phase)
|
|
369
|
+
- 根据接受标准编写测试用例
|
|
370
|
+
- 运行测试,确认失败
|
|
371
|
+
|
|
372
|
+
2. 🟢 实现代码 (Green Phase)
|
|
373
|
+
- 编写最小代码使测试通过
|
|
374
|
+
- 运行测试,确认通过
|
|
375
|
+
|
|
376
|
+
3. 🔵 重构 (Refactor Phase)
|
|
377
|
+
- 优化代码结构
|
|
378
|
+
- 确保测试仍然通过
|
|
379
|
+
|
|
380
|
+
4. ✅ 标记任务完成
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
#### STEP 4: 代码审查 [必须]
|
|
386
|
+
|
|
387
|
+
**角色激活**: DEV (Amelia)
|
|
388
|
+
|
|
389
|
+
```
|
|
390
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
391
|
+
│ 🔴 STEP 4: 代码审查 [必须] │
|
|
392
|
+
│ 智能体: Amelia (DEV) │
|
|
393
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
394
|
+
│ │
|
|
395
|
+
│ 前置条件检查: │
|
|
396
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
397
|
+
│ │ # 验证故事状态为 in-progress 且单元测试已通过 │ │
|
|
398
|
+
│ │ grep "Status: in-progress" {story-file} │ │
|
|
399
|
+
│ │ │ │
|
|
400
|
+
│ │ ❌ 如果状态不是 in-progress:返回 STEP 3 │ │
|
|
401
|
+
│ │ ✅ 如果状态正确且测试通过:继续执行代码审查 │ │
|
|
402
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
403
|
+
│ │
|
|
404
|
+
│ 执行步骤: │
|
|
405
|
+
│ │
|
|
406
|
+
│ 1. 唤醒 DEV 智能体 (建议全新上下文) │
|
|
407
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
408
|
+
│ │ 执行命令: /dev │ │
|
|
409
|
+
│ │ 建议: 使用全新上下文和不同 LLM 以获得更客观的评估 │ │
|
|
410
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
411
|
+
│ │
|
|
412
|
+
│ 2. 🔴 执行代码审查工作流 [必须] │
|
|
413
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
414
|
+
│ │ 执行命令: *code-review │ │
|
|
415
|
+
│ │ 审查维度: │ │
|
|
416
|
+
│ │ - 功能正确性: 是否满足所有接受标准 │ │
|
|
417
|
+
│ │ - 代码质量: 清晰可读、命名规范、遵循项目规范 │ │
|
|
418
|
+
│ │ - 安全性: 注入风险、敏感数据处理、认证授权 │ │
|
|
419
|
+
│ │ - 测试覆盖: 测试充分性、边界情况覆盖 │ │
|
|
420
|
+
│ │ 状态: in-progress → review │ │
|
|
421
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
422
|
+
│ │
|
|
423
|
+
│ 🚨 审查结果处理: │
|
|
424
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
425
|
+
│ │ APPROVED (通过): │ │
|
|
426
|
+
│ │ - 状态更新为 review │ │
|
|
427
|
+
│ │ - 继续到 STEP 5 (测试验证) │ │
|
|
428
|
+
│ │ │ │
|
|
429
|
+
│ │ CHANGES_REQUESTED (需修改): │ │
|
|
430
|
+
│ │ - 返回 STEP 3 修复问题 │ │
|
|
431
|
+
│ │ - 修复后重新执行 STEP 3-4 │ │
|
|
432
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
433
|
+
│ │
|
|
434
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
**执行命令**:
|
|
438
|
+
```bash
|
|
439
|
+
# 唤醒 DEV 智能体 (建议全新上下文)
|
|
440
|
+
/dev
|
|
441
|
+
|
|
442
|
+
# 🔴 [必须] 执行代码审查
|
|
443
|
+
*code-review
|
|
444
|
+
|
|
445
|
+
# 🚨 门禁检查:
|
|
446
|
+
# - APPROVED: 继续到 STEP 5 (测试验证)
|
|
447
|
+
# - CHANGES_REQUESTED: 返回 STEP 3 修复
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
#### STEP 5: 测试验证 [必须]
|
|
453
|
+
|
|
454
|
+
**角色激活**: TEA (Murat)
|
|
455
|
+
|
|
456
|
+
```
|
|
457
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
458
|
+
│ 🔴 STEP 5: 测试验证 [必须] - 故事生命周期最后一步 │
|
|
459
|
+
│ 智能体: Murat (TEA) │
|
|
460
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
461
|
+
│ │
|
|
462
|
+
│ 前置条件检查: │
|
|
463
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
464
|
+
│ │ # 验证故事状态为 review 且代码审查已通过 │ │
|
|
465
|
+
│ │ grep "Status: review" {story-file} │ │
|
|
466
|
+
│ │ │ │
|
|
467
|
+
│ │ ❌ 如果状态不是 review:返回 STEP 4 完成代码审查 │ │
|
|
468
|
+
│ │ ✅ 如果状态正确:继续执行测试验证 │ │
|
|
469
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
470
|
+
│ │
|
|
471
|
+
│ 执行步骤: │
|
|
472
|
+
│ │
|
|
473
|
+
│ 1. 唤醒 TEA 智能体 │
|
|
474
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
475
|
+
│ │ 执行命令: /tea │ │
|
|
476
|
+
│ │ 说明: 唤醒测试架构师 Murat,准备进行测试验证 │ │
|
|
477
|
+
│ │ 建议: 使用全新上下文以获得更客观的测试评估 │ │
|
|
478
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
479
|
+
│ │
|
|
480
|
+
│ 2. 🔴 执行需求追溯验证 [必须] │
|
|
481
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
482
|
+
│ │ 执行命令: *trace │ │
|
|
483
|
+
│ │ 验证内容: │ │
|
|
484
|
+
│ │ - 需求覆盖: 每个接受标准都有对应的代码实现 │ │
|
|
485
|
+
│ │ - 测试覆盖: 每个接受标准都有对应的测试用例 │ │
|
|
486
|
+
│ │ - 追溯完整: 需求 ↔ 代码 ↔ 测试 三向追溯 │ │
|
|
487
|
+
│ │ - 无遗漏: 没有未实现的需求项 │ │
|
|
488
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
489
|
+
│ │
|
|
490
|
+
│ 3. 🔴 执行测试质量评审 [必须] │
|
|
491
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
492
|
+
│ │ 执行命令: *test-review │ │
|
|
493
|
+
│ │ 评审维度: │ │
|
|
494
|
+
│ │ - 测试充分性: 测试用例是否覆盖所有场景 │ │
|
|
495
|
+
│ │ - 边界测试: 边界条件和异常情况是否测试 │ │
|
|
496
|
+
│ │ - 测试质量: 断言是否明确、测试是否独立 │ │
|
|
497
|
+
│ │ - 集成测试: 模块间交互是否验证 │ │
|
|
498
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
499
|
+
│ │
|
|
500
|
+
│ 🚨 验证结果处理: │
|
|
501
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
502
|
+
│ │ PASS (通过): │ │
|
|
503
|
+
│ │ - 状态: review → done │ │
|
|
504
|
+
│ │ - 故事完成!处理下一个故事 │ │
|
|
505
|
+
│ │ │ │
|
|
506
|
+
│ │ FAIL (失败): │ │
|
|
507
|
+
│ │ - 状态: review → in-progress │ │
|
|
508
|
+
│ │ - 返回 STEP 3 修复问题 │ │
|
|
509
|
+
│ │ - 修复后重新执行 STEP 3-5 │ │
|
|
510
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
511
|
+
│ │
|
|
512
|
+
│ 🚨 门禁检查 (GATE 5 - 最终门禁): │
|
|
513
|
+
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
514
|
+
│ │ # 故事完成验证 │ │
|
|
515
|
+
│ │ 1. 需求追溯完整 (*trace 通过) │ │
|
|
516
|
+
│ │ 2. 测试质量达标 (*test-review 通过) │ │
|
|
517
|
+
│ │ 3. 所有测试 100% 通过 │ │
|
|
518
|
+
│ │ 4. 故事状态已更新为 done │ │
|
|
519
|
+
│ │ │ │
|
|
520
|
+
│ │ ❌ 验证未通过:返回 STEP 3 修复 │ │
|
|
521
|
+
│ │ ✅ 验证通过:故事完成,处理下一个故事 │ │
|
|
522
|
+
│ └─────────────────────────────────────────────────────────┘ │
|
|
523
|
+
│ │
|
|
524
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
**执行命令**:
|
|
528
|
+
```bash
|
|
529
|
+
# 🚨 前置检查:验证故事状态为 review
|
|
530
|
+
grep "Status: review" {sprint_artifacts}/stories/{story-key}.md
|
|
531
|
+
|
|
532
|
+
# 唤醒 TEA 智能体 (建议全新上下文)
|
|
533
|
+
/tea
|
|
534
|
+
|
|
535
|
+
# 🔴 [必须] 执行需求追溯验证
|
|
536
|
+
*trace
|
|
537
|
+
|
|
538
|
+
# 🔴 [必须] 执行测试质量评审
|
|
539
|
+
*test-review
|
|
540
|
+
|
|
541
|
+
# 根据验证结果处理:
|
|
542
|
+
# PASS → 故事完成,处理下一个故事
|
|
543
|
+
# FAIL → 返回 STEP 3 修复
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
---
|
|
547
|
+
|
|
548
|
+
## 状态流转图
|
|
549
|
+
|
|
550
|
+
```
|
|
551
|
+
STEP 1 STEP 2
|
|
552
|
+
┌──────────────┐ ┌──────────────┐
|
|
553
|
+
backlog ────│ *create-story │───▶│ *validate │───▶ ready-for-dev
|
|
554
|
+
│ (SM) │ │ (SM) │
|
|
555
|
+
└──────────────┘ └──────────────┘
|
|
556
|
+
│
|
|
557
|
+
│ STEP 3
|
|
558
|
+
▼
|
|
559
|
+
┌──────────────┐
|
|
560
|
+
│ *develop-story│
|
|
561
|
+
│ (DEV) │
|
|
562
|
+
└──────────────┘
|
|
563
|
+
│
|
|
564
|
+
▼
|
|
565
|
+
in-progress
|
|
566
|
+
│
|
|
567
|
+
│ STEP 4
|
|
568
|
+
▼
|
|
569
|
+
┌──────────────┐
|
|
570
|
+
┌────────│ *code-review │────────┐
|
|
571
|
+
│ │ (DEV) │ │
|
|
572
|
+
│ └──────────────┘ │
|
|
573
|
+
│ │
|
|
574
|
+
APPROVED CHANGES_REQUESTED
|
|
575
|
+
│ │
|
|
576
|
+
▼ │
|
|
577
|
+
review │
|
|
578
|
+
│ │
|
|
579
|
+
│ STEP 5 │
|
|
580
|
+
▼ │
|
|
581
|
+
┌──────────────┐ │
|
|
582
|
+
┌───────│ *trace + │────────┐ │
|
|
583
|
+
│ │ *test-review │ │ │
|
|
584
|
+
│ │ (TEA) │ │ │
|
|
585
|
+
│ └──────────────┘ │ │
|
|
586
|
+
│ │ │
|
|
587
|
+
PASS FAIL │
|
|
588
|
+
│ │ │
|
|
589
|
+
▼ └───────────────┘
|
|
590
|
+
done (返回 STEP 3)
|
|
591
|
+
│
|
|
592
|
+
└───▶ 🔄 返回 STEP 1 开始下一个故事
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
---
|
|
596
|
+
|
|
597
|
+
## 状态更新操作
|
|
598
|
+
|
|
599
|
+
每次状态变化时,必须同时更新两个文件:
|
|
600
|
+
|
|
601
|
+
### 1. sprint-status.yaml
|
|
602
|
+
|
|
603
|
+
```yaml
|
|
604
|
+
development_status:
|
|
605
|
+
1-1-story-name: done # 原来是 review
|
|
606
|
+
1-2-story-name: in-progress # 当前正在处理的故事
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
### 2. 故事文件
|
|
610
|
+
|
|
611
|
+
```markdown
|
|
612
|
+
# Story: 1-2-story-name
|
|
613
|
+
|
|
614
|
+
Status: in-progress
|
|
615
|
+
|
|
616
|
+
## Story
|
|
617
|
+
...
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
---
|
|
621
|
+
|
|
622
|
+
## 与其他工作流的关系
|
|
623
|
+
|
|
624
|
+
```
|
|
625
|
+
┌─────────────────────────────────────────────────────────────────────────┐
|
|
626
|
+
│ 工作流关系图 │
|
|
627
|
+
├─────────────────────────────────────────────────────────────────────────┤
|
|
628
|
+
│ │
|
|
629
|
+
│ requirement-to-epic-workflow ───▶ story-implementation-workflow│
|
|
630
|
+
│ (需求分析到 Epic 生成) (用户故事自动化实现) │
|
|
631
|
+
│ │
|
|
632
|
+
│ 输出: 输入: │
|
|
633
|
+
│ - PRD ◀────── - PRD │
|
|
634
|
+
│ - Architecture ◀────── - Architecture │
|
|
635
|
+
│ - Epics (含故事定义) ◀────── - Epics │
|
|
636
|
+
│ │
|
|
637
|
+
│ OR │
|
|
638
|
+
│ │
|
|
639
|
+
│ full-auto-workflow │
|
|
640
|
+
│ (完整的端到端自动化) │
|
|
641
|
+
│ = requirement-to-epic + story-implementation │
|
|
642
|
+
│ │
|
|
643
|
+
└─────────────────────────────────────────────────────────────────────────┘
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
## 执行完成
|
|
649
|
+
|
|
650
|
+
当所有故事完成后,输出完成报告:
|
|
651
|
+
|
|
652
|
+
```markdown
|
|
653
|
+
# 用户故事实现完成报告
|
|
654
|
+
|
|
655
|
+
## 执行摘要
|
|
656
|
+
- **开始时间**: {start_time}
|
|
657
|
+
- **完成时间**: {end_time}
|
|
658
|
+
- **状态**: ✅ 成功完成
|
|
659
|
+
|
|
660
|
+
## 故事完成统计
|
|
661
|
+
- 总故事数: N
|
|
662
|
+
- 已完成: N
|
|
663
|
+
- 完成率: 100%
|
|
664
|
+
|
|
665
|
+
## 产出物
|
|
666
|
+
- [x] 实现的代码
|
|
667
|
+
- [x] 测试代码
|
|
668
|
+
- [x] 每个故事的验证报告
|
|
669
|
+
- [x] sprint-status.yaml (已更新)
|
|
670
|
+
|
|
671
|
+
## 质量指标
|
|
672
|
+
- 单元测试: 全部通过
|
|
673
|
+
- 代码审查: 全部 APPROVED
|
|
674
|
+
- 测试验证: 全部 PASS
|
|
675
|
+
```
|