6aspec 2.0.0-dev.27 → 2.0.0-dev.29
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/.6aspec/rules/brown/brown_design_sop.md +188 -155
- package/.6aspec/rules/brown/brown_implement_sop.md +88 -46
- package/.6aspec/rules/brown/brown_proposal_sop.md +17 -25
- package/.6aspec/rules/brown/brown_specs_sop.md +65 -56
- package/.6aspec/rules/brown/brown_tasks_sop.md +196 -80
- package/package.json +1 -1
|
@@ -2,9 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
执行任务实现。
|
|
4
4
|
|
|
5
|
+
> **阶段定位**:Implement 的目标是按 Tasks 阶段拆解的 `TASK-*.md` 逐个交付实现结果,并保持“变更最小化、可验证、可追溯”。
|
|
6
|
+
> - 默认执行策略:**里程碑优先 + 依赖优先**(优先完成更早里程碑中依赖已满足的任务)。
|
|
7
|
+
> - 关键承接:Tasks 中定义的「契约/数据库变更/迁移兼容回滚」等交付物,必须在 Implement 阶段逐项落地并验收。
|
|
8
|
+
|
|
5
9
|
**输入**:`/6aspec:brown:implement` 后可选需求名称。
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 步骤
|
|
8
14
|
|
|
9
15
|
1. **选择需求并检查状态**
|
|
10
16
|
|
|
@@ -14,47 +20,67 @@
|
|
|
14
20
|
|
|
15
21
|
2. **读取上下文文件**
|
|
16
22
|
|
|
17
|
-
读取以下文档:
|
|
23
|
+
根据 `flowDepth` 读取以下文档:
|
|
24
|
+
|
|
25
|
+
**轻量级流程**:
|
|
26
|
+
- `6aspecdoc/brown/<name>/artifacts/proposal.md`
|
|
27
|
+
- `6aspecdoc/brown/<name>/artifacts/specs.md`
|
|
28
|
+
- `6aspecdoc/brown/<name>/artifacts/design.md`
|
|
29
|
+
- `6aspecdoc/brown/<name>/artifacts/tasks-overview.md`
|
|
30
|
+
- `6aspecdoc/brown/<name>/tasks/TASK-*.md`
|
|
31
|
+
- `6aspecdoc/brown/<name>/explore-summary.md`(如果存在)
|
|
32
|
+
|
|
33
|
+
**标准级/完整级流程**:
|
|
34
|
+
- `6aspecdoc/brown/<name>/artifacts/proposal.md`
|
|
35
|
+
- `6aspecdoc/brown/<name>/artifacts/understanding.md`
|
|
36
|
+
- `6aspecdoc/brown/<name>/artifacts/impact-analysis.md`
|
|
37
|
+
- `6aspecdoc/brown/<name>/artifacts/specs.md`
|
|
18
38
|
- `6aspecdoc/brown/<name>/artifacts/design.md`
|
|
19
39
|
- `6aspecdoc/brown/<name>/artifacts/tasks-overview.md`
|
|
20
40
|
- `6aspecdoc/brown/<name>/tasks/TASK-*.md`
|
|
21
41
|
|
|
22
|
-
3.
|
|
42
|
+
3. **显示当前进度(含里程碑)**
|
|
23
43
|
|
|
24
44
|
显示:
|
|
25
|
-
- 总任务数
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
- 下一个待执行的任务
|
|
45
|
+
- 总任务数 / 已完成任务数 / 待完成任务数
|
|
46
|
+
- 各里程碑完成度(M0~Mn:已完成/总数)
|
|
47
|
+
- 下一个可执行任务(里程碑最早且依赖满足)
|
|
29
48
|
|
|
30
49
|
4. **执行任务(循环直到完成或阻塞)**
|
|
31
50
|
|
|
32
51
|
对每个待完成的任务:
|
|
33
52
|
|
|
34
|
-
a.
|
|
53
|
+
a. **选择下一个任务(里程碑优先 + 依赖优先)**
|
|
54
|
+
- 优先选择最早里程碑中仍未完成的任务
|
|
55
|
+
- 若任务在 `TASK-*.md` 的“前置依赖”中列出依赖任务,则必须依赖全部完成后才能开始
|
|
56
|
+
- 若最早里程碑任务均被阻塞(依赖未满足/信息不清晰/环境问题),则暂停并报告阻塞原因
|
|
57
|
+
|
|
58
|
+
b. **显示正在执行的任务**
|
|
35
59
|
```
|
|
36
|
-
## 执行任务
|
|
60
|
+
## 执行任务 <i>/<N>: TASK-<序号>-<slug>
|
|
37
61
|
|
|
38
|
-
|
|
39
|
-
|
|
62
|
+
**所属里程碑**: <M0/M1/...>
|
|
63
|
+
**任务描述**: <任务描述>
|
|
64
|
+
**预估工时**: <X人日>
|
|
40
65
|
```
|
|
41
66
|
|
|
42
|
-
|
|
67
|
+
c. **读取任务详情**
|
|
43
68
|
- 读取 `6aspecdoc/brown/<name>/tasks/TASK-<序号>.md`
|
|
44
|
-
-
|
|
69
|
+
- 理解任务目标、输入、输出、详细步骤、验收标准
|
|
45
70
|
|
|
46
|
-
|
|
47
|
-
-
|
|
71
|
+
d. **执行代码/脚本变更**
|
|
72
|
+
- 根据任务步骤进行实现与修改
|
|
48
73
|
- 保持变更最小化和聚焦
|
|
49
|
-
-
|
|
74
|
+
- 遵循 `design.md` 的技术决策与边界(不要在 Implement 阶段临时发明新方案)
|
|
75
|
+
|
|
76
|
+
e. **质量控制检查**
|
|
50
77
|
|
|
51
|
-
|
|
52
|
-
**必须严格遵循代码规范**:`.6aspec/rules/biz/code.md`,并使用其中的"检查清单"章节进行自我验证。
|
|
78
|
+
**必须严格遵循代码规范**:`.6aspec/rules/biz/code.md`,并使用其中的“检查清单”章节进行自我验证。
|
|
53
79
|
|
|
54
80
|
**重点关注以下红线规则(零容忍):**
|
|
55
|
-
- [ ] 循环中的数据库查询、网络请求、文件I/O操作
|
|
56
|
-
- [ ] SQL字符串拼接、敏感信息硬编码、弱加密算法使用
|
|
57
|
-
- [ ] 循环依赖、跨层直接调用、空catch块
|
|
81
|
+
- [ ] 循环中的数据库查询、网络请求、文件 I/O 操作
|
|
82
|
+
- [ ] SQL 字符串拼接、敏感信息硬编码、弱加密算法使用
|
|
83
|
+
- [ ] 循环依赖、跨层直接调用、空 catch 块
|
|
58
84
|
|
|
59
85
|
**棕地需求特别检查:**
|
|
60
86
|
- [ ] 修改是否符合现有代码风格和架构模式
|
|
@@ -67,16 +93,33 @@
|
|
|
67
93
|
- [ ] 检查代码编译和语法错误
|
|
68
94
|
- [ ] 验证修改范围最小化
|
|
69
95
|
|
|
70
|
-
|
|
96
|
+
f. **任务交付物核对(对齐新版 TASK 模板)**
|
|
97
|
+
|
|
98
|
+
根据任务文件中的栏目,逐项确认交付物已落地:
|
|
99
|
+
- 若包含“契约与接口出入参(如适用)”:
|
|
100
|
+
- [ ] 已明确字段清单与口径/必填性/兼容策略
|
|
101
|
+
- [ ] 已明确错误语义与幂等语义,并在实现/测试中覆盖
|
|
102
|
+
- 若包含“数据库变更(如适用)”:
|
|
103
|
+
- [ ] 已提供可执行的变更脚本与回滚要点(或回滚脚本)
|
|
104
|
+
- [ ] 已提供关键校验点(校验 SQL 或等价验证手段)
|
|
105
|
+
- 若包含“迁移 / 兼容 / 回滚(如适用)”:
|
|
106
|
+
- [ ] 已覆盖迁移/回填步骤与边界条件
|
|
107
|
+
- [ ] 已覆盖兼容策略(行为/数据/集成)与灰度/开关验证点
|
|
108
|
+
- [ ] 已明确回滚影响与限制,并准备验证方式
|
|
109
|
+
- 若任务标注 Observability:
|
|
110
|
+
- [ ] 处理记录可追踪(触发来源/处理结果/关键时间点可查)
|
|
111
|
+
|
|
112
|
+
g. **标记任务完成**
|
|
71
113
|
- 在任务文件中更新状态:`📋 待开始` → `✅ 已完成`
|
|
72
|
-
- 在 `
|
|
114
|
+
- 在 `tasks-overview.md` 中更新任务状态:`- [ ]` → `- [x]`
|
|
115
|
+
- 注意:`tasks-overview.md` 中任务通常为链接形式(如 `[TASK-001...](../tasks/TASK-001.md)`),**只修改勾选,不要破坏链接结构**。
|
|
73
116
|
- 更新 `status.json` 中的任务计数
|
|
74
117
|
|
|
75
|
-
|
|
118
|
+
h. **继续下一个任务**
|
|
76
119
|
|
|
77
120
|
**暂停条件**:
|
|
78
|
-
- 任务不清晰 →
|
|
79
|
-
- 实现发现设计问题 →
|
|
121
|
+
- 任务不清晰 → 暂停并询问澄清
|
|
122
|
+
- 实现发现设计问题 → 暂停并建议更新 artifacts(design/specs/tasks)
|
|
80
123
|
- 遇到错误或阻塞 → 报告并等待指导
|
|
81
124
|
- 用户中断
|
|
82
125
|
|
|
@@ -86,18 +129,14 @@
|
|
|
86
129
|
```
|
|
87
130
|
## 实现完成:<name>
|
|
88
131
|
|
|
89
|
-
|
|
90
|
-
**任务完成**: 8/8 (100%)
|
|
132
|
+
**任务完成**: <N>/<N> (100%)
|
|
91
133
|
|
|
92
134
|
### 本次完成的任务
|
|
93
|
-
- [x] TASK-001:
|
|
94
|
-
- [x] TASK-002:
|
|
95
|
-
-
|
|
96
|
-
...
|
|
135
|
+
- [x] TASK-001: ...
|
|
136
|
+
- [x] TASK-002: ...
|
|
137
|
+
- ...
|
|
97
138
|
|
|
98
139
|
### 下一步
|
|
99
|
-
所有任务已完成!
|
|
100
|
-
|
|
101
140
|
- 轻量级/标准级流程:
|
|
102
141
|
- 运行 `/6aspec:brown:verify` 进行质量检查(可选)
|
|
103
142
|
- 运行 `/6aspec:brown:archive` 归档此需求
|
|
@@ -110,8 +149,7 @@
|
|
|
110
149
|
```
|
|
111
150
|
## 实现暂停:<name>
|
|
112
151
|
|
|
113
|
-
|
|
114
|
-
**任务完成**: 4/8 (50%)
|
|
152
|
+
**任务完成**: <完成数>/<总数> (<百分比>)
|
|
115
153
|
|
|
116
154
|
### 暂停原因
|
|
117
155
|
<描述遇到的问题>
|
|
@@ -133,12 +171,11 @@
|
|
|
133
171
|
{
|
|
134
172
|
"status": "completed",
|
|
135
173
|
"phases": {
|
|
136
|
-
...
|
|
137
174
|
"implement": "done"
|
|
138
175
|
},
|
|
139
176
|
"tasks": {
|
|
140
|
-
"total":
|
|
141
|
-
"completed":
|
|
177
|
+
"total": <N>,
|
|
178
|
+
"completed": <N>,
|
|
142
179
|
"pending": 0
|
|
143
180
|
}
|
|
144
181
|
}
|
|
@@ -149,27 +186,32 @@
|
|
|
149
186
|
{
|
|
150
187
|
"status": "verify_pending",
|
|
151
188
|
"phases": {
|
|
152
|
-
...
|
|
153
189
|
"implement": "done",
|
|
154
190
|
"verify": "pending"
|
|
155
191
|
},
|
|
156
192
|
"tasks": {
|
|
157
|
-
"total":
|
|
158
|
-
"completed":
|
|
193
|
+
"total": <N>,
|
|
194
|
+
"completed": <N>,
|
|
159
195
|
"pending": 0
|
|
160
196
|
}
|
|
161
197
|
}
|
|
162
198
|
```
|
|
163
199
|
|
|
164
|
-
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 输出
|
|
165
203
|
|
|
166
204
|
根据执行情况显示相应的输出(见步骤 5)。
|
|
167
205
|
|
|
168
|
-
|
|
169
|
-
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 防护措施
|
|
209
|
+
|
|
210
|
+
- 必须先完成 Phase 4(Tasks)
|
|
170
211
|
- 必须读取上下文文件再开始实现
|
|
212
|
+
- 默认执行策略:里程碑优先 + 依赖优先;如发现阻塞必须暂停并报告
|
|
171
213
|
- 如果任务模糊,暂停并询问
|
|
172
214
|
- 如果实现发现设计问题,暂停并建议更新 artifacts
|
|
173
215
|
- 保持代码变更最小化和聚焦
|
|
174
|
-
-
|
|
216
|
+
- 立即更新任务状态(TASK 文件、tasks-overview、status.json)
|
|
175
217
|
- 遇到错误时暂停并报告
|
|
@@ -63,21 +63,12 @@
|
|
|
63
63
|
|
|
64
64
|
从需求描述中提取关键词(实体名、功能名、业务术语),然后执行快速搜索:
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
- 搜索相关实体类:pattern = `class.*<关键词>.*Entity`,type = `java`,glob = `*Entity.java`
|
|
67
|
+
- 搜索相关服务类:pattern = `class.*<关键词>.*Service`,type = `java`,glob = `*Service.java`
|
|
68
|
+
- 搜索相关 Controller 类:pattern = `class.*<关键词>.*Controller`,type = `java`,glob = `*Controller.java`
|
|
69
|
+
- 搜索关键业务逻辑:pattern = `<关键方法名>`,type = `java`
|
|
69
70
|
|
|
70
|
-
|
|
71
|
-
rg "class.*<关键词>.*Service" --type java -g "*Service.java"
|
|
72
|
-
|
|
73
|
-
# 搜索相关Controller类
|
|
74
|
-
rg "class.*<关键词>.*Controller" --type java -g "*Controller.java"
|
|
75
|
-
|
|
76
|
-
# 搜索关键业务逻辑
|
|
77
|
-
rg "<关键方法名>" --type java -C 3
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
识别受影响的核心文件(3-5个),快速阅读关键代码片段。
|
|
71
|
+
识别受影响的核心文件(3-5 个),快速阅读关键代码片段。
|
|
81
72
|
|
|
82
73
|
b. **识别待明确问题**
|
|
83
74
|
|
|
@@ -160,15 +151,17 @@
|
|
|
160
151
|
<!-- If modifying existing behavior -->
|
|
161
152
|
- `<capability-name>`: <brief description>
|
|
162
153
|
|
|
163
|
-
## Impact
|
|
154
|
+
## Impact(范围影响)
|
|
164
155
|
|
|
165
|
-
|
|
166
|
-
- `<file-path>`: <what changes>
|
|
167
|
-
- `<file-path>`: <what changes>
|
|
156
|
+
> 只描述「范围影响」而非实现细节:不写代码/类/数据库表层面的改动。
|
|
168
157
|
|
|
169
|
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
158
|
+
- **业务影响**:<影响哪些业务流程/指标/体验>
|
|
159
|
+
- **用户与角色影响**:<影响哪些角色/人群/是否需要公告或培训>
|
|
160
|
+
- **系统模块影响**:<影响哪些系统/领域模块(模块级即可)>
|
|
161
|
+
- **兼容性影响**:<行为/接口是否向后兼容;对现有流程是否有行为变化>
|
|
162
|
+
- **数据影响(业务口径)**:<业务字段含义/口径变化;是否需要补数据/迁移(不写表结构)>
|
|
163
|
+
- **运营/流程影响**:<运营配置、审批链路、权限策略是否变化>
|
|
164
|
+
- **风险与回滚影响**:<主要风险点;是否可灰度;回滚对业务的影响>
|
|
172
165
|
|
|
173
166
|
## Next Steps
|
|
174
167
|
|
|
@@ -181,9 +174,8 @@
|
|
|
181
174
|
- Why 部分:1-2 句话说明问题或机会
|
|
182
175
|
- What Changes 部分:列出主要变更点
|
|
183
176
|
- Capabilities 部分:列出新增或修改的系统能力(每个 capability 将对应一个 spec 文件)
|
|
184
|
-
- Impact
|
|
185
|
-
-
|
|
186
|
-
- 标准级/完整级流程的 Impact 基于 impact-analysis.md(详细分析的摘要)
|
|
177
|
+
- Impact(范围影响)部分:只写业务/系统范围影响、兼容性、数据口径、风险与回滚等,不写代码/类/数据库表等实现细节
|
|
178
|
+
- Impact 内容基于:原始需求描述、(如有)explore 摘要、以及标准级/完整级流程中的 understanding / impact-analysis 结论进行归纳
|
|
187
179
|
- 如果轻量级流程在步骤3中询问了用户问题,基于用户的回答生成proposal
|
|
188
180
|
|
|
189
181
|
5. **更新状态**
|
|
@@ -362,7 +354,7 @@
|
|
|
362
354
|
**防护措施**
|
|
363
355
|
- 适用于所有流程(轻量级、标准级、完整级)
|
|
364
356
|
- 如果需求信息不明确,必须询问用户
|
|
365
|
-
- 提案必须包含Why、What、Impact三个核心部分
|
|
357
|
+
- 提案必须包含 Why、What、Impact(范围影响) 三个核心部分
|
|
366
358
|
- 提案应聚焦高层次的业务目标和核心能力,不包含详细的功能需求(FR)和验收标准(AC)
|
|
367
359
|
- 详细的功能需求和验收标准应该在specs阶段定义
|
|
368
360
|
- 风险评估不能省略
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
**轻量级流程**:
|
|
23
23
|
- `6aspecdoc/brown/<name>/artifacts/proposal.md`
|
|
24
|
+
- `6aspecdoc/brown/<name>/explore-summary.md` - 探索摘要(如果存在)
|
|
24
25
|
|
|
25
26
|
**标准级/完整级流程**:
|
|
26
27
|
- `6aspecdoc/brown/<name>/artifacts/proposal.md`
|
|
@@ -47,17 +48,11 @@
|
|
|
47
48
|
|
|
48
49
|
**探索方式**:
|
|
49
50
|
|
|
50
|
-
a. **简单搜索**(使用Grep/Glob工具):
|
|
51
|
-
```bash
|
|
52
|
-
# 搜索相关Entity类的字段定义
|
|
53
|
-
rg "private.*<字段名>" --type java -g "*Entity.java" -C 3
|
|
51
|
+
a. **简单搜索**(使用 Grep/Glob 工具):
|
|
54
52
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
# 搜索现有的测试场景
|
|
59
|
-
rg "test.*<功能名>" --type java -g "*Test.java"
|
|
60
|
-
```
|
|
53
|
+
- 搜索相关 Entity 类的字段定义:pattern = `private.*<字段名>`,type = `java`,glob = `*Entity.java`
|
|
54
|
+
- 搜索相关验证注解:pattern = `@NotNull|@NotEmpty|@Valid`,type = `java`,glob = `*Entity.java`
|
|
55
|
+
- 搜索现有的测试场景:pattern = `test.*<功能名>`,type = `java`,glob = `*Test.java`
|
|
61
56
|
|
|
62
57
|
b. **复杂探索**(使用Task工具调用Explore agent):
|
|
63
58
|
- 当需要深入理解现有架构模式时
|
|
@@ -87,59 +82,37 @@
|
|
|
87
82
|
|
|
88
83
|
<需求描述,使用 SHALL/MUST 关键字表示强制性要求>
|
|
89
84
|
|
|
90
|
-
#####
|
|
91
|
-
|
|
92
|
-
-
|
|
93
|
-
- **THEN** <预期结果>
|
|
94
|
-
- **AND** <额外的预期结果>(可选)
|
|
95
|
-
|
|
96
|
-
##### Scenario: <另一个场景名称>
|
|
97
|
-
|
|
98
|
-
- **WHEN** <触发条件>
|
|
99
|
-
- **THEN** <预期结果>
|
|
100
|
-
|
|
101
|
-
#### Requirement: <另一个需求名称>
|
|
102
|
-
|
|
103
|
-
<需求描述>
|
|
85
|
+
##### 验收标准
|
|
86
|
+
- AC1: <可观察、可验证的验收点>
|
|
87
|
+
- AC2: <可观察、可验证的验收点>
|
|
104
88
|
|
|
105
89
|
##### Scenario: <场景名称>
|
|
106
90
|
|
|
107
|
-
-
|
|
108
|
-
- **
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
5. **基于 Capabilities 定义功能需求**
|
|
112
|
-
|
|
113
|
-
从 proposal.md 中读取 Capabilities 列表,按 Capability 组织功能需求:
|
|
114
|
-
|
|
115
|
-
**功能需求格式**(按 Capability 组织):
|
|
116
|
-
```markdown
|
|
117
|
-
### Capability: <capability-name> [ADD/MODIFY/REMOVE]
|
|
118
|
-
|
|
119
|
-
<Capability 描述,说明这个能力是做什么的>
|
|
120
|
-
|
|
121
|
-
#### Requirement: <需求名称>
|
|
122
|
-
|
|
123
|
-
<需求描述,使用 SHALL/MUST 关键字表示强制性要求>
|
|
124
|
-
|
|
125
|
-
##### Scenario: <场景名称>
|
|
126
|
-
|
|
127
|
-
- **WHEN** <触发条件>
|
|
91
|
+
- **触发类型** 用户操作|系统事件|定时任务|外部系统触发
|
|
92
|
+
- **GIVEN** <前置条件(业务对象状态/权限/已有数据/开关等)>
|
|
93
|
+
- **WHEN** <触发动作>
|
|
128
94
|
- **THEN** <预期结果>
|
|
129
95
|
- **AND** <额外的预期结果>(可选)
|
|
130
96
|
|
|
131
97
|
##### Scenario: <另一个场景名称>
|
|
132
98
|
|
|
133
|
-
-
|
|
99
|
+
- **触发类型** 用户操作|系统事件|定时任务|外部系统触发
|
|
100
|
+
- **GIVEN** <前置条件>
|
|
101
|
+
- **WHEN** <触发动作>
|
|
134
102
|
- **THEN** <预期结果>
|
|
135
103
|
|
|
136
104
|
#### Requirement: <另一个需求名称>
|
|
137
105
|
|
|
138
106
|
<需求描述>
|
|
139
107
|
|
|
108
|
+
##### 验收标准
|
|
109
|
+
- AC1: <...>
|
|
110
|
+
|
|
140
111
|
##### Scenario: <场景名称>
|
|
141
112
|
|
|
142
|
-
-
|
|
113
|
+
- **触发类型** 用户操作|系统事件|定时任务|外部系统触发
|
|
114
|
+
- **GIVEN** <前置条件>
|
|
115
|
+
- **WHEN** <触发动作>
|
|
143
116
|
- **THEN** <预期结果>
|
|
144
117
|
```
|
|
145
118
|
|
|
@@ -148,7 +121,8 @@
|
|
|
148
121
|
- 在 Capability 级别标识变更类型:[ADD](新增)、[MODIFY](修改)、[REMOVE](移除)
|
|
149
122
|
- 每个 Capability 下包含多个 Requirements
|
|
150
123
|
- 每个 Requirement 应该是独立的、可验证的
|
|
151
|
-
- 每个
|
|
124
|
+
- 每个 Requirement SHOULD 显式列出验收标准(AC),用于快速评审覆盖面与边界
|
|
125
|
+
- 每个 Scenario MUST 包含:触发类型 + GIVEN/WHEN/THEN(AND 可选);触发类型只能从「用户操作|系统事件|定时任务|外部系统触发」中选择
|
|
152
126
|
- 使用 SHALL/MUST 关键字表示强制性要求,SHOULD 表示推荐性要求
|
|
153
127
|
- 功能需求应该从用户视角描述(做什么,而不是怎么做)
|
|
154
128
|
- 避免技术实现细节(技术细节放在 design 阶段)
|
|
@@ -212,7 +186,7 @@
|
|
|
212
186
|
|
|
213
187
|
8. **创建需求规格文档**
|
|
214
188
|
|
|
215
|
-
|
|
189
|
+
注意:Scenario 用于将关键验收路径以结构化方式表达(GIVEN/WHEN/THEN),但验收标准仍应显式列出,便于评审快速检查覆盖面与边界。
|
|
216
190
|
|
|
217
191
|
创建 `6aspecdoc/brown/<name>/artifacts/specs.md`:
|
|
218
192
|
```markdown
|
|
@@ -240,7 +214,24 @@
|
|
|
240
214
|
- <业务约束:如必须满足某业务规则>
|
|
241
215
|
- <时间约束:如必须在某时间前完成>
|
|
242
216
|
|
|
243
|
-
## 2.
|
|
217
|
+
## 2. Key Entities(关键业务对象)
|
|
218
|
+
|
|
219
|
+
> 轻量业务模型:描述业务对象的含义、关键属性口径、状态与关系;避免写数据库表/类/字段类型。
|
|
220
|
+
|
|
221
|
+
- **实体**:<实体名称>
|
|
222
|
+
- **定义**:<一句话定义>
|
|
223
|
+
- **关键属性**:<属性1口径>;<属性2口径>...
|
|
224
|
+
- **状态**(可选):<状态列表>
|
|
225
|
+
- **关系**(可选):<与其他实体的业务关系>
|
|
226
|
+
|
|
227
|
+
## 3. Business Rules(业务规则)
|
|
228
|
+
|
|
229
|
+
> 业务上必须成立的约束/推导规则(与实现无关)。
|
|
230
|
+
|
|
231
|
+
- BR-001:<规则描述(条件/结果)>
|
|
232
|
+
- BR-002:<规则描述>
|
|
233
|
+
|
|
234
|
+
## 4. 功能需求
|
|
244
235
|
|
|
245
236
|
### Capability: <capability-name> [ADD]
|
|
246
237
|
|
|
@@ -250,24 +241,37 @@
|
|
|
250
241
|
|
|
251
242
|
<需求描述,使用 SHALL/MUST 关键字表示强制性要求>
|
|
252
243
|
|
|
244
|
+
##### 验收标准
|
|
245
|
+
- AC1: <可观察、可验证的验收点>
|
|
246
|
+
- AC2: <可观察、可验证的验收点>
|
|
247
|
+
|
|
253
248
|
##### Scenario: <场景名称>
|
|
254
249
|
|
|
255
|
-
-
|
|
250
|
+
- **触发类型** 用户操作|系统事件|定时任务|外部系统触发
|
|
251
|
+
- **GIVEN** <前置条件(业务对象状态/权限/已有数据/开关等)>
|
|
252
|
+
- **WHEN** <触发动作>
|
|
256
253
|
- **THEN** <预期结果>
|
|
257
254
|
- **AND** <额外的预期结果>(可选)
|
|
258
255
|
|
|
259
256
|
##### Scenario: <另一个场景名称>
|
|
260
257
|
|
|
261
|
-
-
|
|
258
|
+
- **触发类型** 用户操作|系统事件|定时任务|外部系统触发
|
|
259
|
+
- **GIVEN** <前置条件>
|
|
260
|
+
- **WHEN** <触发动作>
|
|
262
261
|
- **THEN** <预期结果>
|
|
263
262
|
|
|
264
263
|
#### Requirement: <另一个需求名称>
|
|
265
264
|
|
|
266
265
|
<需求描述>
|
|
267
266
|
|
|
267
|
+
##### 验收标准
|
|
268
|
+
- AC1: <...>
|
|
269
|
+
|
|
268
270
|
##### Scenario: <场景名称>
|
|
269
271
|
|
|
270
|
-
-
|
|
272
|
+
- **触发类型** 用户操作|系统事件|定时任务|外部系统触发
|
|
273
|
+
- **GIVEN** <前置条件>
|
|
274
|
+
- **WHEN** <触发动作>
|
|
271
275
|
- **THEN** <预期结果>
|
|
272
276
|
|
|
273
277
|
### Capability: <another-capability-name> [MODIFY]
|
|
@@ -278,12 +282,17 @@
|
|
|
278
282
|
|
|
279
283
|
<需求描述>
|
|
280
284
|
|
|
285
|
+
##### 验收标准
|
|
286
|
+
- AC1: <...>
|
|
287
|
+
|
|
281
288
|
##### Scenario: <场景名称>
|
|
282
289
|
|
|
283
|
-
-
|
|
290
|
+
- **触发类型** 用户操作|系统事件|定时任务|外部系统触发
|
|
291
|
+
- **GIVEN** <前置条件>
|
|
292
|
+
- **WHEN** <触发动作>
|
|
284
293
|
- **THEN** <预期结果>
|
|
285
294
|
|
|
286
|
-
##
|
|
295
|
+
## 5. 非功能需求
|
|
287
296
|
|
|
288
297
|
> **注意**:只写有明确要求的项,如果某个类别没有明确要求,可以省略该小节。
|
|
289
298
|
|
|
@@ -303,7 +312,7 @@
|
|
|
303
312
|
- 浏览器:SHALL 支持 <具体版本>
|
|
304
313
|
- 数据库:SHALL 兼容 <具体版本>
|
|
305
314
|
|
|
306
|
-
##
|
|
315
|
+
## 6. 下一步
|
|
307
316
|
|
|
308
317
|
运行 `/6aspec:brown:design` 进行技术方案设计
|
|
309
318
|
```
|