mspec-cli 4.0.0__py3-none-any.whl
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.
- mspec/__init__.py +5 -0
- mspec/__main__.py +7 -0
- mspec/cli.py +44 -0
- mspec/commands/__init__.py +7 -0
- mspec/commands/doctor.py +132 -0
- mspec/commands/init.py +157 -0
- mspec/commands/update.py +104 -0
- mspec/core/__init__.py +6 -0
- mspec/core/config.py +141 -0
- mspec/core/template.py +131 -0
- mspec/templates/config.yaml +187 -0
- mspec/templates/design-issue-taxonomy.md +180 -0
- mspec/templates/design-issues.md +218 -0
- mspec/templates/requirement-issue-taxonomy.md +155 -0
- mspec/templates/requirement-issues.md +214 -0
- mspec/utils/__init__.py +17 -0
- mspec/utils/console.py +39 -0
- mspec_cli-4.0.0.dist-info/METADATA +281 -0
- mspec_cli-4.0.0.dist-info/RECORD +23 -0
- mspec_cli-4.0.0.dist-info/WHEEL +5 -0
- mspec_cli-4.0.0.dist-info/entry_points.txt +2 -0
- mspec_cli-4.0.0.dist-info/licenses/LICENSE +21 -0
- mspec_cli-4.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# 设计问题清单
|
|
2
|
+
|
|
3
|
+
## 变更信息
|
|
4
|
+
- **变更名称**: [change-name]
|
|
5
|
+
- **当前阶段**: `analyzing` | `clarifying` | `clarified` | `resolved`
|
|
6
|
+
- **最后更新**: [YYYY-MM-DD]
|
|
7
|
+
- **下次检查**: [YYYY-MM-DD]
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 设计维度问题矩阵
|
|
12
|
+
|
|
13
|
+
<!--
|
|
14
|
+
说明:
|
|
15
|
+
1. 按设计问题分类学维度组织
|
|
16
|
+
2. 每个设计维度下列出具体问题
|
|
17
|
+
3. 问题 ID 格式:D[维度序号]-[序号] 例如 D1-001
|
|
18
|
+
-->
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### 维度 1: 架构决策
|
|
23
|
+
|
|
24
|
+
#### 问题列表
|
|
25
|
+
|
|
26
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 决策结果 |
|
|
27
|
+
|---------|----------|----------|------|----------|
|
|
28
|
+
| D1-001 | [如:架构模式选择未定] | 🔴 High / 🟡 Medium / 🟢 Low | `open` / `clarifying` / `clarified` | [决策结论] |
|
|
29
|
+
| D1-002 | [如:服务边界划分不清晰] | | | |
|
|
30
|
+
|
|
31
|
+
**D1-001 详细说明**:
|
|
32
|
+
- **问题类型**: 架构方案不确定
|
|
33
|
+
- **具体表现**: [详细描述]
|
|
34
|
+
- **影响范围**: [对系统的影响]
|
|
35
|
+
- **可选方案**:
|
|
36
|
+
- A) [描述 + 优缺点]
|
|
37
|
+
- B) [描述 + 优缺点]
|
|
38
|
+
- C) [描述 + 优缺点]
|
|
39
|
+
- D) 自定义...
|
|
40
|
+
- **决策结果**: [交互式澄清后的决策]
|
|
41
|
+
- **决策理由**: [为什么选这个方案]
|
|
42
|
+
- **澄清时间**: [YYYY-MM-DD]
|
|
43
|
+
- **澄清人**: [@name]
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
### 维度 2: 技术选型
|
|
48
|
+
|
|
49
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 决策结果 |
|
|
50
|
+
|---------|----------|----------|------|----------|
|
|
51
|
+
| D2-010 | [如:消息队列选型未定] | | | |
|
|
52
|
+
| D2-011 | [如:缓存方案未确定] | | | |
|
|
53
|
+
|
|
54
|
+
**D2-010 详细说明**:
|
|
55
|
+
- **问题类型**: 核心框架/库未确定
|
|
56
|
+
- **具体表现**:
|
|
57
|
+
- **影响范围**:
|
|
58
|
+
- **可选方案**:
|
|
59
|
+
- **决策结果**:
|
|
60
|
+
- **决策理由**:
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### 维度 3: 接口设计
|
|
65
|
+
|
|
66
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 决策结果 |
|
|
67
|
+
|---------|----------|----------|------|----------|
|
|
68
|
+
| D3-020 | [如:API 版本管理策略未定] | | | |
|
|
69
|
+
|
|
70
|
+
**D3-020 详细说明**:
|
|
71
|
+
- **问题类型**: API 契约未定 / 数据流不清晰 / 异步处理机制
|
|
72
|
+
- **具体表现**:
|
|
73
|
+
- **影响范围**:
|
|
74
|
+
- **可选方案**:
|
|
75
|
+
- **决策结果**:
|
|
76
|
+
- **决策理由**:
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### 维度 4: 数据与状态
|
|
81
|
+
|
|
82
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 决策结果 |
|
|
83
|
+
|---------|----------|----------|------|----------|
|
|
84
|
+
| D4-030 | [如:订单状态机未定义] | | | |
|
|
85
|
+
|
|
86
|
+
**D4-030 详细说明**:
|
|
87
|
+
- **问题类型**: 数据模型未定 / 状态机未定义 / 数据迁移方案
|
|
88
|
+
- **具体表现**:
|
|
89
|
+
- **影响范围**:
|
|
90
|
+
- **可选方案**:
|
|
91
|
+
- **决策结果**:
|
|
92
|
+
- **决策理由**:
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### 维度 5: 安全与合规
|
|
97
|
+
|
|
98
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 决策结果 |
|
|
99
|
+
|---------|----------|----------|------|----------|
|
|
100
|
+
| D5-040 | [如:权限模型未设计] | | | |
|
|
101
|
+
|
|
102
|
+
**D5-040 详细说明**:
|
|
103
|
+
- **问题类型**: 认证授权未设计 / 数据安全 / 审计与日志
|
|
104
|
+
- **具体表现**:
|
|
105
|
+
- **影响范围**:
|
|
106
|
+
- **可选方案**:
|
|
107
|
+
- **决策结果**:
|
|
108
|
+
- **决策理由**:
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### 维度 6: 性能与可靠性
|
|
113
|
+
|
|
114
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 决策结果 |
|
|
115
|
+
|---------|----------|----------|------|----------|
|
|
116
|
+
| D6-050 | [如:缓存一致性策略未定] | | | |
|
|
117
|
+
|
|
118
|
+
**D6-050 详细说明**:
|
|
119
|
+
- **问题类型**: 性能瓶颈未识别 / 缓存策略未定 / 降级与熔断
|
|
120
|
+
- **具体表现**:
|
|
121
|
+
- **影响范围**:
|
|
122
|
+
- **可选方案**:
|
|
123
|
+
- **决策结果**:
|
|
124
|
+
- **决策理由**:
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
### 维度 7: 部署与运维
|
|
129
|
+
|
|
130
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 决策结果 |
|
|
131
|
+
|---------|----------|----------|------|----------|
|
|
132
|
+
| D7-060 | [如:灰度发布策略未定] | | | |
|
|
133
|
+
|
|
134
|
+
**D7-060 详细说明**:
|
|
135
|
+
- **问题类型**: 部署方案未定 / 监控告警 / 配置管理
|
|
136
|
+
- **具体表现**:
|
|
137
|
+
- **影响范围**:
|
|
138
|
+
- **可选方案**:
|
|
139
|
+
- **决策结果**:
|
|
140
|
+
- **决策理由**:
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 问题统计
|
|
145
|
+
|
|
146
|
+
| 设计维度 | 总计 | 已澄清 | 待澄清 | 已解决 |
|
|
147
|
+
|----------|------|--------|--------|--------|
|
|
148
|
+
| 架构决策 | 0 | 0 | 0 | 0 |
|
|
149
|
+
| 技术选型 | 0 | 0 | 0 | 0 |
|
|
150
|
+
| 接口设计 | 0 | 0 | 0 | 0 |
|
|
151
|
+
| 数据与状态 | 0 | 0 | 0 | 0 |
|
|
152
|
+
| 安全与合规 | 0 | 0 | 0 | 0 |
|
|
153
|
+
| 性能与可靠性 | 0 | 0 | 0 | 0 |
|
|
154
|
+
| 部署与运维 | 0 | 0 | 0 | 0 |
|
|
155
|
+
| **总计** | 0 | 0 | 0 | 0 |
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 澄清记录
|
|
160
|
+
|
|
161
|
+
### 交互式澄清会话 1: [YYYY-MM-DD]
|
|
162
|
+
- **参与者**: [@name1, @name2, ...]
|
|
163
|
+
- **澄清模式**: 命令行交互式
|
|
164
|
+
- **澄清的问题**: [问题 ID 列表]
|
|
165
|
+
- **设计决策**:
|
|
166
|
+
1. [决策 1]
|
|
167
|
+
2. [决策 2]
|
|
168
|
+
- **设计变更**: [design.md 的更新内容]
|
|
169
|
+
- **任务调整**: [tasks.md 的调整]
|
|
170
|
+
|
|
171
|
+
### 交互式澄清会话 2: [YYYY-MM-DD]
|
|
172
|
+
|
|
173
|
+
[同上结构...]
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 状态流转说明
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
analyzing: AI 正在分析设计方案,发现问题
|
|
181
|
+
→ 发现问题后自动转为 clarifying
|
|
182
|
+
|
|
183
|
+
clarifying: 问题已列出,等待交互式澄清
|
|
184
|
+
→ 使用命令行界面一问一答澄清
|
|
185
|
+
→ 每题回答后立即同步到本文档
|
|
186
|
+
→ 支持 'q' 退出,下次自动恢复
|
|
187
|
+
→ 支持 's' 跳过 Low 优先级问题
|
|
188
|
+
|
|
189
|
+
clarified: 所有 High 和 Medium 问题已澄清
|
|
190
|
+
→ 可以创建/更新 tasks
|
|
191
|
+
→ 根据澄清更新 design.md
|
|
192
|
+
→ 状态可转为 resolved
|
|
193
|
+
|
|
194
|
+
resolved: 设计已根据澄清更新,问题已解决
|
|
195
|
+
→ 可以创建/更新 tasks
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**当前状态**: `[current-status]`
|
|
199
|
+
|
|
200
|
+
**状态变更历史**:
|
|
201
|
+
- [YYYY-MM-DD]: `analyzing` → `clarifying` (AI 完成问题分析)
|
|
202
|
+
- [YYYY-MM-DD]: `clarifying` → `clarified` (完成澄清会话 1)
|
|
203
|
+
- [YYYY-MM-DD]: `clarified` → `resolved` (design.md 已更新)
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 关联文档
|
|
208
|
+
|
|
209
|
+
- **技术方案**: `design.md`
|
|
210
|
+
- **实施任务**: `tasks.md`
|
|
211
|
+
- **需求问题清单**: `spec/requirement-issues.md`
|
|
212
|
+
- **分类学参考**: `openspec/templates/design-issue-taxonomy.md`
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 备注
|
|
217
|
+
|
|
218
|
+
<!-- 任何补充说明 -->
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# 需求问题分类学
|
|
2
|
+
|
|
3
|
+
## 如何使用
|
|
4
|
+
|
|
5
|
+
AI 在分析需求时,应按以下分类维度逐一检查,确保不遗漏关键问题。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. 功能完整性问题 (Functional Completeness)
|
|
10
|
+
|
|
11
|
+
### 1.1 功能边界模糊
|
|
12
|
+
- **症状**: "支持用户管理" — 具体包括哪些操作?
|
|
13
|
+
- **检查点**:
|
|
14
|
+
- 功能的包含范围是否明确?
|
|
15
|
+
- 功能的排除范围是否明确?
|
|
16
|
+
- 与相邻功能的边界是否清晰?
|
|
17
|
+
|
|
18
|
+
### 1.2 功能流程缺失
|
|
19
|
+
- **症状**: 只描述了结果,没描述过程
|
|
20
|
+
- **检查点**:
|
|
21
|
+
- 用户如何触发这个功能?
|
|
22
|
+
- 功能的完整流程是什么?
|
|
23
|
+
- 异常情况如何处理?
|
|
24
|
+
|
|
25
|
+
### 1.3 功能依赖未说明
|
|
26
|
+
- **症状**: 假设其他功能已存在
|
|
27
|
+
- **检查点**:
|
|
28
|
+
- 该功能依赖哪些前置功能?
|
|
29
|
+
- 依赖的功能是否已实现?
|
|
30
|
+
- 依赖的接口是否已定义?
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 2. 数据相关问题 (Data Concerns)
|
|
35
|
+
|
|
36
|
+
### 2.1 数据定义模糊
|
|
37
|
+
- **症状**: "用户资料" — 包含哪些字段?
|
|
38
|
+
- **检查点**:
|
|
39
|
+
- 核心数据实体有哪些?
|
|
40
|
+
- 每个实体的字段和类型是什么?
|
|
41
|
+
- 字段的约束条件(必填、唯一、格式)?
|
|
42
|
+
|
|
43
|
+
### 2.2 数据量级未明确
|
|
44
|
+
- **症状**: 没有考虑数据规模
|
|
45
|
+
- **检查点**:
|
|
46
|
+
- 预计的数据量级?(条数/日增长)
|
|
47
|
+
- 是否有大数据量特殊处理需求?
|
|
48
|
+
- 数据保留策略?
|
|
49
|
+
|
|
50
|
+
### 2.3 数据一致性问题
|
|
51
|
+
- **症状**: 多系统数据同步场景
|
|
52
|
+
- **检查点**:
|
|
53
|
+
- 数据是否需要跨系统一致?
|
|
54
|
+
- 一致性要求(强一致/最终一致)?
|
|
55
|
+
- 冲突解决策略?
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 3. 用户体验问题 (User Experience)
|
|
60
|
+
|
|
61
|
+
### 3.1 用户场景缺失
|
|
62
|
+
- **症状**: 没有具体的使用场景
|
|
63
|
+
- **检查点**:
|
|
64
|
+
- 目标用户是谁?
|
|
65
|
+
- 用户在什么场景下使用?
|
|
66
|
+
- 用户的核心痛点是什么?
|
|
67
|
+
|
|
68
|
+
### 3.2 交互方式未确定
|
|
69
|
+
- **症状**: 界面交互细节缺失
|
|
70
|
+
- **检查点**:
|
|
71
|
+
- 界面布局有要求吗?
|
|
72
|
+
- 关键操作的交互流程?
|
|
73
|
+
- 错误提示方式?
|
|
74
|
+
|
|
75
|
+
### 3.3 性能体验要求
|
|
76
|
+
- **症状**: 没有性能指标
|
|
77
|
+
- **检查点**:
|
|
78
|
+
- 响应时间要求?
|
|
79
|
+
- 并发用户数?
|
|
80
|
+
- 可用性要求(SLA)?
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 4. 边界与异常 (Edge Cases & Exceptions)
|
|
85
|
+
|
|
86
|
+
### 4.1 边界条件未定义
|
|
87
|
+
- **症状**: 只考虑正常流程
|
|
88
|
+
- **检查点**:
|
|
89
|
+
- 输入的边界值(最大/最小/空值)?
|
|
90
|
+
- 数量的边界(批量操作的最大值)?
|
|
91
|
+
- 时间的边界(超时、有效期)?
|
|
92
|
+
|
|
93
|
+
### 4.2 异常场景缺失
|
|
94
|
+
- **症状**: "用户会正确操作"
|
|
95
|
+
- **检查点**:
|
|
96
|
+
- 网络异常如何处理?
|
|
97
|
+
- 第三方服务失败如何处理?
|
|
98
|
+
- 数据校验失败如何反馈?
|
|
99
|
+
|
|
100
|
+
### 4.3 权限与安全
|
|
101
|
+
- **症状**: 没有权限控制描述
|
|
102
|
+
- **检查点**:
|
|
103
|
+
- 哪些角色可以使用?
|
|
104
|
+
- 数据权限如何控制?
|
|
105
|
+
- 敏感操作是否需要审计?
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 5. 集成与依赖 (Integration & Dependencies)
|
|
110
|
+
|
|
111
|
+
### 5.1 外部系统集成
|
|
112
|
+
- **症状**: 需要对接但未说明细节
|
|
113
|
+
- **检查点**:
|
|
114
|
+
- 需要对接哪些外部系统?
|
|
115
|
+
- 对接的接口是否已确定?
|
|
116
|
+
- 外部系统的稳定性/可用性?
|
|
117
|
+
|
|
118
|
+
### 5.2 内部模块依赖
|
|
119
|
+
- **症状**: 与现有功能的关系不明
|
|
120
|
+
- **检查点**:
|
|
121
|
+
- 需要修改哪些现有模块?
|
|
122
|
+
- 是否影响现有功能?
|
|
123
|
+
- 是否需要数据迁移?
|
|
124
|
+
|
|
125
|
+
### 5.3 环境依赖
|
|
126
|
+
- **症状**: 部署环境未明确
|
|
127
|
+
- **检查点**:
|
|
128
|
+
- 目标部署环境?(开发/测试/生产)
|
|
129
|
+
- 环境配置要求?
|
|
130
|
+
- 基础设施依赖?
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 6. 优先级与范围 (Priority & Scope)
|
|
135
|
+
|
|
136
|
+
### 6.1 必需 vs 可选
|
|
137
|
+
- **症状**: 所有功能都"必须有"
|
|
138
|
+
- **检查点**:
|
|
139
|
+
- MVP 必须包含哪些功能?
|
|
140
|
+
- 哪些是后续迭代功能?
|
|
141
|
+
- 功能优先级排序?
|
|
142
|
+
|
|
143
|
+
### 6.2 时间约束
|
|
144
|
+
- **症状**: 没有时间线
|
|
145
|
+
- **检查点**:
|
|
146
|
+
- 期望的交付时间?
|
|
147
|
+
- 是否有硬性 deadline?
|
|
148
|
+
- 阶段性里程碑?
|
|
149
|
+
|
|
150
|
+
### 6.3 资源约束
|
|
151
|
+
- **症状**: 资源无限假设
|
|
152
|
+
- **检查点**:
|
|
153
|
+
- 预算限制?
|
|
154
|
+
- 人力约束?
|
|
155
|
+
- 技术栈限制?
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# 需求问题清单
|
|
2
|
+
|
|
3
|
+
## 变更信息
|
|
4
|
+
- **变更名称**: [change-name]
|
|
5
|
+
- **当前阶段**: `discovering` | `clarifying` | `clarified` | `superseded`
|
|
6
|
+
- **最后更新**: [YYYY-MM-DD]
|
|
7
|
+
- **下次检查**: [YYYY-MM-DD]
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 功能点问题矩阵
|
|
12
|
+
|
|
13
|
+
<!--
|
|
14
|
+
说明:
|
|
15
|
+
1. 按 OpenSpec Capabilities 结构组织
|
|
16
|
+
2. 每个功能点下按问题分类维度列出具体问题
|
|
17
|
+
3. 问题 ID 格式:R[功能点序号]-[分类序号][序号] 例如 R1-001
|
|
18
|
+
-->
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### 功能点 1: [功能点名称]
|
|
23
|
+
|
|
24
|
+
#### 基本信息
|
|
25
|
+
- **功能点 ID**: [kebab-case-id]
|
|
26
|
+
- **对应 Spec**: `specs/[功能点ID]/spec.md`
|
|
27
|
+
- **优先级**: P0 / P1 / P2
|
|
28
|
+
- **负责人**: [@name]
|
|
29
|
+
|
|
30
|
+
#### 问题列表
|
|
31
|
+
|
|
32
|
+
##### 1. 功能完整性问题
|
|
33
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 澄清结果 |
|
|
34
|
+
|---------|----------|----------|------|----------|
|
|
35
|
+
| R1-001 | [一句话描述问题] | 🔴 High / 🟡 Medium / 🟢 Low | `open` / `clarifying` / `clarified` | [澄清后的结论] |
|
|
36
|
+
| R1-002 | | | | |
|
|
37
|
+
|
|
38
|
+
**R1-001 详细说明**:
|
|
39
|
+
- **问题类型**: 功能边界模糊 / 功能流程缺失 / 功能依赖未说明
|
|
40
|
+
- **具体表现**: [详细描述问题现象,引用需求原文]
|
|
41
|
+
- **影响范围**: [如果不澄清会导致什么后果]
|
|
42
|
+
- **建议选项**:
|
|
43
|
+
- A) [选项A描述]
|
|
44
|
+
- B) [选项B描述]
|
|
45
|
+
- C) [选项C描述]
|
|
46
|
+
- D) 自定义...
|
|
47
|
+
- **澄清后**: [交互式澄清后自动填写]
|
|
48
|
+
- **澄清时间**: [YYYY-MM-DD]
|
|
49
|
+
- **澄清人**: [@name]
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
##### 2. 数据相关问题
|
|
54
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 澄清结果 |
|
|
55
|
+
|---------|----------|----------|------|----------|
|
|
56
|
+
| R1-010 | | | | |
|
|
57
|
+
| R1-011 | | | | |
|
|
58
|
+
|
|
59
|
+
**R1-010 详细说明**:
|
|
60
|
+
- **问题类型**: 数据定义模糊 / 数据量级未明确 / 数据一致性问题
|
|
61
|
+
- **具体表现**:
|
|
62
|
+
- **影响范围**:
|
|
63
|
+
- **建议选项**:
|
|
64
|
+
- **澄清后**:
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
##### 3. 用户体验问题
|
|
69
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 澄清结果 |
|
|
70
|
+
|---------|----------|----------|------|----------|
|
|
71
|
+
| R1-020 | | | | |
|
|
72
|
+
| R1-021 | | | | |
|
|
73
|
+
|
|
74
|
+
**R1-020 详细说明**:
|
|
75
|
+
- **问题类型**: 用户场景缺失 / 交互方式未确定 / 性能体验要求
|
|
76
|
+
- **具体表现**:
|
|
77
|
+
- **影响范围**:
|
|
78
|
+
- **建议选项**:
|
|
79
|
+
- **澄清后**:
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
##### 4. 边界与异常
|
|
84
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 澄清结果 |
|
|
85
|
+
|---------|----------|----------|------|----------|
|
|
86
|
+
| R1-030 | | | | |
|
|
87
|
+
| R1-031 | | | | |
|
|
88
|
+
|
|
89
|
+
**R1-030 详细说明**:
|
|
90
|
+
- **问题类型**: 边界条件未定义 / 异常场景缺失 / 权限与安全
|
|
91
|
+
- **具体表现**:
|
|
92
|
+
- **影响范围**:
|
|
93
|
+
- **建议选项**:
|
|
94
|
+
- **澄清后**:
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
##### 5. 集成与依赖
|
|
99
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 澄清结果 |
|
|
100
|
+
|---------|----------|----------|------|----------|
|
|
101
|
+
| R1-040 | | | | |
|
|
102
|
+
| R1-041 | | | | |
|
|
103
|
+
|
|
104
|
+
**R1-040 详细说明**:
|
|
105
|
+
- **问题类型**: 外部系统集成 / 内部模块依赖 / 环境依赖
|
|
106
|
+
- **具体表现**:
|
|
107
|
+
- **影响范围**:
|
|
108
|
+
- **建议选项**:
|
|
109
|
+
- **澄清后**:
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
##### 6. 优先级与范围
|
|
114
|
+
| 问题 ID | 问题描述 | 严重程度 | 状态 | 澄清结果 |
|
|
115
|
+
|---------|----------|----------|------|----------|
|
|
116
|
+
| R1-050 | | | | |
|
|
117
|
+
| R1-051 | | | | |
|
|
118
|
+
|
|
119
|
+
**R1-050 详细说明**:
|
|
120
|
+
- **问题类型**: 必需 vs 可选 / 时间约束 / 资源约束
|
|
121
|
+
- **具体表现**:
|
|
122
|
+
- **影响范围**:
|
|
123
|
+
- **建议选项**:
|
|
124
|
+
- **澄清后**:
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
### 功能点 2: [功能点名称]
|
|
129
|
+
|
|
130
|
+
#### 基本信息
|
|
131
|
+
- **功能点 ID**: [kebab-case-id]
|
|
132
|
+
- **对应 Spec**: `specs/[功能点ID]/spec.md`
|
|
133
|
+
- **优先级**: P0 / P1 / P2
|
|
134
|
+
- **负责人**: [@name]
|
|
135
|
+
|
|
136
|
+
#### 问题列表
|
|
137
|
+
|
|
138
|
+
[同上结构...]
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 问题统计
|
|
143
|
+
|
|
144
|
+
| 分类 | 总计 | 已澄清 | 待澄清 | 已解决 |
|
|
145
|
+
|------|------|--------|--------|--------|
|
|
146
|
+
| 功能完整性 | 0 | 0 | 0 | 0 |
|
|
147
|
+
| 数据相关 | 0 | 0 | 0 | 0 |
|
|
148
|
+
| 用户体验 | 0 | 0 | 0 | 0 |
|
|
149
|
+
| 边界与异常 | 0 | 0 | 0 | 0 |
|
|
150
|
+
| 集成与依赖 | 0 | 0 | 0 | 0 |
|
|
151
|
+
| 优先级与范围 | 0 | 0 | 0 | 0 |
|
|
152
|
+
| **总计** | 0 | 0 | 0 | 0 |
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 澄清记录
|
|
157
|
+
|
|
158
|
+
### 交互式澄清会话 1: [YYYY-MM-DD]
|
|
159
|
+
- **参与者**: [@name1, @name2, ...]
|
|
160
|
+
- **澄清模式**: 命令行交互式
|
|
161
|
+
- **澄清的问题**: [问题 ID 列表]
|
|
162
|
+
- **达成的决策**:
|
|
163
|
+
1. [决策 1]
|
|
164
|
+
2. [决策 2]
|
|
165
|
+
- **更新后的状态**: `clarifying` → `clarified`
|
|
166
|
+
- **下一步行动**: [如果有]
|
|
167
|
+
|
|
168
|
+
### 交互式澄清会话 2: [YYYY-MM-DD]
|
|
169
|
+
|
|
170
|
+
[同上结构...]
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 状态流转说明
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
discovering: AI 正在分析需求,发现问题
|
|
178
|
+
→ 发现问题后自动转为 clarifying
|
|
179
|
+
|
|
180
|
+
clarifying: 问题已列出,等待交互式澄清
|
|
181
|
+
→ 使用命令行界面一问一答澄清
|
|
182
|
+
→ 每题回答后立即同步到本文档
|
|
183
|
+
→ 支持 'q' 退出,下次自动恢复
|
|
184
|
+
→ 支持 's' 跳过 Low 优先级问题
|
|
185
|
+
|
|
186
|
+
clarified: 所有 High 和 Medium 问题已澄清
|
|
187
|
+
→ 可以创建/更新 proposal
|
|
188
|
+
→ AI 检查是否发现新问题(可能回到 discovering)
|
|
189
|
+
|
|
190
|
+
superseded: 需求已变更,本文档已过时
|
|
191
|
+
→ 创建新的问题清单
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**当前状态**: `[current-status]`
|
|
195
|
+
|
|
196
|
+
**状态变更历史**:
|
|
197
|
+
- [YYYY-MM-DD]: `discovering` → `clarifying` (AI 完成问题发现)
|
|
198
|
+
- [YYYY-MM-DD]: `clarifying` → `clarified` (完成澄清会话 1)
|
|
199
|
+
- ...
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 关联文档
|
|
204
|
+
|
|
205
|
+
- **提案文档**: `proposal.md`
|
|
206
|
+
- **功能规格**: `specs/*/spec.md`
|
|
207
|
+
- **设计问题清单**: `spec/design-issues.md`
|
|
208
|
+
- **分类学参考**: `openspec/templates/requirement-issue-taxonomy.md`
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 备注
|
|
213
|
+
|
|
214
|
+
<!-- 任何补充说明 -->
|
mspec/utils/__init__.py
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""mspec 工具模块"""
|
|
2
|
+
|
|
3
|
+
from mspec.utils.console import (
|
|
4
|
+
print_banner,
|
|
5
|
+
print_error,
|
|
6
|
+
print_info,
|
|
7
|
+
print_success,
|
|
8
|
+
print_warning,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"print_banner",
|
|
13
|
+
"print_success",
|
|
14
|
+
"print_error",
|
|
15
|
+
"print_warning",
|
|
16
|
+
"print_info",
|
|
17
|
+
]
|
mspec/utils/console.py
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""终端输出工具"""
|
|
3
|
+
|
|
4
|
+
from rich.console import Console
|
|
5
|
+
from rich.text import Text
|
|
6
|
+
|
|
7
|
+
console = Console()
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def print_banner():
|
|
11
|
+
"""打印欢迎横幅"""
|
|
12
|
+
banner = Text()
|
|
13
|
+
banner.append("╔══════════════════════════════════════╗\n", style="blue")
|
|
14
|
+
banner.append("║ ", style="blue")
|
|
15
|
+
banner.append("mspec", style="bold cyan")
|
|
16
|
+
banner.append(" - 规范驱动开发 ║\n", style="blue")
|
|
17
|
+
banner.append("╚══════════════════════════════════════╝", style="blue")
|
|
18
|
+
console.print(banner)
|
|
19
|
+
console.print()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def print_success(message: str):
|
|
23
|
+
"""打印成功消息"""
|
|
24
|
+
console.print(f"[bold green]✓[/bold green] {message}")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def print_error(message: str):
|
|
28
|
+
"""打印错误消息"""
|
|
29
|
+
console.print(f"[bold red]✗[/bold red] {message}")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def print_warning(message: str):
|
|
33
|
+
"""打印警告消息"""
|
|
34
|
+
console.print(f"[bold yellow]⚠[/bold yellow] {message}")
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def print_info(message: str):
|
|
38
|
+
"""打印信息消息"""
|
|
39
|
+
console.print(f"[dim]{message}[/dim]")
|