@michaelxwb/code-flow 0.5.1
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/README.md +157 -0
- package/package.json +16 -0
- package/src/adapters/claude/CLAUDE.md +51 -0
- package/src/adapters/claude/commands/cf-init.md +262 -0
- package/src/adapters/claude/commands/cf-inject.md +55 -0
- package/src/adapters/claude/commands/cf-learn.md +291 -0
- package/src/adapters/claude/commands/cf-stats.md +86 -0
- package/src/adapters/claude/commands/cf-task/align.md +283 -0
- package/src/adapters/claude/commands/cf-task/archive.md +131 -0
- package/src/adapters/claude/commands/cf-task/block.md +30 -0
- package/src/adapters/claude/commands/cf-task/graph.md +73 -0
- package/src/adapters/claude/commands/cf-task/note.md +239 -0
- package/src/adapters/claude/commands/cf-task/plan.md +270 -0
- package/src/adapters/claude/commands/cf-task/prd.md +138 -0
- package/src/adapters/claude/commands/cf-task/start.md +173 -0
- package/src/adapters/claude/commands/cf-task/status.md +59 -0
- package/src/adapters/claude/commands/cf-validate.md +73 -0
- package/src/adapters/claude/settings.local.json +60 -0
- package/src/adapters/codex/AGENTS.md +51 -0
- package/src/adapters/codex/config.toml +3 -0
- package/src/adapters/codex/hooks.json +48 -0
- package/src/adapters/codex/skills/cf-init/SKILL.md +271 -0
- package/src/adapters/codex/skills/cf-inject/SKILL.md +56 -0
- package/src/adapters/codex/skills/cf-learn/SKILL.md +296 -0
- package/src/adapters/codex/skills/cf-stats/SKILL.md +87 -0
- package/src/adapters/codex/skills/cf-task-align/SKILL.md +284 -0
- package/src/adapters/codex/skills/cf-task-archive/SKILL.md +132 -0
- package/src/adapters/codex/skills/cf-task-block/SKILL.md +31 -0
- package/src/adapters/codex/skills/cf-task-graph/SKILL.md +74 -0
- package/src/adapters/codex/skills/cf-task-note/SKILL.md +236 -0
- package/src/adapters/codex/skills/cf-task-plan/SKILL.md +271 -0
- package/src/adapters/codex/skills/cf-task-prd/SKILL.md +139 -0
- package/src/adapters/codex/skills/cf-task-start/SKILL.md +174 -0
- package/src/adapters/codex/skills/cf-task-status/SKILL.md +60 -0
- package/src/adapters/codex/skills/cf-validate/SKILL.md +74 -0
- package/src/adapters/costrict/CLAUDE.md +51 -0
- package/src/adapters/costrict/commands/cf-init.md +262 -0
- package/src/adapters/costrict/commands/cf-inject.md +55 -0
- package/src/adapters/costrict/commands/cf-learn.md +291 -0
- package/src/adapters/costrict/commands/cf-stats.md +86 -0
- package/src/adapters/costrict/commands/cf-task/align.md +283 -0
- package/src/adapters/costrict/commands/cf-task/archive.md +131 -0
- package/src/adapters/costrict/commands/cf-task/block.md +30 -0
- package/src/adapters/costrict/commands/cf-task/graph.md +73 -0
- package/src/adapters/costrict/commands/cf-task/note.md +239 -0
- package/src/adapters/costrict/commands/cf-task/plan.md +270 -0
- package/src/adapters/costrict/commands/cf-task/prd.md +138 -0
- package/src/adapters/costrict/commands/cf-task/start.md +173 -0
- package/src/adapters/costrict/commands/cf-task/status.md +59 -0
- package/src/adapters/costrict/commands/cf-validate.md +73 -0
- package/src/adapters/costrict/settings.local.json +60 -0
- package/src/adapters/opencode/AGENTS.md +51 -0
- package/src/adapters/opencode/commands/cf-init.md +275 -0
- package/src/adapters/opencode/commands/cf-inject.md +59 -0
- package/src/adapters/opencode/commands/cf-learn.md +295 -0
- package/src/adapters/opencode/commands/cf-stats.md +90 -0
- package/src/adapters/opencode/commands/cf-task/align.md +287 -0
- package/src/adapters/opencode/commands/cf-task/archive.md +135 -0
- package/src/adapters/opencode/commands/cf-task/block.md +34 -0
- package/src/adapters/opencode/commands/cf-task/graph.md +77 -0
- package/src/adapters/opencode/commands/cf-task/note.md +243 -0
- package/src/adapters/opencode/commands/cf-task/plan.md +274 -0
- package/src/adapters/opencode/commands/cf-task/prd.md +142 -0
- package/src/adapters/opencode/commands/cf-task/start.md +177 -0
- package/src/adapters/opencode/commands/cf-task/status.md +63 -0
- package/src/adapters/opencode/commands/cf-validate.md +77 -0
- package/src/adapters/opencode/opencode.json +4 -0
- package/src/adapters/opencode/plugins/code-flow/index.js +132 -0
- package/src/adapters/opencode/plugins/code-flow/package.json +6 -0
- package/src/cli.js +810 -0
- package/src/core/code-flow/config.yml +159 -0
- package/src/core/code-flow/scripts/cf_checks.py +306 -0
- package/src/core/code-flow/scripts/cf_core.py +954 -0
- package/src/core/code-flow/scripts/cf_feedback.py +56 -0
- package/src/core/code-flow/scripts/cf_inject_hook.py +178 -0
- package/src/core/code-flow/scripts/cf_log.py +146 -0
- package/src/core/code-flow/scripts/cf_post_hook.py +196 -0
- package/src/core/code-flow/scripts/cf_scan.py +293 -0
- package/src/core/code-flow/scripts/cf_session_hook.py +42 -0
- package/src/core/code-flow/scripts/cf_stats.py +439 -0
- package/src/core/code-flow/scripts/cf_stop_hook.py +191 -0
- package/src/core/code-flow/scripts/cf_user_prompt_hook.py +402 -0
- package/src/core/code-flow/specs/backend/_map.md +56 -0
- package/src/core/code-flow/specs/backend/code-quality-performance.md +47 -0
- package/src/core/code-flow/specs/backend/database.md +39 -0
- package/src/core/code-flow/specs/backend/directory-structure.md +42 -0
- package/src/core/code-flow/specs/backend/logging.md +38 -0
- package/src/core/code-flow/specs/backend/platform-rules.md +43 -0
- package/src/core/code-flow/specs/frontend/_map.md +52 -0
- package/src/core/code-flow/specs/frontend/component-specs.md +56 -0
- package/src/core/code-flow/specs/frontend/directory-structure.md +41 -0
- package/src/core/code-flow/specs/frontend/quality-standards.md +46 -0
- package/src/core/code-flow/specs/shared/_map.md +57 -0
- package/src/core/code-flow/specs/shared/design/design-frontend.md +247 -0
- package/src/core/code-flow/specs/shared/design/design-full.md +494 -0
- package/src/core/code-flow/specs/shared/design/design-lite.md +293 -0
- package/src/core/code-flow/specs/shared/prd-template.md +187 -0
- package/src/core/code-flow/tasks/.gitkeep +0 -0
- package/src/core/code-flow/validation.yml +48 -0
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
# {模块名称} 模块需求与设计一体化文档
|
|
2
|
+
|
|
3
|
+
> **文档编号**: MOD-{模块代号}-{版本号}
|
|
4
|
+
> **文档版本**: v1.0
|
|
5
|
+
> **创建日期**: YYYY-MM-DD
|
|
6
|
+
> **文档状态**: 草稿 / 需求评审中 / 设计评审中 / 已批准
|
|
7
|
+
|
|
8
|
+
**评审边界说明**:
|
|
9
|
+
- **需求评审**: 第 2 章(需求分析)→ 通过后锁定为需求基线 v1.0
|
|
10
|
+
- **设计评审**: 第 3-4 章(技术设计 + 部署运维)→ 通过后锁定设计基线 v1.x
|
|
11
|
+
- **交接契约**: 2.5 验收条件 — 需求定义 What,设计实现 How
|
|
12
|
+
|
|
13
|
+
**ID 体系**: US(用户故事,来自 PRD)、FEAT(功能)、API(接口)、RULE(业务规则/系统约束)、TC(测试用例)、RISK(风险)、NFR(非功能指标)
|
|
14
|
+
场景编号:S-(正常)、E-(异常)、B-(边界,按需)
|
|
15
|
+
|
|
16
|
+
**填写约定**: 表内数值/阈值(如 `P95≤200ms`、`TPS≥1000`、`SLA≥99.9%`、`RPN≥200`)均为**示例**,必须替换为真实目标或删除;无实测依据填"待定",**禁止照抄示例值**。接口设计按入口类型(API/CLI/函数库)三选一。标注 `[按需]` 的章节不适用时整节删除,不要留空表。
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 目录
|
|
21
|
+
|
|
22
|
+
- [1. 文档控制](#1-文档控制)
|
|
23
|
+
- [1.1 责任人](#11-责任人)
|
|
24
|
+
- [1.2 修订历史](#12-修订历史)
|
|
25
|
+
- [2. 需求分析](#2-需求分析)
|
|
26
|
+
- [2.1 需求概述](#21-需求概述-必填)
|
|
27
|
+
- [2.2 痛点与价值](#22-痛点与价值-必填)
|
|
28
|
+
- [2.3 功能方案](#23-功能方案-必填)
|
|
29
|
+
- [2.4 范围与边界](#24-范围与边界-必填)
|
|
30
|
+
- [2.5 验收条件](#25-验收条件-必填)
|
|
31
|
+
- [3. 技术设计](#3-技术设计)
|
|
32
|
+
- [3.1 方案选型](#31-方案选型-必填)
|
|
33
|
+
- [3.2 架构设计](#32-架构设计-必填)
|
|
34
|
+
- [3.3 数据设计](#33-数据设计-必填)
|
|
35
|
+
- [3.4 接口设计](#34-接口设计-必填)
|
|
36
|
+
- [3.5 质量实现方案](#35-质量实现方案-必填)
|
|
37
|
+
- [4. 部署与运维](#4-部署与运维)
|
|
38
|
+
- [4.1 部署架构](#41-部署架构)
|
|
39
|
+
- [4.2 发布与回滚](#42-发布与回滚-按需)
|
|
40
|
+
- [4.3 监控告警](#43-监控告警-按需)
|
|
41
|
+
- [4.4 数据迁移](#44-数据迁移-按需)
|
|
42
|
+
- [5. 风险与依赖](#5-风险与依赖)
|
|
43
|
+
- [6. 需求追溯矩阵](#6-需求追溯矩阵)
|
|
44
|
+
- [附录:术语表](#附录术语表)
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 1. 文档控制
|
|
49
|
+
|
|
50
|
+
### 1.1 责任人
|
|
51
|
+
|
|
52
|
+
| 角色 | 姓名 | 职责范围 |
|
|
53
|
+
|------|------|---------|
|
|
54
|
+
| 产品经理 | | 需求定义、业务验收 |
|
|
55
|
+
| 开发负责人 | | 技术方案、代码实现 |
|
|
56
|
+
| 测试负责人 | | 测试策略、质量保证 |
|
|
57
|
+
| 架构师(如有) | | 架构审核、技术决策 |
|
|
58
|
+
|
|
59
|
+
### 1.2 修订历史
|
|
60
|
+
|
|
61
|
+
| 版本 | 日期 | 作者 | 变更描述 |
|
|
62
|
+
|------|------|------|---------|
|
|
63
|
+
| v0.1 | YYYY-MM-DD | | 初始草稿 |
|
|
64
|
+
| v1.0 | YYYY-MM-DD | | 需求评审通过 |
|
|
65
|
+
| v1.1 | YYYY-MM-DD | | 设计方案完成 |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 2. 需求分析
|
|
70
|
+
|
|
71
|
+
### 2.1 需求概述 [必填]
|
|
72
|
+
|
|
73
|
+
| 项目 | 内容 |
|
|
74
|
+
|------|------|
|
|
75
|
+
| **模块名称** | |
|
|
76
|
+
| **模块ID** | MOD-XXX |
|
|
77
|
+
| **所属系统/产品线** | |
|
|
78
|
+
| **需求类型** | 新功能 / 功能优化 / 性能优化 / Bug修复 / 技术重构 |
|
|
79
|
+
| **业务背景** | (简述需求来源、触发原因) |
|
|
80
|
+
| **核心目标** | (一句话说明要达成的目标) |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### 2.2 痛点与价值 [必填]
|
|
85
|
+
|
|
86
|
+
| 维度 | 内容 |
|
|
87
|
+
|------|------|
|
|
88
|
+
| **目标用户** | (用户画像、角色、规模) |
|
|
89
|
+
| **当前问题** | (用数据量化,如"P95=800ms,超出SLA 200ms") |
|
|
90
|
+
| **业务影响** | (如"用户流失率提升5%") |
|
|
91
|
+
| **预期价值** | (如"提升转化率X%") |
|
|
92
|
+
|
|
93
|
+
**用户故事** [按需]
|
|
94
|
+
|
|
95
|
+
| 编号 | 用户故事 | 优先级 |
|
|
96
|
+
|------|---------|--------|
|
|
97
|
+
| US-01 | 作为【角色】,我希望【操作】,以便【价值】 | P0 |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### 2.3 功能方案 [必填]
|
|
102
|
+
|
|
103
|
+
#### 2.3.1 功能清单
|
|
104
|
+
|
|
105
|
+
| 功能ID | 功能名称 | 功能描述 | 优先级 | 来源 |
|
|
106
|
+
|--------|---------|---------|--------|------|
|
|
107
|
+
| FEAT-01 | | | P0 | US-01 |
|
|
108
|
+
|
|
109
|
+
> 来源:引用 PRD 中的 US-XX(用户故事);无 PRD 时留空。
|
|
110
|
+
|
|
111
|
+
#### 2.3.2 字段约束 [按需]
|
|
112
|
+
|
|
113
|
+
**FEAT-01 字段约束**
|
|
114
|
+
|
|
115
|
+
| 字段名 | 字段类型 | 必填 | 约束 | 说明 |
|
|
116
|
+
|--------|---------|------|------|------|
|
|
117
|
+
| | | | | |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### 2.4 范围与边界 [必填]
|
|
122
|
+
|
|
123
|
+
| 类别 | 内容 |
|
|
124
|
+
|------|------|
|
|
125
|
+
| **范围(In Scope)** | 本次覆盖的功能场景和系统边界 |
|
|
126
|
+
| **非范围(Out of Scope)** | 明确**不做**的功能 |
|
|
127
|
+
| **前置假设** | 设计依赖的前提条件 |
|
|
128
|
+
| **有意妥协 / 技术债** | 本次明知接受的取舍、欠债及偿还计划(无则填"无") |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### 2.5 验收条件 [必填]
|
|
133
|
+
|
|
134
|
+
#### 2.5.1 业务规则与约束
|
|
135
|
+
|
|
136
|
+
| ID | 类型 | 描述 |
|
|
137
|
+
|----|------|------|
|
|
138
|
+
| RULE-01 | 业务规则 | |
|
|
139
|
+
| RULE-02 | 系统约束 | 单次批量导入上限≤10000条 |
|
|
140
|
+
|
|
141
|
+
#### 2.5.2 功能验收场景
|
|
142
|
+
|
|
143
|
+
> 场景写到可转自动化测试断言的粒度(明确前置、输入、可观测输出)。场景 ID(S-/E-/B-)即测试用例来源,§6 追溯矩阵的 TC-XXX 直接引用这些场景 ID。
|
|
144
|
+
|
|
145
|
+
**正常场景**
|
|
146
|
+
|
|
147
|
+
| 场景ID | 功能ID | 优先级 | 前置条件 | 操作步骤 | 预期结果 |
|
|
148
|
+
|--------|--------|--------|---------|---------|---------|
|
|
149
|
+
| S-01 | FEAT-01 | P0 | | | |
|
|
150
|
+
|
|
151
|
+
**异常场景**
|
|
152
|
+
|
|
153
|
+
| 场景ID | 功能ID | 触发条件 | 系统行为 | 用户感知 |
|
|
154
|
+
|--------|--------|---------|---------|---------|
|
|
155
|
+
| E-01 | FEAT-01 | | | |
|
|
156
|
+
|
|
157
|
+
**边界场景** [按需]
|
|
158
|
+
|
|
159
|
+
| 场景ID | 字段/条件 | 边界值 | 预期行为 |
|
|
160
|
+
|--------|----------|--------|---------|
|
|
161
|
+
| B-01 | | | |
|
|
162
|
+
|
|
163
|
+
#### 2.5.3 非功能指标 [按需]
|
|
164
|
+
|
|
165
|
+
**性能指标**
|
|
166
|
+
|
|
167
|
+
| 指标ID | 指标名称 | 目标值 | 测量方法 |
|
|
168
|
+
|--------|---------|-------|---------|
|
|
169
|
+
| NFR-PERF-01 | 接口响应时间(P95) | ≤200ms | APM监控 |
|
|
170
|
+
| NFR-PERF-02 | 系统吞吐量(TPS) | ≥1000 | 压测报告 |
|
|
171
|
+
|
|
172
|
+
**可靠性指标**
|
|
173
|
+
|
|
174
|
+
| 指标ID | 指标名称 | 目标值 |
|
|
175
|
+
|--------|---------|-------|
|
|
176
|
+
| NFR-REL-01 | 服务可用性(SLA) | ≥99.9% |
|
|
177
|
+
|
|
178
|
+
**安全性要求**
|
|
179
|
+
|
|
180
|
+
| 指标ID | 安全域 | 验收标准 |
|
|
181
|
+
|--------|--------|---------|
|
|
182
|
+
| NFR-SEC-01 | 认证鉴权 | 未授权用户无法访问 |
|
|
183
|
+
| NFR-SEC-02 | 数据加密 | 敏感字段不可明文 |
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 3. 技术设计
|
|
188
|
+
|
|
189
|
+
### 3.1 方案选型 [必填]
|
|
190
|
+
|
|
191
|
+
#### 备选方案对比 [多方案时必填]
|
|
192
|
+
|
|
193
|
+
| 对比维度 | 权重 | 方案A | 得分 | 方案B | 得分 |
|
|
194
|
+
|---------|------|-------|------|-------|------|
|
|
195
|
+
| 功能完备性 | 30% | | / | | / |
|
|
196
|
+
| 性能预期 | 25% | | / | | / |
|
|
197
|
+
| 实现复杂度 | 20% | | / | | / |
|
|
198
|
+
| 维护成本 | 15% | | / | | / |
|
|
199
|
+
| 风险评估 | 10% | | / | | / |
|
|
200
|
+
| **最终得分** | **100%** | | **X.X** | | **X.X** |
|
|
201
|
+
|
|
202
|
+
#### 关键决策记录
|
|
203
|
+
|
|
204
|
+
| 决策点 | 选择 | 被否决项 | 理由 | 可逆性 |
|
|
205
|
+
|--------|------|---------|------|--------|
|
|
206
|
+
| | | | | 易/难回退 |
|
|
207
|
+
|
|
208
|
+
> 打分表是辅助;真正要沉淀的是"为什么选它、放弃了什么、是否可逆"。
|
|
209
|
+
|
|
210
|
+
#### 技术栈
|
|
211
|
+
|
|
212
|
+
| 类别 | 选型 | 版本 | 选型理由 |
|
|
213
|
+
|------|------|------|---------|
|
|
214
|
+
| 语言 | | | |
|
|
215
|
+
| 框架 | | | |
|
|
216
|
+
| 数据库 | | | |
|
|
217
|
+
| 中间件 | | | |
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
### 3.2 架构设计 [必填]
|
|
222
|
+
|
|
223
|
+
> mermaid 图规范:节点标签含 `.` `/` `+` 等特殊字符时必须加双引号(`A["label"]`);点线边标签用 `-.->|text|` 标准语法;避免 `&` 链式声明与紧凑式 `-.text.->`(多数渲染器解析失败)。
|
|
224
|
+
|
|
225
|
+
```mermaid
|
|
226
|
+
graph TB
|
|
227
|
+
subgraph "功能层"
|
|
228
|
+
F1[功能1]
|
|
229
|
+
F2[功能2]
|
|
230
|
+
end
|
|
231
|
+
subgraph "数据层"
|
|
232
|
+
T1[(表)]
|
|
233
|
+
end
|
|
234
|
+
subgraph "外部依赖"
|
|
235
|
+
E1[外部服务]
|
|
236
|
+
end
|
|
237
|
+
F1 --> T1
|
|
238
|
+
F2 --> T1
|
|
239
|
+
F2 --> E1
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
#### 技术分层
|
|
243
|
+
|
|
244
|
+
```mermaid
|
|
245
|
+
graph LR
|
|
246
|
+
A[前端] --> B[网关] --> C[Handler] --> D[Service] --> E[Repository] --> F[(DB)]
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
#### 外部依赖清单 [按需]
|
|
250
|
+
|
|
251
|
+
| 外部系统 | 依赖类型 | 协议 | 超时 | 降级策略 |
|
|
252
|
+
|---------|---------|------|------|---------|
|
|
253
|
+
| | | | | |
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
### 3.3 数据设计 [必填]
|
|
258
|
+
|
|
259
|
+
**新增表: `t_xxx`**
|
|
260
|
+
|
|
261
|
+
| 字段名 | 类型 | 可空 | 默认值 | 索引 | 说明 |
|
|
262
|
+
|--------|------|------|--------|------|------|
|
|
263
|
+
| id | BIGINT | N | AUTO | PK | 主键 |
|
|
264
|
+
| created_at | DATETIME | N | CURRENT_TIMESTAMP | | 创建时间 |
|
|
265
|
+
|
|
266
|
+
**索引设计**
|
|
267
|
+
|
|
268
|
+
| 索引名 | 类型 | 字段 | 使用场景 |
|
|
269
|
+
|--------|------|------|---------|
|
|
270
|
+
| | | | |
|
|
271
|
+
|
|
272
|
+
**ER图** [≥2张表时必填]
|
|
273
|
+
|
|
274
|
+
```mermaid
|
|
275
|
+
erDiagram
|
|
276
|
+
A ||--o{ B : has
|
|
277
|
+
A { int id PK }
|
|
278
|
+
B { int id PK int a_id FK }
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**容量预估** [按需]
|
|
282
|
+
|
|
283
|
+
| 维度 | 预估值 |
|
|
284
|
+
|------|--------|
|
|
285
|
+
| 初始数据量 | |
|
|
286
|
+
| 3年预估 | |
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
### 3.4 接口设计 [必填]
|
|
291
|
+
|
|
292
|
+
> **按入口类型三选一**,删除不适用形态:HTTP API / CLI 命令 / 函数库接口。
|
|
293
|
+
|
|
294
|
+
#### 形态 B:CLI 命令
|
|
295
|
+
|
|
296
|
+
| 命令 | 参数 / Flag | 说明 | 退出码 |
|
|
297
|
+
|------|------------|------|--------|
|
|
298
|
+
| `cmd sub` | `--flag` | | 0=成功 / 非 0=失败 |
|
|
299
|
+
|
|
300
|
+
> stdout / stderr 分工、错误文案、`--json` 等机器可读输出约定。
|
|
301
|
+
|
|
302
|
+
#### 形态 C:函数 / 库接口
|
|
303
|
+
|
|
304
|
+
| 函数签名 | 入参 | 返回 | 错误处理 |
|
|
305
|
+
|---------|------|------|---------|
|
|
306
|
+
| `fn(a: T) -> R` | | | 异常类型 / 错误码 |
|
|
307
|
+
|
|
308
|
+
#### 形态 A:HTTP API
|
|
309
|
+
|
|
310
|
+
#### 接口清单
|
|
311
|
+
|
|
312
|
+
| 接口ID | 名称 | 方法 | 路径 | 详细 |
|
|
313
|
+
|--------|------|------|------|------|
|
|
314
|
+
| API-01 | 创建 | POST | `/api/v1/xxx` | [↓](#api-01) |
|
|
315
|
+
| API-02 | 查询 | GET | `/api/v1/xxx/{id}` | [↓](#api-02) |
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
#### API-01: {接口名称}
|
|
320
|
+
|
|
321
|
+
**请求**
|
|
322
|
+
|
|
323
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
324
|
+
|------|------|------|------|
|
|
325
|
+
| | | | |
|
|
326
|
+
|
|
327
|
+
**请求示例**
|
|
328
|
+
|
|
329
|
+
```json
|
|
330
|
+
{}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**响应**
|
|
334
|
+
|
|
335
|
+
| 参数 | 类型 | 说明 |
|
|
336
|
+
|------|------|------|
|
|
337
|
+
| code | int | 0=成功 |
|
|
338
|
+
| data | object | 响应数据 |
|
|
339
|
+
|
|
340
|
+
**响应示例**
|
|
341
|
+
|
|
342
|
+
```json
|
|
343
|
+
{
|
|
344
|
+
"code": 0,
|
|
345
|
+
"message": "success",
|
|
346
|
+
"data": {}
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
**错误码**
|
|
351
|
+
|
|
352
|
+
| 错误码 | 信息 | 场景 | HTTP状态码 |
|
|
353
|
+
|--------|------|------|----------|
|
|
354
|
+
| 40001 | 参数错误 | 校验失败 | 400 |
|
|
355
|
+
| 40901 | 资源冲突 | 已存在 | 409 |
|
|
356
|
+
|
|
357
|
+
**处理逻辑**
|
|
358
|
+
|
|
359
|
+
```mermaid
|
|
360
|
+
flowchart TD
|
|
361
|
+
A[接收请求] --> B{参数校验}
|
|
362
|
+
B -->|失败| C[返回错误]
|
|
363
|
+
B -->|通过| D[业务处理]
|
|
364
|
+
D --> E[返回成功]
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
#### API-02: {接口名称}
|
|
370
|
+
|
|
371
|
+
> 参考 API-01 结构,以此类推。
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
### 3.5 质量实现方案 [必填]
|
|
376
|
+
|
|
377
|
+
#### 性能设计 [按需]
|
|
378
|
+
|
|
379
|
+
> 方案按最优性能设计:先定位热点路径,再给目标与实现,并说明相比朴素实现为何更优。
|
|
380
|
+
|
|
381
|
+
| 指标ID | 热点路径 | 目标值 | 实现方案(含被放弃的较慢方案) |
|
|
382
|
+
|--------|---------|-------|------------------------------|
|
|
383
|
+
| NFR-PERF-01 | | ≤200ms | 缓存+索引优化 |
|
|
384
|
+
|
|
385
|
+
#### 可靠性设计 [按需]
|
|
386
|
+
|
|
387
|
+
**风险 / 失效应对**(默认轻量表)
|
|
388
|
+
|
|
389
|
+
| 风险ID | 失效模式 | 影响 | 应对措施 |
|
|
390
|
+
|--------|---------|------|---------|
|
|
391
|
+
| RISK-01 | | | |
|
|
392
|
+
|
|
393
|
+
> 仅安全关键 / 高并发 / 强一致系统才升级为 FMEA:追加 S/O/D(1-10)与 RPN=S×O×D 三列,RPN≥200 上线前必须解决。普通功能用上表即可,不要为打分而打分。
|
|
394
|
+
|
|
395
|
+
#### 安全性设计 [按需]
|
|
396
|
+
|
|
397
|
+
| 指标ID | 验收标准 | 实现方案 |
|
|
398
|
+
|--------|---------|---------|
|
|
399
|
+
| NFR-SEC-01 | | JWT + RBAC |
|
|
400
|
+
|
|
401
|
+
#### 可观测性设计 [按需]
|
|
402
|
+
|
|
403
|
+
| 场景 | 实现方案 |
|
|
404
|
+
|------|---------|
|
|
405
|
+
| 监控指标 | Prometheus + Grafana |
|
|
406
|
+
| 日志 | 结构化JSON + trace_id |
|
|
407
|
+
| 链路追踪 | OpenTelemetry |
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## 4. 部署与运维
|
|
412
|
+
|
|
413
|
+
### 4.1 部署架构
|
|
414
|
+
|
|
415
|
+
| 环境 | 配置 | 实例数 | 用途 |
|
|
416
|
+
|------|------|--------|------|
|
|
417
|
+
| dev | 2C4G | 1 | 开发调试 |
|
|
418
|
+
| prod | 8C16G | 3+ | 生产环境 |
|
|
419
|
+
|
|
420
|
+
### 4.2 发布与回滚 [按需]
|
|
421
|
+
|
|
422
|
+
**发布策略**
|
|
423
|
+
|
|
424
|
+
| 阶段 | 范围 | 持续 | 进入条件 | 回滚条件 |
|
|
425
|
+
|------|------|------|---------|---------|
|
|
426
|
+
| 灰度 | 10% | 24h | 错误率<0.1% | 错误率>1% |
|
|
427
|
+
| 全量 | 100% | - | - | - |
|
|
428
|
+
|
|
429
|
+
**回滚步骤**: 同发布逆序
|
|
430
|
+
|
|
431
|
+
### 4.3 监控告警 [按需]
|
|
432
|
+
|
|
433
|
+
| 指标 | 阈值 | 级别 | 处理SLA |
|
|
434
|
+
|------|------|------|---------|
|
|
435
|
+
| 错误率 | >0.5% | P1 | 5min响应 |
|
|
436
|
+
| P95延迟 | >300ms | P2 | 15min响应 |
|
|
437
|
+
|
|
438
|
+
### 4.4 数据迁移 [按需]
|
|
439
|
+
|
|
440
|
+
> 不涉及数据迁移时跳过。
|
|
441
|
+
|
|
442
|
+
| 阶段 | 操作 | 验证方法 |
|
|
443
|
+
|------|------|---------|
|
|
444
|
+
| 1 | 新增字段 | 查Schema |
|
|
445
|
+
| 2 | 双写过渡 | 一致性校验 |
|
|
446
|
+
| 3 | 切换读取 | AB对比 |
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## 5. 风险与依赖
|
|
451
|
+
|
|
452
|
+
### 5.1 项目依赖
|
|
453
|
+
|
|
454
|
+
| 依赖模块/团队 | 依赖内容 | 状态 | 风险等级 |
|
|
455
|
+
|-------------|---------|------|---------|
|
|
456
|
+
| | | | |
|
|
457
|
+
|
|
458
|
+
### 5.2 风险识别
|
|
459
|
+
|
|
460
|
+
| 风险ID | 类型 | 描述 | 概率 | 影响 | 应对措施 |
|
|
461
|
+
|--------|------|------|------|------|---------|
|
|
462
|
+
| | | | | | |
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
## 6. 需求追溯矩阵
|
|
467
|
+
|
|
468
|
+
| 用户故事 | 功能ID | 接口ID | 测试用例ID | 状态 |
|
|
469
|
+
|---------|--------|--------|-----------|------|
|
|
470
|
+
| US-01 | FEAT-01 | API-01 | TC-001 | ✅ |
|
|
471
|
+
|
|
472
|
+
> 用户故事一列引用 PRD 中的 US-XX(无 PRD 时填"需求描述");测试用例 ID 列引用 §2.5.2 的场景 ID(S-/E-/B-),不要另造编号。
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 附录:术语表
|
|
477
|
+
|
|
478
|
+
| 术语 | 定义 |
|
|
479
|
+
|------|------|
|
|
480
|
+
| US | User Story,用户故事(来自 PRD) |
|
|
481
|
+
| FEAT | Feature,功能项 |
|
|
482
|
+
| API | Application Programming Interface,接口 |
|
|
483
|
+
| RULE | 业务规则或系统约束 |
|
|
484
|
+
| TC | Test Case,测试用例 |
|
|
485
|
+
| RISK | 风险项 |
|
|
486
|
+
| NFR | Non-Functional Requirement,非功能性需求 |
|
|
487
|
+
| AC | Acceptance Criteria,验收条件 |
|
|
488
|
+
| ADR | Architecture Decision Record,架构决策记录 |
|
|
489
|
+
| SLA/RTO/RPO | 服务等级协议 / 恢复时间目标 / 恢复点目标 |
|
|
490
|
+
| RPN | Risk Priority Number = S × O × D |
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
*文档结束*
|