设计前检查是否有明确的spec:
如无spec:提示用户先使用 spec-driven-development 对齐需求,或基于业务需求生成轻量级spec
✓ Spec场景检查: [检测到/未检测到] 需求规格
[如检测到,列出 Requirement → 端点 映射]
Init → Step → Poll AJAX 渐进式防卡死架构## API Spec: [API名称]
### ADDED Requirements
#### Requirement: [端点名称]
The system SHALL provide an endpoint to [功能描述].
##### Scenario: 成功请求
- GIVEN [前置条件]
- WHEN 发送 `[METHOD] [路径]` 请求
- THEN 返回 [状态码] 和 [响应体]
##### Scenario: 错误处理
- GIVEN [错误前置条件]
- WHEN 发送 `[METHOD] [路径]` 请求
- THEN 返回 [错误状态码] 和 [错误响应体]
### Design
- **URL结构**: [结构说明]
- **认证方式**: [认证机制]
- **版本策略**: [版本管理]
### File Changes
- `[API定义文件]` (new/modified)
API规范定义完成后,必须完成以下验证才能进入文档生成:
如某项无法验证,必须在文档生成时标注"未验证项",不得跳过。
API 设计完成后,将关键决策和规范记录到项目记忆(参见 project-memory-management.md):
帮我设计一个订单列表 API。
资源:orders。
查询条件:page、page_size、status、keyword、created_start、created_end。
权限:只有后台运营可访问;普通用户不能访问。
要求:分页最大 100;错误响应要有 code/message;keyword 支持订单号和手机号。
验证:给出正常请求、非法 page_size、无权限访问的响应示例。
优先加载:api-design.md、mysql-database.md、test-generation.md。
帮我设计一个订单导出 API,数据量可能超过 10 万。
要求:不能单请求同步导出,必须 Init-Step-Poll;支持进度、失败原因、取消和重试。
权限:只有管理员可导出;导出文件 24 小时后过期。
前端:需要轮询字段和错误提示文案。
验证:给出 Init、Step、Poll、Cancel 的请求/响应示例。
优先加载:api-design.md、frontend-design.md、test-generation.md。
## API设计文档
### 资源定义
| 资源 | 说明 | 核心字段 |
| -------- | ------ | ---------- |
| [资源名] | [说明] | [字段列表] |
### 接口列表
#### [接口名称]
**URL**:`[METHOD] /path`
**说明**:[功能说明]
**请求参数**:
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| [字段] | [类型] | [是/否] | [说明] |
**响应格式**:
```json
{
"code": 0,
"data": { ... },
"message": "success"
}
```
**错误码**:
| 错误码 | 说明 |
|--------|------|
| [CODE] | [说明] |
### 通用规范
- **认证方式**:[Bearer Token / API Key / OAuth2]
- **版本控制**:[URL路径 / Header / 参数]
- **分页方式**:[页码分页 / 游标分页]
- **数据格式**:[snake_case / camelCase]
### 长任务接口规范(如适用)
| 端点 | 方法 | 说明 |
|------|------|------|
| `/tasks/{type}/init` | POST | 创建任务,返回 `task_id`、`total`、初始状态 `queued` |
| `/tasks/{task_id}/step` | POST | 执行一批处理,返回进度和 `has_more` |
| `/tasks/{task_id}/poll` | GET | 查询任务状态、进度、错误和结果 |
| `/tasks/{task_id}/cancel` | POST | 标记任务取消,返回 `status=cancelled`;正在执行的 Step 在下一批次检测取消标记后优雅退出 |
**Step 响应必须包含**:`task_id`, `status`, `processed`, `total`, `percent`, `has_more`, `message`, `errors`
Init → Step → Poll,不得设计为单请求同步阻塞执行| 步骤 | 失败条件 | 回退目标 | 最大重试 | 不可恢复时升级路径 | | - | - | - | - | - | | 第一步:Spec场景检查 | 无spec且业务需求模糊 | 基于业务需求生成轻量级spec草案 | 1 | 标注"需求未对齐",建议先走 Spec驱动开发 | | 第二步:需求分析 | 业务场景涉及多个领域,边界不清 | 拆分为多个子API分别设计 | 2 | 输出需求拆分建议,由用户确认后继续 | | 第三步:设计原则应用 | RESTful与GraphQL均不完全契合 | 选择主风格+局部例外,标注例外原因 | 1 | 输出两套方案对比,由用户决策 | | 第四步:详细设计 | 认证/授权机制与现有系统冲突 | 降级到最简认证(Bearer Token),标注待对齐 | 2 | 输出认证方案选型矩阵,移交架构决策 | | 第五步:API规范定义 | 端点数量过多导致单次输出超限 | 按资源域分批输出,每批3-5个端点 | 0 | 建议拆分为多个API版本迭代设计 | | 第六步:文档生成 | OpenAPI规范生成失败 | 降级为Markdown表格文档,标注"未生成机器可读spec" | 2 | 输出手写文档模板,建议人工补全 | | 第七步:记录到项目记忆 | 项目记忆系统不可用 | 输出Decision Record到本地文件 | 1 | 标注"记忆未沉淀",提示用户手动保存 |
tech-selection 确定API技术方案(REST/GraphQL/gRPC)code-generation 生成API接口代码test-generation 生成API测试doc-generation 生成API文档