sdd-skills 1.1.1 → 1.1.2
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/skills/sae/SKILL.md +139 -85
package/package.json
CHANGED
package/skills/sae/SKILL.md
CHANGED
|
@@ -30,104 +30,156 @@ description: 软件架构工程师,负责需求分析、架构设计和技术
|
|
|
30
30
|
- 当存在多个可行方案时,提供对比分析
|
|
31
31
|
- 考虑团队技术栈熟悉度
|
|
32
32
|
|
|
33
|
-
### 4.
|
|
33
|
+
### 4. 编写 Spec 文档
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
每个功能需求应拆分为小的 Spec 文档,保存在 `openspec/changes/[change-id]/specs/[capability]/spec.md`。
|
|
36
|
+
|
|
37
|
+
**重要原则**:
|
|
38
|
+
- 每个 Spec 应聚焦一个小需求,保持简洁
|
|
39
|
+
- DESIGN 部分不要过于复杂,能让前后端及 AI 正确理解意图即可
|
|
40
|
+
- 避免歧义,使用明确的描述和示例
|
|
41
|
+
|
|
42
|
+
#### Spec 文档格式
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
# [Capability Name]
|
|
46
|
+
|
|
47
|
+
## DESCRIPTION
|
|
48
|
+
|
|
49
|
+
### 需求背景
|
|
50
|
+
[1-2 句话说明为什么需要这个功能]
|
|
51
|
+
|
|
52
|
+
### 目标
|
|
53
|
+
- [具体目标 1]
|
|
54
|
+
- [具体目标 2]
|
|
55
|
+
|
|
56
|
+
### 验收标准
|
|
57
|
+
- [ ] 标准 1:具体可验证的条件
|
|
58
|
+
- [ ] 标准 2:具体可验证的条件
|
|
59
|
+
|
|
60
|
+
## DESIGN
|
|
61
|
+
|
|
62
|
+
### 前后端分工
|
|
63
|
+
|
|
64
|
+
**后端职责**:
|
|
65
|
+
- [具体职责 1]
|
|
66
|
+
- [具体职责 2]
|
|
67
|
+
|
|
68
|
+
**前端职责**:
|
|
69
|
+
- [具体职责 1]
|
|
70
|
+
- [具体职责 2]
|
|
71
|
+
|
|
72
|
+
### 接口设计
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
[HTTP Method] /api/v1/[resource]
|
|
76
|
+
Request:
|
|
77
|
+
{
|
|
78
|
+
"field1": "类型和说明",
|
|
79
|
+
"field2": "类型和说明"
|
|
80
|
+
}
|
|
81
|
+
Response:
|
|
82
|
+
{
|
|
83
|
+
"field1": "类型和说明"
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 数据模型(如有)
|
|
88
|
+
|
|
89
|
+
| 字段名 | 类型 | 说明 |
|
|
90
|
+
|--------|------|------|
|
|
91
|
+
| field1 | string | 说明 |
|
|
92
|
+
|
|
93
|
+
### 核心逻辑
|
|
94
|
+
|
|
95
|
+
[用简洁的步骤描述实现逻辑,避免歧义]
|
|
96
|
+
|
|
97
|
+
1. 步骤 1:具体操作
|
|
98
|
+
2. 步骤 2:具体操作
|
|
99
|
+
3. 步骤 3:具体操作
|
|
100
|
+
|
|
101
|
+
### 边界情况
|
|
102
|
+
|
|
103
|
+
- 情况 1:如何处理
|
|
104
|
+
- 情况 2:如何处理
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
#### 示例:用户登录 Spec
|
|
36
108
|
|
|
37
109
|
```markdown
|
|
38
|
-
#
|
|
110
|
+
# User Login
|
|
111
|
+
|
|
112
|
+
## DESCRIPTION
|
|
113
|
+
|
|
114
|
+
### 需求背景
|
|
115
|
+
用户需要通过账号密码登录系统以访问受保护的资源。
|
|
39
116
|
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
117
|
+
### 目标
|
|
118
|
+
- 支持邮箱+密码登录
|
|
119
|
+
- 返回 JWT Token 用于后续认证
|
|
120
|
+
- 登录失败时返回明确错误信息
|
|
44
121
|
|
|
45
|
-
|
|
122
|
+
### 验收标准
|
|
123
|
+
- [ ] 正确的邮箱和密码可以成功登录并获取 Token
|
|
124
|
+
- [ ] 错误的密码返回 401 和提示信息
|
|
125
|
+
- [ ] 不存在的邮箱返回 401(不透露邮箱是否存在)
|
|
126
|
+
- [ ] Token 有效期为 24 小时
|
|
46
127
|
|
|
47
|
-
|
|
48
|
-
- [ ] 功能点 1:具体描述
|
|
49
|
-
- [ ] 功能点 2:具体描述
|
|
50
|
-
- [ ] 功能点 3:具体描述
|
|
128
|
+
## DESIGN
|
|
51
129
|
|
|
52
|
-
###
|
|
53
|
-
- 作为 [角色],我想要 [功能],以便 [价值]
|
|
54
|
-
- 作为 [角色],我想要 [功能],以便 [价值]
|
|
130
|
+
### 前后端分工
|
|
55
131
|
|
|
56
|
-
|
|
132
|
+
**后端职责**:
|
|
133
|
+
- 实现 `/api/v1/auth/login` 接口
|
|
134
|
+
- 验证用户凭证
|
|
135
|
+
- 生成 JWT Token
|
|
57
136
|
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- **模块划分**: 列出主要模块及其职责
|
|
137
|
+
**前端职责**:
|
|
138
|
+
- 登录表单页面
|
|
139
|
+
- 调用登录接口
|
|
140
|
+
- 存储 Token 到 localStorage
|
|
63
141
|
|
|
64
|
-
###
|
|
65
|
-
| 技术点 | 选择方案 | 选择理由 |
|
|
66
|
-
|--------|----------|----------|
|
|
67
|
-
| 后端框架 | Gin / Echo | 高性能、团队熟悉 |
|
|
68
|
-
| 前端框架 | Vue 3 | Composition API、生态成熟 |
|
|
69
|
-
| 数据库 | PostgreSQL / MySQL | 根据数据特点选择 |
|
|
70
|
-
| 缓存 | Redis | 高性能键值存储 |
|
|
142
|
+
### 接口设计
|
|
71
143
|
|
|
72
|
-
### 3.3 接口设计(前后端契约)
|
|
73
144
|
```
|
|
74
|
-
POST /api/v1/
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
145
|
+
POST /api/v1/auth/login
|
|
146
|
+
Request:
|
|
147
|
+
{
|
|
148
|
+
"email": "string, 必填, 邮箱格式",
|
|
149
|
+
"password": "string, 必填, 6-32位"
|
|
150
|
+
}
|
|
151
|
+
Response (200):
|
|
152
|
+
{
|
|
153
|
+
"token": "string, JWT Token",
|
|
154
|
+
"expires_at": "int64, Unix 时间戳"
|
|
155
|
+
}
|
|
156
|
+
Response (401):
|
|
157
|
+
{
|
|
158
|
+
"error": "string, 错误信息"
|
|
159
|
+
}
|
|
78
160
|
```
|
|
79
161
|
|
|
80
|
-
###
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
- **扩展性**: 预期用户规模和增长
|
|
94
|
-
|
|
95
|
-
## 5. 验收标准
|
|
96
|
-
- [ ] 标准 1:用户可以成功完成核心操作
|
|
97
|
-
- [ ] 标准 2:错误情况下有友好提示
|
|
98
|
-
- [ ] 标准 3:性能满足要求
|
|
99
|
-
- [ ] 标准 4:通过安全测试
|
|
100
|
-
|
|
101
|
-
## 6. 实施计划
|
|
102
|
-
|
|
103
|
-
### 6.1 关键文件
|
|
104
|
-
**后端需要修改/新建的文件:**
|
|
105
|
-
- `backend/api/[resource]_handler.go`
|
|
106
|
-
- `backend/service/[resource]_service.go`
|
|
107
|
-
- `backend/repository/[resource]_repository.go`
|
|
108
|
-
- `backend/model/[resource].go`
|
|
109
|
-
|
|
110
|
-
**前端需要修改/新建的文件:**
|
|
111
|
-
- `frontend/src/views/[Feature]View.vue`
|
|
112
|
-
- `frontend/src/components/[Feature]Component.vue`
|
|
113
|
-
- `frontend/src/stores/[resource]Store.ts`
|
|
114
|
-
- `frontend/src/api/[resource].ts`
|
|
115
|
-
|
|
116
|
-
### 6.2 技术风险
|
|
117
|
-
| 风险 | 影响 | 缓解措施 |
|
|
118
|
-
|------|------|----------|
|
|
119
|
-
| 风险 1 | 中/高 | 具体措施 |
|
|
120
|
-
|
|
121
|
-
## 7. 测试策略
|
|
122
|
-
- **单元测试**: 后端覆盖率 >= 90%,前端 >= 90%
|
|
123
|
-
- **集成测试**: API 接口测试
|
|
124
|
-
- **E2E 测试**: 关键用户流程
|
|
162
|
+
### 核心逻辑
|
|
163
|
+
|
|
164
|
+
1. 校验请求参数格式
|
|
165
|
+
2. 根据 email 查询用户
|
|
166
|
+
3. 比对密码哈希(bcrypt)
|
|
167
|
+
4. 生成 JWT Token(包含 user_id, 过期时间)
|
|
168
|
+
5. 返回 Token
|
|
169
|
+
|
|
170
|
+
### 边界情况
|
|
171
|
+
|
|
172
|
+
- 邮箱格式错误:返回 400,提示格式不正确
|
|
173
|
+
- 密码长度不符:返回 400,提示长度要求
|
|
174
|
+
- 账号被锁定:返回 403,提示联系管理员
|
|
125
175
|
```
|
|
126
176
|
|
|
127
177
|
## 输出工件
|
|
128
178
|
|
|
129
179
|
完成需求分析后,应生成:
|
|
130
|
-
-
|
|
180
|
+
- **Spec 文档**: `openspec/changes/[change-id]/specs/[capability]/spec.md`(包含 DESCRIPTION 和 DESIGN)
|
|
181
|
+
- **Proposal 文档**: `openspec/changes/[change-id]/proposal.md`(变更说明)
|
|
182
|
+
- **Tasks 文档**: `openspec/changes/[change-id]/tasks.md`(实施任务清单)
|
|
131
183
|
- **明确的待办事项**: 下一步交给 Backend Engineer 和 Frontend Engineer
|
|
132
184
|
|
|
133
185
|
## 决策原则
|
|
@@ -212,12 +264,14 @@ DELETE /api/v1/[resource]/{id}
|
|
|
212
264
|
|
|
213
265
|
明白了。我将设计一个基于 JWT 的认证系统...
|
|
214
266
|
|
|
215
|
-
|
|
267
|
+
已生成以下文件:
|
|
268
|
+
- Spec 文档: openspec/changes/add-user-login/specs/auth/spec.md
|
|
269
|
+
- Proposal: openspec/changes/add-user-login/proposal.md
|
|
270
|
+
- Tasks: openspec/changes/add-user-login/tasks.md
|
|
216
271
|
|
|
217
|
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
- 验收标准:10 个测试场景
|
|
272
|
+
Spec 概要:
|
|
273
|
+
- DESCRIPTION: 邮箱+密码登录,JWT 认证,24小时有效期
|
|
274
|
+
- DESIGN: 后端 Gin API,前端 Vue 登录表单,bcrypt 密码验证
|
|
221
275
|
|
|
222
|
-
下一步请 Backend Engineer 和 Frontend Engineer
|
|
276
|
+
下一步请 Backend Engineer 和 Frontend Engineer 分别实现各自部分。
|
|
223
277
|
```
|