daren/apps/brands/brands.md
2025-05-26 11:01:01 +08:00

677 lines
17 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文档
## 概述
品牌模块是负责管理品牌、产品、活动以及品牌聊天会话的系统。该模块提供了一系列RESTful API接口用于创建、查询、更新和删除品牌相关的资源。
## 通用响应格式
所有API响应都遵循以下统一的JSON格式
```json
{
"code": 200, // 状态码200表示成功其他值表示错误
"message": "成功", // 响应消息
"data": {} // 响应数据可能是对象、数组或null
}
```
## 认证方式
所有接口都需要使用自定义Token认证请在HTTP请求头中添加以下字段
```
Authorization: Token your_token_here
```
## 1. 品牌管理 (Brands)
### 1.1 获取品牌列表
- **URL**: `/brands/`
- **方法**: `GET`
- **描述**: 获取所有品牌的列表
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": [
{
"id": "uuid字符串",
"name": "品牌名称",
"description": "品牌描述",
"logo_url": "品牌Logo链接",
"category": "品牌分类",
"source": "来源",
"collab_count": 0,
"creators_count": 0,
"campaign_id": "活动ID",
"total_gmv_achieved": "0.00",
"total_views_achieved": "0.00",
"shop_overall_rating": "0.0",
"dataset_id_list": [],
"created_at": "创建时间",
"updated_at": "更新时间",
"is_active": true
}
]
}
```
### 1.2 创建品牌
- **URL**: `/brands/`
- **方法**: `POST`
- **描述**: 创建一个新的品牌
- **请求参数**:
```json
{
"name": "品牌名称", // 必填,唯一
"description": "品牌描述", // 可选
"logo_url": "品牌Logo链接", // 可选
"category": "品牌分类", // 可选
"source": "来源", // 可选
"collab_count": 0, // 可选默认0
"creators_count": 0, // 可选默认0
"campaign_id": "活动ID", // 可选
"total_gmv_achieved": "0.00", // 可选默认0
"total_views_achieved": "0.00", // 可选默认0
"shop_overall_rating": "0.0", // 可选默认0
"is_active": true // 可选默认true
}
```
- **响应数据**: 返回创建的品牌信息
### 1.3 获取品牌详情
- **URL**: `/brands/{id}/`
- **方法**: `GET`
- **描述**: 获取指定ID的品牌详细信息包括关联的产品和活动
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": {
"id": "uuid字符串",
"name": "品牌名称",
"description": "品牌描述",
"logo_url": "品牌Logo链接",
"category": "品牌分类",
"source": "来源",
"collab_count": 0,
"creators_count": 0,
"campaign_id": "活动ID",
"total_gmv_achieved": "0.00",
"total_views_achieved": "0.00",
"shop_overall_rating": "0.0",
"dataset_id_list": [],
"products": [],
"campaigns": [],
"created_at": "创建时间",
"updated_at": "更新时间",
"is_active": true
}
}
```
### 1.4 更新品牌
- **URL**: `/brands/{id}/`
- **方法**: `PUT`/`PATCH`
- **描述**: 更新指定ID的品牌信息
- **请求参数**: 同创建品牌
- **响应数据**: 返回更新后的品牌信息
### 1.5 删除品牌
- **URL**: `/brands/{id}/`
- **方法**: `DELETE`
- **描述**: 删除指定ID的品牌
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "删除成功",
"data": null
}
```
### 1.6 获取品牌产品列表
- **URL**: `/brands/{id}/products/`
- **方法**: `GET`
- **描述**: 获取指定品牌下的所有产品
- **请求参数**: 无
- **响应数据**: 返回产品列表
### 1.7 获取品牌活动列表
- **URL**: `/brands/{id}/campaigns/`
- **方法**: `GET`
- **描述**: 获取指定品牌下的所有活动
- **请求参数**: 无
- **响应数据**: 返回活动列表
### 1.8 获取品牌知识库ID列表
- **URL**: `/brands/{id}/dataset_ids/`
- **方法**: `GET`
- **描述**: 获取品牌的所有知识库ID
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": {
"dataset_id_list": []
}
}
```
## 2. 产品管理 (Products)
### 2.1 获取产品列表
- **URL**: `/products/`
- **方法**: `GET`
- **描述**: 获取所有产品的列表
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": [
{
"id": "uuid字符串",
"brand": "品牌ID",
"brand_name": "品牌名称",
"name": "产品名称",
"description": "产品描述",
"image_url": "产品图片链接",
"pid": "产品ID",
"commission_rate": "0.00",
"open_collab": "0.00",
"available_samples": 0,
"sales_price_min": "0.00",
"sales_price_max": "0.00",
"stock": 0,
"items_sold": 0,
"product_rating": "0.0",
"reviews_count": 0,
"collab_creators": 0,
"tiktok_shop": false,
"dataset_id": "知识库ID",
"external_id": "外部ID",
"created_at": "创建时间",
"updated_at": "更新时间",
"is_active": true
}
]
}
```
### 2.2 创建产品
- **URL**: `/products/`
- **方法**: `POST`
- **描述**: 创建一个新的产品会自动更新关联品牌的dataset_id_list
- **请求参数**:
```json
{
"brand": "品牌ID", // 必填
"name": "产品名称", // 必填
"description": "产品描述", // 可选
"image_url": "产品图片链接", // 可选
"pid": "产品ID", // 可选
"commission_rate": "0.00", // 可选
"open_collab": "0.00", // 可选
"available_samples": 0, // 可选
"sales_price_min": "0.00", // 可选
"sales_price_max": "0.00", // 可选
"stock": 0, // 可选
"items_sold": 0, // 可选
"product_rating": "0.0", // 可选
"reviews_count": 0, // 可选
"collab_creators": 0, // 可选
"tiktok_shop": false, // 可选
"dataset_id": "知识库ID", // 必填
"external_id": "外部ID", // 可选
"is_active": true // 可选
}
```
- **响应数据**: 返回创建的产品信息
### 2.3 获取产品详情
- **URL**: `/products/{id}/`
- **方法**: `GET`
- **描述**: 获取指定ID的产品详细信息
- **请求参数**: 无
- **响应数据**: 返回产品详情
### 2.4 更新产品
- **URL**: `/products/{id}/`
- **方法**: `PUT`/`PATCH`
- **描述**: 更新指定ID的产品信息会自动更新关联品牌的dataset_id_list
- **请求参数**: 同创建产品
- **响应数据**: 返回更新后的产品信息
### 2.5 删除产品
- **URL**: `/products/{id}/`
- **方法**: `DELETE`
- **描述**: 软删除指定ID的产品并从品牌的dataset_id_list中移除对应的ID
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "删除成功",
"data": null
}
```
## 3. 活动管理 (Campaigns)
### 3.1 获取活动列表
- **URL**: `/campaigns/`
- **方法**: `GET`
- **描述**: 获取所有活动的列表
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": [
{
"id": "uuid字符串",
"brand": "品牌ID",
"brand_name": "品牌名称",
"name": "活动名称",
"description": "活动描述",
"image_url": "活动图片链接",
"service": "服务类型",
"creator_type": "创作者类型",
"creator_level": "创作者等级",
"creator_category": "创作者分类",
"creators_count": 0,
"gmv": "GMV范围",
"followers": "粉丝数范围",
"views": "浏览量范围",
"budget": "预算范围",
"link_product": ["产品ID1", "产品ID2"],
"link_product_details": [产品详情对象数组],
"start_date": "开始日期",
"end_date": "结束日期",
"dataset_id": "知识库ID",
"external_id": "外部ID",
"created_at": "创建时间",
"updated_at": "更新时间",
"is_active": true
}
]
}
```
### 3.2 创建活动
- **URL**: `/campaigns/`
- **方法**: `POST`
- **描述**: 创建一个新的活动会自动更新关联品牌的dataset_id_list
- **请求参数**:
```json
{
"brand": "品牌ID", // 必填
"name": "活动名称", // 必填
"description": "活动描述", // 可选
"image_url": "活动图片链接", // 可选
"service": "服务类型", // 可选
"creator_type": "创作者类型", // 可选
"creator_level": "创作者等级", // 可选
"creator_category": "创作者分类", // 可选
"creators_count": 0, // 可选
"gmv": "GMV范围", // 可选
"followers": "粉丝数范围", // 可选
"views": "浏览量范围", // 可选
"budget": "预算范围", // 可选
"link_product": ["产品ID1"], // 可选
"start_date": "开始日期", // 可选
"end_date": "结束日期", // 可选
"dataset_id": "知识库ID", // 必填
"external_id": "外部ID", // 可选
"is_active": true // 可选
}
```
- **响应数据**: 返回创建的活动信息
### 3.3 获取活动详情
- **URL**: `/campaigns/{id}/`
- **方法**: `GET`
- **描述**: 获取指定ID的活动详细信息
- **请求参数**: 无
- **响应数据**: 返回活动详情
### 3.4 更新活动
- **URL**: `/campaigns/{id}/`
- **方法**: `PUT`/`PATCH`
- **描述**: 更新指定ID的活动信息会自动更新关联品牌的dataset_id_list
- **请求参数**: 同创建活动
- **响应数据**: 返回更新后的活动信息
### 3.5 删除活动
- **URL**: `/campaigns/{id}/`
- **方法**: `DELETE`
- **描述**: 软删除指定ID的活动并从品牌的dataset_id_list中移除对应的ID
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "删除成功",
"data": null
}
```
### 3.6 获取Token信息
- **URL**: `/campaigns/token-info/`
- **方法**: `GET`
- **描述**: 获取当前用户的token信息和WebSocket URL示例
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": {
"user_id": 1,
"email": "user@example.com",
"token": "token字符串",
"token_expired_at": "过期时间",
"websocket_examples": {
"活动状态WebSocket": "ws://example.com/ws/campaigns/1/status/?token=token字符串",
"活动产品状态WebSocket": "ws://example.com/ws/campaigns/1/products/123/status/?token=token字符串"
}
}
}
```
### 3.7 添加产品到活动
- **URL**: `/campaigns/{id}/add_product/`
- **方法**: `POST`
- **描述**: 将产品添加到活动中
- **请求参数**:
```json
{
"product_id": "产品ID" // 必填
}
```
- **响应数据**:
```json
{
"code": 200,
"message": "产品添加成功",
"data": null
}
```
### 3.8 从活动中移除产品
- **URL**: `/campaigns/{id}/remove_product/`
- **方法**: `POST`
- **描述**: 从活动中移除产品
- **请求参数**:
```json
{
"product_id": "产品ID" // 必填
}
```
- **响应数据**:
```json
{
"code": 200,
"message": "产品移除成功",
"data": null
}
```
### 3.9 获取活动达人列表
- **URL**: `/campaigns/{id}/creator_list/`
- **方法**: `GET`
- **描述**: 获取活动关联的达人列表,并启动状态轮询
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": {
"campaign": {
"name": "活动名称",
"description": "活动描述",
"image_url": "活动图片链接",
"service": "服务类型",
"creator_type": "创作者类型",
"creator_level": "创作者等级",
"creator_category": "创作者分类",
"creators_count": 0,
"gmv": "GMV范围",
"followers": "粉丝数范围",
"views": "浏览量范围",
"budget": "预算范围",
"start_date": "开始日期",
"end_date": "结束日期",
"status": "状态"
},
"creators": [
{
"name": "达人名称",
"category": "达人分类",
"followers": "粉丝数",
"GMV Generated": "GMV",
"Views Generated": "观看量",
"Pricing": "价格",
"Status": "状态"
}
]
}
}
```
### 3.10 更新达人状态
- **URL**: `/campaigns/{id}/update_creator_status/`
- **方法**: `POST`
- **描述**: 手动更新达人状态
- **请求参数**:
```json
{
"creator_id": "达人ID", // 必填
"product_id": "产品ID" // 可选
}
```
- **响应数据**: 返回更新后的达人列表
### 3.11 获取活动产品达人列表
- **URL**: `/campaigns/{id}/product_creators/`
- **方法**: `GET`
- **描述**: 根据活动ID和产品ID获取达人列表并启动状态轮询
- **请求参数**:
- `product_id`: 产品ID (可选)
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": {
"campaign_id": "活动ID",
"product_id": "产品ID",
"product_name": "产品名称",
"creators": [
{
"creator_name": "达人名称",
"category": "达人分类",
"followers": "粉丝数",
"gmv_generated": "GMV",
"views_generated": "观看量",
"pricing": "价格",
"status": "状态"
}
]
}
}
```
### 3.12 停止状态轮询
- **URL**: `/campaigns/stop-polling/`
- **方法**: `POST`
- **描述**: 停止指定活动或所有活动的状态轮询
- **请求参数**:
```json
{
"campaign_id": "活动ID" // 可选,不提供则停止所有轮询
}
```
- **响应数据**:
```json
{
"code": 200,
"message": "已停止活动轮询",
"data": null
}
```
### 3.13 获取活动轮询列表
- **URL**: `/campaigns/active-pollings/`
- **方法**: `GET`
- **描述**: 获取当前正在运行的所有轮询任务信息
- **请求参数**: 无
- **响应数据**: 返回活动轮询列表
### 3.14 获取WebSocket连接URL
- **URL**: `/campaigns/{id}/websocket-url/`
- **方法**: `GET`
- **描述**: 获取带认证的WebSocket连接URL
- **请求参数**:
- `product_id`: 产品ID (可选)
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": {
"websocket_url": "ws://example.com/ws/campaigns/1/status/?token=token字符串"
}
}
```
## 4. 品牌聊天会话管理 (Chat Sessions)
### 4.1 获取聊天会话列表
- **URL**: `/chat-sessions/`
- **方法**: `GET`
- **描述**: 获取所有品牌聊天会话的列表
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "成功",
"data": [
{
"id": "uuid字符串",
"brand": "品牌ID",
"brand_name": "品牌名称",
"session_id": "会话ID",
"title": "会话标题",
"dataset_id_list": [],
"created_at": "创建时间",
"updated_at": "更新时间",
"is_active": true
}
]
}
```
### 4.2 创建聊天会话
- **URL**: `/chat-sessions/`
- **方法**: `POST`
- **描述**: 创建一个新的品牌聊天会话如果未提供dataset_id_list则使用品牌的dataset_id_list
- **请求参数**:
```json
{
"brand": "品牌ID", // 必填
"session_id": "会话ID", // 必填,唯一
"title": "会话标题", // 可选,默认"新对话"
"dataset_id_list": [], // 可选默认为品牌的dataset_id_list
"is_active": true // 可选默认true
}
```
- **响应数据**: 返回创建的聊天会话信息
### 4.3 获取聊天会话详情
- **URL**: `/chat-sessions/{id}/`
- **方法**: `GET`
- **描述**: 获取指定ID的聊天会话详细信息
- **请求参数**: 无
- **响应数据**: 返回聊天会话详情
### 4.4 更新聊天会话
- **URL**: `/chat-sessions/{id}/`
- **方法**: `PUT`/`PATCH`
- **描述**: 更新指定ID的聊天会话信息
- **请求参数**: 同创建聊天会话
- **响应数据**: 返回更新后的聊天会话信息
### 4.5 删除聊天会话
- **URL**: `/chat-sessions/{id}/`
- **方法**: `DELETE`
- **描述**: 删除指定ID的聊天会话
- **请求参数**: 无
- **响应数据**:
```json
{
"code": 200,
"message": "删除成功",
"data": null
}
```
## 5. WebSocket接口
brands模块提供了WebSocket接口用于实时获取活动和产品状态更新。
### 5.1 活动状态WebSocket
- **URL**: `ws://domain/ws/campaigns/{campaign_id}/status/?token={token}`
- **描述**: 接收指定活动的状态更新
### 5.2 活动产品状态WebSocket
- **URL**: `ws://domain/ws/campaigns/{campaign_id}/products/{product_id}/status/?token={token}`
- **描述**: 接收指定活动和产品组合的状态更新