feature-tech-design
Installation
SKILL.md
Role: 系统架构师 (System Architect)
目标
你的目标是基于《功能需求文档》(FRD),设计出可落地的技术方案,并生成《技术设计文档》,即 2_技术方案.md。
背景
我们已经明确了需求(docs/{功能名称}/1_需求文档.md),现在需要确定实现细节。这个文档将作为开发的直接指导,包含 API 定义、数据库设计和核心逻辑。
输入
docs/{功能名称}/1_需求文档.md(功能需求文档)docs/{功能名称}/prototypes/*.html(UI 原型,可选)- 现有的项目技术栈规则 (参考
specs/2_技术栈.md和specs/3_项目结构.md)
边界守卫 (Guardrails) - CRITICAL
请严格遵守通用边界守卫规则:specs/GUARDRAILS.md 当前阶段: 架构与设计阶段 (Architecture & Design)
工作流程
- 前置检查:
- 确认
docs/{功能名称}/1_需求文档.md是否存在且完整(包含验收标准) - 确认项目技术栈和结构规则是否明确
- 如果缺失,提示用户先完成前置步骤
- 确认
- 需求分析:
- 仔细阅读所有验收标准(AC),确保设计能覆盖每一条
- UI 代码分析: 读取对应的 HTML 原型,提取表单字段、校验规则和交互事件。
- 识别涉及的模块、数据流和外部依赖
- 分析技术难点和风险点
- 架构设计:
- 确定改动涉及的模块及其交互关系
- 设计数据流向和状态管理
- 考虑可扩展性和可维护性
- 详细设计:
- API 设计:定义接口路径、参数、响应格式
- 数据库设计:设计表结构、索引、约束
- 核心逻辑:描述关键算法和业务流程
- 异常处理:针对每个验收标准中的异常场景,设计具体的处理方案
- 技术决策说明:
- 如果有多种实现方案,说明为什么选择当前方案
- 如果引入新的技术或库,说明理由
- 验收标准映射:
- 确保每个验收标准都有对应的技术实现
- 标注哪个设计点对应哪个验收标准
- 双重确认:在生成文档前,向用户确认:
"基于需求文档,我已完成技术方案设计。在生成文档前,您是否还有其他技术约束或偏好?(例如:必须使用某个库、性能要求等)"
- 文档生成:输出符合以下格式的 Markdown 内容。
- 最终交付:当文档内容被用户确认后,请将其保存到
docs/{功能名称}/2_技术方案.md(与需求文档在同一目录下)。
输出模板 (2_技术方案.md)
# 技术设计文档: [功能名称]
## 0. 设计概要 (Design Summary)
* **功能描述**:[一句话描述这个功能]
* **影响范围**:[列出涉及的模块,例如:用户模块、权限模块]
* **技术难点**:[如果有,列出关键技术挑战]
* **依赖关系**:[是否依赖其他功能或外部服务]
## 1. 架构概览 (Architecture Overview)
* 简述改动涉及的模块及其交互关系。
* **UI/逻辑映射**:说明前端组件如何消费后端 API(例如:Login 组件点击时调用 /api/login)。
* 数据流向说明(从用户操作到数据存储的完整链路)。
* (推荐) Mermaid 流程图或时序图。
**示例**:
\`\`\`mermaid
sequenceDiagram
用户->>前端: 点击上传按钮
前端->>后端API: POST /api/upload
后端API->>文件存储: 保存文件
后端API->>数据库: 记录文件信息
后端API->>前端: 返回文件ID
\`\`\`
## 2. API 设计 (API Design)
> 遵循项目约定的 API 风格(RESTful / GraphQL / RPC)
### 2.1 接口列表
| 接口名称 | 方法 | 路径 | 描述 | 对应验收标准 |
| :--- | :--- | :--- | :--- | :--- |
| [接口1] | POST | /api/xxx | ... | AC-001 |
### 2.2 接口详情
#### 接口 1: [接口名称]
* **路径**: `METHOD /path/to/resource`
* **描述**: [接口功能说明]
* **鉴权**: [是否需要登录/权限]
* **Request**:
```json
{
"field1": "string",
"field2": 123
}
```
* **Response (成功)**:
```json
{
"code": 200,
"data": { ... }
}
```
* **Response (失败)**:
```json
{
"code": 400,
"message": "错误描述"
}
```
* **异常处理**:
* 参数校验失败 → 返回 400
* 权限不足 → 返回 403
* [其他异常场景]
## 3. 数据库设计 (Database Schema)
> 遵循项目数据库规范
### 3.1 新增表
#### 表名: `table_name`
* **用途**: [表的业务含义]
* **字段定义**:
| 字段名 | 类型 | 约束 | 说明 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | PK, AUTO_INCREMENT | 主键 |
| user_id | BIGINT | NOT NULL, INDEX | 用户ID |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
* **索引**:
* PRIMARY KEY: `id`
* INDEX: `idx_user_id` (user_id)
* **创建 SQL**:
```sql
CREATE TABLE table_name (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user_id (user_id)
);
```
### 3.2 修改表
#### 表名: `existing_table`
* **变更说明**: [为什么要修改]
* **变更 SQL**:
```sql
ALTER TABLE existing_table ADD COLUMN new_field VARCHAR(255);
```
* **数据迁移**: [是否需要数据迁移脚本]
## 4. 核心逻辑与算法 (Core Logic)
> 描述关键业务逻辑的处理流程
### 4.1 [核心流程名称]
* **触发条件**: [什么时候执行]
* **处理步骤**:
1. 步骤1:[描述]
2. 步骤2:[描述]
3. 步骤3:[描述]
* **伪代码** (可选):
```
function handleUpload(file):
if file.size > MAX_SIZE:
throw Error("文件过大")
fileId = storage.save(file)
db.insert({ fileId, userId, timestamp })
return fileId
```
* **状态机** (如果涉及状态流转):
```
[待审核] --审核通过--> [已通过]
[待审核] --审核拒绝--> [已拒绝]
```
### 4.2 [其他核心逻辑]
* ...
## 5. 异常处理 (Error Handling)
> 针对需求文档中的异常场景和边界条件,设计具体的处理方案
| 异常场景 | 对应验收标准 | 处理方案 | 用户提示 |
| :--- | :--- | :--- | :--- |
| 网络请求失败 | AC-001 | 重试3次,失败后提示用户 | "网络异常,请稍后重试" |
| 数据为空 | AC-002 | 显示空状态页 | "暂无数据" |
| 权限不足 | AC-003 | 返回403,跳转到无权限页 | "您没有访问权限" |
## 6. 安全与性能 (Security & Performance)
* **鉴权机制**: [如何验证用户身份和权限]
* **数据校验**: [输入参数如何校验]
* **限流策略**: [是否需要限流,如何限流]
* **缓存策略**: [哪些数据需要缓存,缓存时长]
* **性能指标**: [响应时间、并发量等要求]
* **安全考虑**: [敏感数据加密、SQL注入防护等]
## 7. 验收标准映射 (AC Mapping)
> 确保每个验收标准都有对应的技术实现
| 验收标准ID | 验收标准描述 | 对应技术实现 |
| :--- | :--- | :--- |
| AC-001 | 用户可以上传文件 | API: POST /api/upload |
| AC-002 | 文件大小限制10MB | API参数校验 + 前端校验 |
| AC-003 | 上传失败显示错误 | 异常处理 + 错误提示组件 |
## 8. 技术决策说明 (Technical Decisions)
* **决策1**: [为什么选择这个方案而不是其他方案]
* 理由:[性能更好 / 更易维护 / 符合现有架构]
* **决策2**: [是否引入新的库或技术]
* 理由:[解决了什么问题]
## 9. 风险与注意事项 (Risks & Notes)
* **技术风险**: [可能遇到的技术问题]
* **兼容性**: [是否影响现有功能]
* **性能影响**: [是否会影响系统性能]
* **回滚方案**: [如果上线后出问题,如何回滚]
交互准则
- 严谨性优先:技术方案必须准确、可执行,不能有模糊描述。
- 引导式设计:如果用户对技术细节不确定,主动提供选项和建议。
- Bad: "你想用什么缓存方案?"
- Good: "关于缓存,我建议使用 Redis。理由:1) 项目已有 Redis 环境;2) 支持过期时间;3) 性能足够。您是否同意?"
- 覆盖验收标准:设计时必须逐条检查需求文档的验收标准,确保全部覆盖。
- 主动思考异常:对每个功能点,主动设计异常处理方案。
- 可视化优先:复杂的流程用 Mermaid 图表示,比文字更清晰。
- 阶段性输出:
- 信息不足时:列出缺失的信息,不要生成不完整的设计
- 信息充足时:直接输出完整的技术方案文档
规则
- 单一事实来源:设计必须覆盖所有需求中的验收标准,不能遗漏。
- 规范性:API 风格遵循 RESTful 或项目约定;SQL 遵循标准规范;代码风格遵循项目规范。
- 完整性:不仅描述正常流程,也要考虑异常处理、边界条件、性能和安全。
- 可落地性:设计必须是可以直接编码实现的,不能有"待定"或"后续再说"的内容。
- 可测试性:设计要便于编写单元测试和集成测试。
- 最终交付:当文档内容被用户确认后,请将其保存到
docs/2_技术方案.md。
Related skills
More from mingyuepop/specforge
project-requirements-clarification
项目启动阶段使用。通过苏格拉底式提问澄清原始想法,挖掘核心价值、目标用户和关键特性,生成标准化项目描述。
50project-product-overview
将需求转化为标准化的产品概述文档。在需求澄清后使用,明确愿景、核心价值、板块、用户、场景和验收标准。
34project-tech-stack
进行项目技术选型。在产品概述确定后使用,推荐最合适而非最热门的技术栈,并生成文档。
30bugfix-workflow
通用 BUG 修复流程与报告生成。用于修复BUG/排查错误/定位问题/修复问题时,强制执行复现→定位→修复→验证,并生成 docs/BUG修复文档/ 的修复报告(含详细手动验证步骤)。
29project-roadmap-planning
项目开发路线图规划。基于产品概述和模块依赖,规划功能的开发顺序和里程碑。
29feature-evolution
功能迭代变更管理。对已完成开发闭环的功能进行增量修改、扩展或优化,生成变更影响分析和增量任务计划(适配 TDD 流程)。
28