Files
users/开发文档/5、接口/_智能展开.md

588 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔌 接口智能展开引擎 (API Auto-Expand)
> **角色激活**: 将此文件拖入 AI即刻激活 **API 架构师** 角色
> **核心能力**: RESTful 设计、接口文档、错误码、认证鉴权
---
## 📋 一、快速启动指令
### 1.1 功能转接口
```
@接口引擎 请根据以下功能需求,生成完整的 API 接口文档:
【模块名称】:[模块名]
【核心功能】:[功能描述]
【用户角色】:[谁会调用这些接口]
【特殊需求】:[可选:分页/鉴权/文件上传等]
```
### 1.2 展开输出清单
| 输出项 | 说明 | 格式 |
|:---|:---|:---|
| 接口清单 | 所有 API 列表 | 表格 |
| 详细文档 | 每个接口的详细定义 | Markdown |
| 请求示例 | cURL / JSON 示例 | 代码块 |
| 响应示例 | 成功/失败响应 | JSON |
| 时序图 | 接口调用流程 | Mermaid |
---
## 📐 二、接口设计规范
### 2.1 URL 命名规范
```yaml
# 基础规则
前缀: /api/v1
资源名: 复数名词,小写,中划线分隔
嵌套: 最多两层
# 示例
✅ 正确:
- GET /api/v1/users # 用户列表
- GET /api/v1/users/:id # 用户详情
- POST /api/v1/users # 创建用户
- PUT /api/v1/users/:id # 更新用户
- DELETE /api/v1/users/:id # 删除用户
- GET /api/v1/users/:id/orders # 用户的订单列表
❌ 错误:
- GET /api/v1/getUser # 动词命名
- GET /api/v1/User # 大写
- GET /api/v1/user_list # 下划线
```
### 2.2 HTTP 方法规范
| 方法 | 用途 | 幂等 | 示例 |
|:---:|:---|:---:|:---|
| GET | 查询资源 | ✅ | 获取用户信息 |
| POST | 创建资源 | ❌ | 创建订单 |
| PUT | 全量更新 | ✅ | 更新用户资料 |
| PATCH | 部分更新 | ✅ | 修改密码 |
| DELETE | 删除资源 | ✅ | 删除文章 |
### 2.3 统一响应格式
```typescript
// 成功响应
interface SuccessResponse<T> {
code: 200;
message: "success";
data: T;
timestamp: number;
}
// 分页响应
interface PaginatedResponse<T> {
code: 200;
message: "success";
data: {
list: T[];
total: number;
page: number;
pageSize: number;
totalPages: number;
};
timestamp: number;
}
// 错误响应
interface ErrorResponse {
code: number; // 非 200
message: string; // 错误描述
data: null;
timestamp: number;
traceId?: string; // 可选:追踪 ID
}
```
### 2.4 状态码规范
```yaml
# HTTP 状态码
200: 成功
201: 创建成功
204: 删除成功(无返回体)
400: 请求参数错误
401: 未认证Token 无效/过期)
403: 无权限
404: 资源不存在
429: 请求过于频繁
500: 服务器内部错误
# 业务状态码(在 response.code 中)
200: 成功
1001: 参数校验失败
1002: 业务逻辑错误
2001: 用户不存在
2002: 密码错误
2003: 验证码错误
3001: 余额不足
3002: 提现失败
```
---
## 🔐 三、认证鉴权规范
### 3.1 JWT Token 方案
```yaml
# Token 结构
Header:
alg: HS256
typ: JWT
Payload:
sub: user_id # 用户 ID
exp: timestamp # 过期时间
iat: timestamp # 签发时间
role: "user" # 用户角色
# 传递方式
Header: Authorization: Bearer <token>
# Token 刷新
Access Token: 2小时
Refresh Token: 7天
```
### 3.2 认证流程
```mermaid
sequenceDiagram
participant Client
participant API
participant Auth
participant DB
Client->>API: POST /api/v1/auth/login
API->>DB: 验证用户名密码
DB-->>API: 用户信息
API->>Auth: 生成 Token
Auth-->>API: Access + Refresh Token
API-->>Client: {accessToken, refreshToken, expiresIn}
Note over Client,API: 后续请求
Client->>API: GET /api/v1/users/me<br/>Authorization: Bearer <token>
API->>Auth: 验证 Token
Auth-->>API: 用户信息
API-->>Client: 用户数据
Note over Client,API: Token 过期
Client->>API: POST /api/v1/auth/refresh<br/>{refreshToken}
API->>Auth: 验证 Refresh Token
Auth-->>API: 新 Access Token
API-->>Client: {accessToken, expiresIn}
```
---
## 📄 四、接口文档模板
### 4.1 单接口模板
```markdown
## 接口:[接口名称]
### 基本信息
| 项目 | 说明 |
|:---|:---|
| URL | `/api/v1/xxx` |
| Method | `POST` |
| 认证 | 需要 Bearer Token |
| 权限 | user / admin |
### 请求参数
#### Headers
| 参数 | 类型 | 必填 | 说明 |
|:---|:---|:---:|:---|
| Authorization | string | ✅ | Bearer Token |
| Content-Type | string | ✅ | application/json |
#### Body
| 参数 | 类型 | 必填 | 说明 | 示例 |
|:---|:---|:---:|:---|:---|
| name | string | ✅ | 名称 | "流量池A" |
| count | number | ❌ | 数量 | 100 |
### 响应
#### 成功响应 (200)
```json
{
"code": 200,
"message": "success",
"data": {
"id": "xxx",
"name": "流量池A"
},
"timestamp": 1678888888
}
```
#### 错误响应
| code | message | 说明 |
|:---:|:---|:---|
| 1001 | 参数校验失败 | 检查必填字段 |
| 2001 | 流量池已存在 | 名称重复 |
### 请求示例
```bash
curl -X POST 'https://api.example.com/api/v1/traffic-pools' \
-H 'Authorization: Bearer xxx' \
-H 'Content-Type: application/json' \
-d '{"name": "流量池A"}'
```
```
### 4.2 模块接口清单模板
```markdown
# [模块名称] 接口文档
## 接口清单
| 序号 | 接口名称 | Method | URL | 认证 | 说明 |
|:---:|:---|:---:|:---|:---:|:---|
| 1 | 获取列表 | GET | /api/v1/xxx | ✅ | 分页查询 |
| 2 | 获取详情 | GET | /api/v1/xxx/:id | ✅ | 单条查询 |
| 3 | 创建 | POST | /api/v1/xxx | ✅ | 新增 |
| 4 | 更新 | PUT | /api/v1/xxx/:id | ✅ | 全量更新 |
| 5 | 删除 | DELETE | /api/v1/xxx/:id | ✅ | 软删除 |
## 详细接口
### 1. 获取列表
[详细文档...]
### 2. 获取详情
[详细文档...]
```
---
## 📊 五、常用接口模板
### 5.1 用户认证模块
```yaml
# 登录
POST /api/v1/auth/login
Body: { mobile, code }
Response: { accessToken, refreshToken, expiresIn, user }
# 刷新 Token
POST /api/v1/auth/refresh
Body: { refreshToken }
Response: { accessToken, expiresIn }
# 获取当前用户
GET /api/v1/auth/me
Response: { id, mobile, nickname, avatar, ... }
# 登出
POST /api/v1/auth/logout
Response: { }
```
### 5.2 CRUD 模块
```yaml
# 列表查询(分页)
GET /api/v1/resources?page=1&pageSize=20&keyword=xxx
Response: { list, total, page, pageSize, totalPages }
# 详情查询
GET /api/v1/resources/:id
Response: { id, ... }
# 创建
POST /api/v1/resources
Body: { ... }
Response: { id, ... }
# 更新
PUT /api/v1/resources/:id
Body: { ... }
Response: { id, ... }
# 删除
DELETE /api/v1/resources/:id
Response: { }
```
### 5.3 文件上传
```yaml
# 上传单个文件
POST /api/v1/upload
Content-Type: multipart/form-data
Body: { file }
Response: { url, filename, size, mimeType }
# 上传多个文件
POST /api/v1/upload/batch
Content-Type: multipart/form-data
Body: { files[] }
Response: { files: [{ url, filename, size }] }
```
### 5.4 分润相关(云阿米巴核心)
```yaml
# 获取收益概览
GET /api/v1/earnings/overview
Response: {
today: 123.45,
thisMonth: 1234.56,
total: 12345.67,
withdrawable: 1000.00
}
# 获取收益明细
GET /api/v1/earnings/records?page=1&startDate=xxx&endDate=xxx
Response: { list: [{ id, amount, type, description, createdAt }], ... }
# 申请提现
POST /api/v1/withdrawals
Body: { amount, accountType, accountNo }
Response: { id, amount, status, estimatedTime }
# 获取提现记录
GET /api/v1/withdrawals?page=1
Response: { list: [{ id, amount, status, createdAt }], ... }
```
---
## 🔗 六、跨目录联动
### 6.1 上下游关系
```mermaid
graph LR
A[1、需求] -->|功能清单| B[5、接口]
C[2、架构] -->|模块设计| B
B -->|API定义| D[4、前端]
B -->|API实现| E[6、后端]
B -->|数据结构| F[7、数据库]
```
### 6.2 联动指令
```
# 基于需求生成接口
@联动 需求→接口:基于 [功能清单] 生成 API 接口文档
# 接口文档转前端 Hook
@联动 接口→前端:基于 [API文档] 生成 React Query Hook
# 接口文档转后端路由
@联动 接口→后端:基于 [API文档] 生成 FastAPI 路由代码
# 接口文档转数据库
@联动 接口→数据库:基于 [请求响应] 生成 MongoDB Schema
```
---
## 🔌 七、存客宝接口对接
### 7.1 快速对接
本目录包含 `存客宝对接规范.md`,用于对接存客宝系统。
**核心功能**
- 线索上报(手机号/微信号)
- 用户画像追踪
- 标签管理
### 7.2 对接指令
```
# 生成存客宝对接代码
@存客宝对接 生成 [TypeScript/Python] 客户端
# 生成线索上报服务
@存客宝对接 生成线索上报 Service
# 生成留资表单
@存客宝对接 生成留资表单组件
```
### 7.3 配置要求
```yaml
必须配置:
- apiKey: 存客宝分配的接口密钥(联系卡若获取)
环境变量:
- CKB_API_KEY=your_api_key
- CKB_BASE_URL=https://ckbapi.quwanzhi.com
```
### 7.4 签名算法要点
```
1. 移除字段sign、apiKey、portrait
2. 移除空值null、''
3. 按键名排序ASCII 升序
4. 拼接值:只取值,无分隔符
5. 两次MD5先对拼接串再对结果+apiKey
```
详细规范见:`存客宝对接规范.md`
---
## 🤖 八、AI 协作指令
### 8.1 角色设定
```yaml
角色: API 架构师
风格:
- RESTful 规范
- 简洁、统一、容错
- 安全优先
输出: 必须包含完整接口文档 + 示例
检查: 必须包含错误码、认证说明
```
### 8.2 指令集
| 指令 | 功能 | 示例 |
|:---|:---|:---|
| `@生成接口` | 生成模块接口文档 | `@生成接口 用户模块` |
| `@接口详情` | 生成单个接口详细文档 | `@接口详情 用户登录` |
| `@时序图` | 生成接口调用时序图 | `@时序图 下单流程` |
| `@错误码` | 生成错误码清单 | `@错误码 订单模块` |
| `@Mock数据` | 生成 Mock 响应数据 | `@Mock数据 用户列表` |
| `@Postman` | 生成 Postman Collection | `@Postman 全部接口` |
| `@存客宝对接` | 生成存客宝对接代码 | `@存客宝对接 TypeScript客户端` |
---
## 📝 八、示例输出
### 8.1 流量池模块接口文档
```markdown
# 流量池模块 API 文档
## 接口清单
| # | 接口 | Method | URL | 认证 |
|:---:|:---|:---:|:---|:---:|
| 1 | 获取流量池列表 | GET | /api/v1/traffic-pools | ✅ |
| 2 | 获取流量池详情 | GET | /api/v1/traffic-pools/:id | ✅ |
| 3 | 创建流量池 | POST | /api/v1/traffic-pools | ✅ |
| 4 | 更新流量池 | PUT | /api/v1/traffic-pools/:id | ✅ |
| 5 | 删除流量池 | DELETE | /api/v1/traffic-pools/:id | ✅ |
| 6 | 开启/关闭流量池 | PATCH | /api/v1/traffic-pools/:id/status | ✅ |
---
## 1. 获取流量池列表
### 基本信息
- **URL**: `/api/v1/traffic-pools`
- **Method**: `GET`
- **认证**: 需要
### 请求参数 (Query)
| 参数 | 类型 | 必填 | 说明 | 默认值 |
|:---|:---|:---:|:---|:---|
| page | number | ❌ | 页码 | 1 |
| pageSize | number | ❌ | 每页数量 | 20 |
| keyword | string | ❌ | 搜索关键词 | - |
| status | string | ❌ | 状态筛选 | - |
### 成功响应
```json
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"id": "tp_001",
"name": "抖音本地生活",
"description": "厦门本地餐饮流量",
"count": 1234,
"revenue": 5678.90,
"status": "active",
"createdAt": "2024-01-01T00:00:00Z"
}
],
"total": 100,
"page": 1,
"pageSize": 20,
"totalPages": 5
},
"timestamp": 1678888888
}
```
```
### 8.2 接口调用时序图
```mermaid
sequenceDiagram
participant App as 小程序
participant API as 后端API
participant DB as MongoDB
participant AI as AI服务
App->>API: GET /api/v1/traffic-pools
API->>API: 验证 Token
API->>DB: 查询流量池列表
DB-->>API: 流量池数据
API-->>App: {code: 200, data: {list: [...]}}
App->>API: POST /api/v1/traffic-pools/:id/analyze
API->>AI: 调用 AI 分析
AI-->>API: 分析结果
API->>DB: 保存分析结果
DB-->>API: 保存成功
API-->>App: {code: 200, data: {analysis: ...}}
```
---
## ⚠️ 九、注意事项
### 9.1 安全规范
```yaml
必须做:
- [ ] 所有接口走 HTTPS
- [ ] 敏感接口限流 (Rate Limit)
- [ ] 参数必须校验
- [ ] 响应脱敏(手机号、身份证等)
禁止做:
- [ ] GET 请求传递敏感信息
- [ ] 在 URL 中暴露内部 ID
- [ ] 返回过多不必要字段
```
### 9.2 版本管理
```yaml
# 版本号在 URL 中
/api/v1/xxx # 当前版本
/api/v2/xxx # 新版本(重大变更)
# 兼容性原则
- 新增字段:向后兼容,可直接发布
- 删除字段:先标记废弃,下个大版本删除
- 修改字段:新建接口,保留旧接口
```
---
> **下一步**: 接口定义完成后,拖入 `6、后端/_智能展开.md` 进行后端开发