372 lines
8.6 KiB
Markdown
372 lines
8.6 KiB
Markdown
# Discovery 模块 API 文档
|
||
|
||
本文档详细说明了 Discovery 模块的 API 接口,包括请求方法、URL、参数说明和响应格式。
|
||
|
||
## 目录
|
||
|
||
1. [通用说明](#通用说明)
|
||
2. [创作者搜索会话接口](#创作者搜索会话接口)
|
||
3. [创作者发现接口](#创作者发现接口)
|
||
|
||
## 通用说明
|
||
|
||
### 基础URL
|
||
|
||
所有 API 的基础 URL 为:`http://127.0.0.1:8000/api/discovery/`
|
||
|
||
### 认证方式
|
||
|
||
所有 API 都需要 Token 认证。请在请求头中添加:
|
||
|
||
```
|
||
Authorization: Token <your_token>
|
||
```
|
||
|
||
### 响应格式
|
||
|
||
所有 API 返回的数据格式统一为:
|
||
|
||
```json
|
||
{
|
||
"code": 200, // 状态码,200表示成功,其他表示错误
|
||
"message": "成功", // 状态描述
|
||
"data": {} // 返回的数据,可能是对象、数组或null
|
||
}
|
||
```
|
||
|
||
### 分页
|
||
|
||
列表接口支持分页,默认每页 20 条数据,最大每页 100 条。
|
||
|
||
分页参数:
|
||
- `page`: 页码,从1开始
|
||
- `page_size`: 每页数量,默认20
|
||
|
||
分页响应格式:
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "获取数据成功",
|
||
"data": {
|
||
"count": 100, // 总记录数
|
||
"next": "下一页URL", // 下一页链接,如果没有则为null
|
||
"previous": "上一页URL", // 上一页链接,如果没有则为null
|
||
"results": [] // 当前页数据
|
||
}
|
||
}
|
||
```
|
||
|
||
## 创作者搜索会话接口
|
||
|
||
搜索会话是指用户进行的一次创作者搜索,包含搜索结果和相关统计信息。
|
||
|
||
### 获取搜索会话列表
|
||
|
||
- **URL**: `/sessions/`
|
||
- **方法**: GET
|
||
- **描述**: 获取所有搜索会话的列表
|
||
- **参数**:
|
||
- 分页参数,参见[分页](#分页)部分
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "获取搜索会话列表成功",
|
||
"data": [
|
||
{
|
||
"id": 1,
|
||
"session_number": 123,
|
||
"creator_count": 100,
|
||
"shoppable_creators": 26,
|
||
"avg_followers": 162.2,
|
||
"avg_gmv": 534.1,
|
||
"avg_video_views": 1.9,
|
||
"date_created": "2023-01-01"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 获取搜索会话详情
|
||
|
||
- **URL**: `/sessions/{session_id}/`
|
||
- **方法**: GET
|
||
- **描述**: 获取指定ID的搜索会话详细信息,包含搜索到的创作者列表
|
||
- **参数**:
|
||
- `session_id`: 会话ID (路径参数)
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "获取搜索会话详情成功",
|
||
"data": {
|
||
"id": 1,
|
||
"session_number": 123,
|
||
"creator_count": 100,
|
||
"shoppable_creators": 26,
|
||
"avg_followers": 162.2,
|
||
"avg_gmv": 534.1,
|
||
"avg_video_views": 1.9,
|
||
"date_created": "2023-01-01",
|
||
"creators": [
|
||
// 创作者列表,见创作者数据结构
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
### 创建搜索会话
|
||
|
||
- **URL**: `/sessions/`
|
||
- **方法**: POST
|
||
- **描述**: 创建新的搜索会话
|
||
- **请求参数**:
|
||
```json
|
||
{
|
||
"session_number": 123,
|
||
"creator_count": 100,
|
||
"shoppable_creators": 26,
|
||
"avg_followers": 162.2,
|
||
"avg_gmv": 534.1,
|
||
"avg_video_views": 1.9,
|
||
"date_created": "2023-01-01"
|
||
}
|
||
```
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "创建搜索会话成功",
|
||
"data": {
|
||
"id": 1,
|
||
"session_number": 123,
|
||
"creator_count": 100,
|
||
"shoppable_creators": 26,
|
||
"avg_followers": 162.2,
|
||
"avg_gmv": 534.1,
|
||
"avg_video_views": 1.9,
|
||
"date_created": "2023-01-01"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 更新搜索会话
|
||
|
||
- **URL**: `/sessions/{session_id}/`
|
||
- **方法**: PUT/PATCH
|
||
- **描述**: 更新搜索会话信息
|
||
- **参数**:
|
||
- `session_id`: 会话ID (路径参数)
|
||
- 请求体包含要更新的字段
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "更新搜索会话成功",
|
||
"data": {
|
||
// 更新后的会话信息
|
||
}
|
||
}
|
||
```
|
||
|
||
### 删除搜索会话
|
||
|
||
- **URL**: `/sessions/{session_id}/`
|
||
- **方法**: DELETE
|
||
- **描述**: 删除搜索会话
|
||
- **参数**:
|
||
- `session_id`: 会话ID (路径参数)
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "删除搜索会话成功",
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
### 获取会话创作者列表
|
||
|
||
- **URL**: `/sessions/{session_id}/results/`
|
||
- **方法**: GET
|
||
- **描述**: 获取指定会话的搜索结果(创作者列表)
|
||
- **参数**:
|
||
- `session_id`: 会话ID (路径参数)
|
||
- 分页参数,参见[分页](#分页)部分
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "获取会话创作者列表成功",
|
||
"data": [
|
||
// 创作者列表,见创作者数据结构
|
||
]
|
||
}
|
||
```
|
||
|
||
## 创作者发现接口
|
||
|
||
### 获取创作者列表
|
||
|
||
- **URL**: `/creators/`
|
||
- **方法**: GET
|
||
- **描述**: 获取所有创作者的列表
|
||
- **参数**:
|
||
- 分页参数,参见[分页](#分页)部分
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "获取创作者列表成功",
|
||
"data": [
|
||
{
|
||
"id": 1,
|
||
"name": "创作者名称",
|
||
"avatar": "头像URL",
|
||
"category": "Phones & Electronics",
|
||
"ecommerce_level": "L2",
|
||
"exposure_level": "KOC-1",
|
||
"followers": 162.2,
|
||
"gmv": 534.1,
|
||
"items_sold": 18.1,
|
||
"avg_video_views": 1.9,
|
||
"has_ecommerce": true,
|
||
"tiktok_url": "抖音链接",
|
||
"session": 1
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 获取创作者详情
|
||
|
||
- **URL**: `/creators/{creator_id}/`
|
||
- **方法**: GET
|
||
- **描述**: 获取指定ID的创作者详细信息
|
||
- **参数**:
|
||
- `creator_id`: 创作者ID (路径参数)
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "获取创作者详情成功",
|
||
"data": {
|
||
"id": 1,
|
||
"name": "创作者名称",
|
||
"avatar": "头像URL",
|
||
"category": "Phones & Electronics",
|
||
"ecommerce_level": "L2",
|
||
"exposure_level": "KOC-1",
|
||
"followers": 162.2,
|
||
"gmv": 534.1,
|
||
"items_sold": 18.1,
|
||
"avg_video_views": 1.9,
|
||
"has_ecommerce": true,
|
||
"tiktok_url": "抖音链接",
|
||
"session": 1
|
||
}
|
||
}
|
||
```
|
||
|
||
### 搜索创作者
|
||
|
||
- **URL**: `/creators/search/`
|
||
- **方法**: POST
|
||
- **描述**: 根据条件搜索创作者并创建新的搜索会话
|
||
- **请求参数**:
|
||
```json
|
||
{
|
||
"query": "搜索关键词",
|
||
"category": "Phones & Electronics", // 可选,见类别列表
|
||
"ecommerce_level": "L2", // 可选,见电商等级列表
|
||
"exposure_level": "KOC-1" // 可选,见曝光等级列表
|
||
}
|
||
```
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "搜索创作者成功",
|
||
"data": {
|
||
"id": 1,
|
||
"session_number": 123,
|
||
"creator_count": 5,
|
||
"shoppable_creators": 3,
|
||
"avg_followers": 162.2,
|
||
"avg_gmv": 534.1,
|
||
"avg_video_views": 1.9,
|
||
"date_created": "2023-01-01",
|
||
"creators": [
|
||
// 创作者列表,见创作者数据结构
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
## 数据结构
|
||
|
||
### 创作者类别
|
||
|
||
- `Phones & Electronics`: 手机与电子产品
|
||
- `Womenswear & Underwear`: 女装与内衣
|
||
- `Sports & Outdoor`: 运动与户外
|
||
- `Food & Beverage`: 食品与饮料
|
||
- `Health`: 健康
|
||
- `Kitchenware`: 厨具
|
||
- `Furniture`: 家具
|
||
- `Shoes`: 鞋类
|
||
- `Home Supplies`: 家居用品
|
||
|
||
### 电商等级
|
||
|
||
- `L1`: Level 1
|
||
- `L2`: Level 2
|
||
- `L3`: Level 3
|
||
- `L4`: Level 4
|
||
- `L5`: Level 5
|
||
- `New tag`: 新标签
|
||
|
||
### 曝光等级
|
||
|
||
- `KOC-1`: Key Opinion Consumer 1级
|
||
- `KOC-2`: Key Opinion Consumer 2级
|
||
- `KOL-2`: Key Opinion Leader 2级
|
||
- `KOL-3`: Key Opinion Leader 3级
|
||
- `New tag`: 新标签
|
||
|
||
### 创作者数据结构
|
||
|
||
```json
|
||
{
|
||
"id": 1,
|
||
"name": "创作者名称",
|
||
"avatar": "头像URL",
|
||
"category": "Phones & Electronics",
|
||
"ecommerce_level": "L2",
|
||
"exposure_level": "KOC-1",
|
||
"followers": 162.2, // 单位:K (千)
|
||
"gmv": 534.1, // 单位:K (千)
|
||
"items_sold": 18.1, // 单位:K (千)
|
||
"avg_video_views": 1.9, // 单位:M (百万)
|
||
"has_ecommerce": true, // 是否有电商能力
|
||
"tiktok_url": "抖音链接",
|
||
"session": 1 // 所属搜索会话ID
|
||
}
|
||
```
|
||
|
||
### 搜索会话数据结构
|
||
|
||
```json
|
||
{
|
||
"id": 1,
|
||
"session_number": 123, // 会话编号
|
||
"creator_count": 100, // 创作者数量
|
||
"shoppable_creators": 26, // 可购物创作者数量
|
||
"avg_followers": 162.2, // 平均粉丝数 (K)
|
||
"avg_gmv": 534.1, // 平均GMV (K)
|
||
"avg_video_views": 1.9, // 平均视频观看量 (M)
|
||
"date_created": "2023-01-01" // 创建日期
|
||
}
|
||
```
|