添加单个单人简易信息
This commit is contained in:
parent
a9156bf037
commit
bca9490fba
@ -310,6 +310,56 @@ data: {"code": 200, "message": "完成", "data": {"id": "记录ID", "conversatio
|
||||
}
|
||||
```
|
||||
|
||||
### 11. 根据ID获取达人信息
|
||||
|
||||
根据达人ID获取单个达人的详细信息。
|
||||
|
||||
- **URL**: `/api/chat-history/get_creator_by_id/`
|
||||
- **方法**: `GET`
|
||||
- **参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 描述 |
|
||||
|-------|------|------|------|
|
||||
| id | integer | 是 | 达人ID |
|
||||
|
||||
- **响应**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "获取成功",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"name": "Michelle",
|
||||
"avatar_url": "http://example.com/avatar.jpg",
|
||||
"category": "Clothing & Accessories",
|
||||
"mcn": "--",
|
||||
"pricing": "$100/video",
|
||||
"collab": ["SUNLINK", "ARZOPA"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- **错误响应**:
|
||||
|
||||
缺少参数时:
|
||||
```json
|
||||
{
|
||||
"code": 400,
|
||||
"message": "缺少必要参数: id",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
达人不存在时:
|
||||
```json
|
||||
{
|
||||
"code": 404,
|
||||
"message": "未找到该达人信息",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
## WebSocket API
|
||||
|
||||
除了REST API之外,Chat模块还提供了WebSocket接口,用于实时流式获取对话回答。
|
||||
|
@ -18,6 +18,8 @@ from apps.chat.services.chat_api import (
|
||||
ExternalAPIError, stream_chat_answer, get_chat_answer,
|
||||
generate_conversation_title_from_deepseek
|
||||
)
|
||||
from apps.daren_detail.models import CreatorProfile
|
||||
from apps.daren_detail.serializers import CreatorProfileSerializer, CreatorProfileListSerializer
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -601,3 +603,56 @@ class ChatHistoryViewSet(viewsets.ModelViewSet):
|
||||
'message': f"更新会话标题失败: {str(e)}",
|
||||
'data': None
|
||||
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
@action(detail=False, methods=['get'])
|
||||
def get_creator_by_id(self, request):
|
||||
"""根据ID获取单个达人信息"""
|
||||
try:
|
||||
creator_id = request.query_params.get('id')
|
||||
if not creator_id:
|
||||
return Response({
|
||||
'code': 400,
|
||||
'message': '缺少必要参数: id',
|
||||
'data': None
|
||||
}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
try:
|
||||
creator = CreatorProfile.objects.get(id=creator_id)
|
||||
except CreatorProfile.DoesNotExist:
|
||||
return Response({
|
||||
'code': 404,
|
||||
'message': '未找到该达人信息',
|
||||
'data': None
|
||||
}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
# 处理头像URL
|
||||
avatar_url = creator.get_avatar_url()
|
||||
if avatar_url and request:
|
||||
if creator.avatar:
|
||||
avatar_url = request.build_absolute_uri(avatar_url)
|
||||
|
||||
# 组装返回数据
|
||||
result = {
|
||||
'id': creator.id,
|
||||
'name': creator.name,
|
||||
'avatar_url': avatar_url,
|
||||
'category': creator.category,
|
||||
'mcn': creator.mcn if creator.mcn else '--',
|
||||
'pricing': f"${creator.pricing}/video" if creator.pricing else '--',
|
||||
'collab': creator.e_commerce_platforms if creator.e_commerce_platforms else []
|
||||
}
|
||||
|
||||
return Response({
|
||||
'code': 200,
|
||||
'message': '获取成功',
|
||||
'data': result
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"获取达人信息失败: {str(e)}")
|
||||
logger.error(traceback.format_exc())
|
||||
return Response({
|
||||
'code': 500,
|
||||
'message': f'获取达人信息失败: {str(e)}',
|
||||
'data': None
|
||||
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
719
brands.md
Normal file
719
brands.md
Normal file
@ -0,0 +1,719 @@
|
||||
# Brands 模块 API 文档
|
||||
|
||||
本文档详细说明了 Brands 模块的 API 接口,包括请求方法、URL、参数说明和响应格式。
|
||||
|
||||
## 目录
|
||||
|
||||
1. [通用说明](#通用说明)
|
||||
2. [品牌相关接口](#品牌相关接口)
|
||||
3. [产品相关接口](#产品相关接口)
|
||||
4. [活动相关接口](#活动相关接口)
|
||||
5. [WebSocket 接口](#websocket-接口)
|
||||
6. [状态轮询管理](#状态轮询管理)
|
||||
|
||||
## 通用说明
|
||||
|
||||
### 基础URL
|
||||
|
||||
所有 API 的基础 URL 为:`http://127.0.0.1:8000/api/`
|
||||
|
||||
### 认证方式
|
||||
|
||||
除特殊说明外,所有 API 都需要 Token 认证。请在请求头中添加:
|
||||
|
||||
```
|
||||
Authorization: Token <your_token>
|
||||
```
|
||||
|
||||
### 响应格式
|
||||
|
||||
所有 API 返回的数据格式统一为:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200, // 状态码,200表示成功,其他表示错误
|
||||
"message": "成功", // 状态描述
|
||||
"data": {} // 返回的数据,可能是对象、数组或null
|
||||
}
|
||||
```
|
||||
|
||||
## 品牌相关接口
|
||||
|
||||
### 获取品牌列表
|
||||
|
||||
- **URL**: `/brands/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取所有品牌的列表
|
||||
- **参数**: 无
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": [
|
||||
{
|
||||
"id": "uuid-string",
|
||||
"name": "品牌名称",
|
||||
"description": "品牌描述",
|
||||
"logo_url": "品牌Logo链接",
|
||||
"category": "品牌分类",
|
||||
"source": "来源",
|
||||
"collab_count": 10,
|
||||
"creators_count": 20,
|
||||
"campaign_id": "活动ID",
|
||||
"total_gmv_achieved": "1000.00",
|
||||
"total_views_achieved": "5000.00",
|
||||
"shop_overall_rating": "4.5",
|
||||
"dataset_id_list": ["id1", "id2"],
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z",
|
||||
"is_active": true
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 获取单个品牌详情
|
||||
|
||||
- **URL**: `/brands/{brand_id}/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取指定ID的品牌详细信息
|
||||
- **参数**:
|
||||
- `brand_id`: 品牌ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
"id": "uuid-string",
|
||||
"name": "品牌名称",
|
||||
"description": "品牌描述",
|
||||
"logo_url": "品牌Logo链接",
|
||||
"category": "品牌分类",
|
||||
"source": "来源",
|
||||
"collab_count": 10,
|
||||
"creators_count": 20,
|
||||
"campaign_id": "活动ID",
|
||||
"total_gmv_achieved": "1000.00",
|
||||
"total_views_achieved": "5000.00",
|
||||
"shop_overall_rating": "4.5",
|
||||
"dataset_id_list": ["id1", "id2"],
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z",
|
||||
"is_active": true,
|
||||
"products": [...], // 品牌关联的产品列表
|
||||
"campaigns": [...] // 品牌关联的活动列表
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 创建品牌
|
||||
|
||||
- **URL**: `/brands/`
|
||||
- **方法**: POST
|
||||
- **描述**: 创建新的品牌
|
||||
- **请求参数**:
|
||||
```json
|
||||
{
|
||||
"name": "品牌名称", // 必填
|
||||
"description": "品牌描述",
|
||||
"logo_url": "品牌Logo链接",
|
||||
"category": "品牌分类",
|
||||
"source": "来源"
|
||||
}
|
||||
```
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
"id": "uuid-string",
|
||||
"name": "品牌名称",
|
||||
"description": "品牌描述",
|
||||
// ... 其他字段
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 更新品牌
|
||||
|
||||
- **URL**: `/brands/{brand_id}/`
|
||||
- **方法**: PUT/PATCH
|
||||
- **描述**: 更新品牌信息
|
||||
- **参数**:
|
||||
- `brand_id`: 品牌ID (路径参数)
|
||||
- 请求体包含要更新的字段
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
// 更新后的品牌信息
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 删除品牌
|
||||
|
||||
- **URL**: `/brands/{brand_id}/`
|
||||
- **方法**: DELETE
|
||||
- **描述**: 删除品牌(软删除)
|
||||
- **参数**:
|
||||
- `brand_id`: 品牌ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "删除成功",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### 获取品牌产品列表
|
||||
|
||||
- **URL**: `/brands/{brand_id}/products/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取指定品牌下的所有产品
|
||||
- **参数**:
|
||||
- `brand_id`: 品牌ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": [
|
||||
// 产品列表
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 获取品牌活动列表
|
||||
|
||||
- **URL**: `/brands/{brand_id}/campaigns/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取指定品牌下的所有活动
|
||||
- **参数**:
|
||||
- `brand_id`: 品牌ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": [
|
||||
// 活动列表
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 获取品牌知识库ID列表
|
||||
|
||||
- **URL**: `/brands/{brand_id}/dataset_ids/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取指定品牌的所有知识库ID
|
||||
- **参数**:
|
||||
- `brand_id`: 品牌ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
"dataset_id_list": ["id1", "id2", "id3"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 产品相关接口
|
||||
|
||||
### 获取产品列表
|
||||
|
||||
- **URL**: `/products/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取所有产品列表
|
||||
- **参数**: 无
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": [
|
||||
{
|
||||
"id": "uuid-string",
|
||||
"brand": "品牌ID",
|
||||
"name": "产品名称",
|
||||
"description": "产品描述",
|
||||
"image_url": "产品图片",
|
||||
"pid": "产品ID",
|
||||
"commission_rate": "10.00",
|
||||
"open_collab": "5.00",
|
||||
"available_samples": 10,
|
||||
"sales_price_min": "50.00",
|
||||
"sales_price_max": "100.00",
|
||||
"stock": 100,
|
||||
"items_sold": 50,
|
||||
"product_rating": "4.5",
|
||||
"reviews_count": 20,
|
||||
"collab_creators": 5,
|
||||
"tiktok_shop": false,
|
||||
"dataset_id": "知识库ID",
|
||||
"external_id": "外部ID",
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z",
|
||||
"is_active": true
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 获取单个产品详情
|
||||
|
||||
- **URL**: `/products/{product_id}/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取指定ID的产品详情
|
||||
- **参数**:
|
||||
- `product_id`: 产品ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
// 产品详情
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 创建产品
|
||||
|
||||
- **URL**: `/products/`
|
||||
- **方法**: POST
|
||||
- **描述**: 创建新的产品
|
||||
- **请求参数**:
|
||||
```json
|
||||
{
|
||||
"brand": "品牌ID", // 必填
|
||||
"name": "产品名称", // 必填
|
||||
"description": "产品描述",
|
||||
"image_url": "产品图片",
|
||||
"pid": "产品ID",
|
||||
"commission_rate": 10.00,
|
||||
"dataset_id": "知识库ID" // 必填
|
||||
// ... 其他字段
|
||||
}
|
||||
```
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
// 创建的产品信息
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 更新产品
|
||||
|
||||
- **URL**: `/products/{product_id}/`
|
||||
- **方法**: PUT/PATCH
|
||||
- **描述**: 更新产品信息
|
||||
- **参数**:
|
||||
- `product_id`: 产品ID (路径参数)
|
||||
- 请求体包含要更新的字段
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
// 更新后的产品信息
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 删除产品
|
||||
|
||||
- **URL**: `/products/{product_id}/`
|
||||
- **方法**: DELETE
|
||||
- **描述**: 删除产品(软删除)
|
||||
- **参数**:
|
||||
- `product_id`: 产品ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "删除成功",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
## 活动相关接口
|
||||
|
||||
### 获取活动列表
|
||||
|
||||
- **URL**: `/campaigns/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取所有活动列表
|
||||
- **参数**: 无
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": [
|
||||
{
|
||||
"id": "活动ID",
|
||||
"brand": "品牌ID",
|
||||
"name": "活动名称",
|
||||
"description": "活动描述",
|
||||
"image_url": "活动图片",
|
||||
"service": "服务类型",
|
||||
"creator_type": "创作者类型",
|
||||
"creator_level": "创作者等级",
|
||||
"creator_category": "创作者分类",
|
||||
"creators_count": 10,
|
||||
"gmv": "GMV范围",
|
||||
"followers": "粉丝数范围",
|
||||
"views": "浏览量范围",
|
||||
"budget": "预算范围",
|
||||
"link_product": ["产品ID1", "产品ID2"],
|
||||
"start_date": "2023-01-01T00:00:00Z",
|
||||
"end_date": "2023-02-01T00:00:00Z",
|
||||
"dataset_id": "知识库ID",
|
||||
"external_id": "外部ID",
|
||||
"status": "待处理", // pending, accepted, rejected, completed, in_progress
|
||||
"gmv_achieved": "实现GMV",
|
||||
"views_achieved": "实现观看量",
|
||||
"video_link": "视频链接",
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z",
|
||||
"is_active": true
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 获取单个活动详情
|
||||
|
||||
- **URL**: `/campaigns/{campaign_id}/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取指定ID的活动详情
|
||||
- **参数**:
|
||||
- `campaign_id`: 活动ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
// 活动详情
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 创建活动
|
||||
|
||||
- **URL**: `/campaigns/`
|
||||
- **方法**: POST
|
||||
- **描述**: 创建新的活动
|
||||
- **请求参数**:
|
||||
```json
|
||||
{
|
||||
"brand": "品牌ID", // 必填
|
||||
"name": "活动名称", // 必填
|
||||
"description": "活动描述",
|
||||
"image_url": "活动图片",
|
||||
"service": "服务类型",
|
||||
"creator_type": "创作者类型",
|
||||
"dataset_id": "知识库ID", // 必填
|
||||
// ... 其他字段
|
||||
}
|
||||
```
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
// 创建的活动信息
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 更新活动
|
||||
|
||||
- **URL**: `/campaigns/{campaign_id}/`
|
||||
- **方法**: PUT/PATCH
|
||||
- **描述**: 更新活动信息
|
||||
- **参数**:
|
||||
- `campaign_id`: 活动ID (路径参数)
|
||||
- 请求体包含要更新的字段
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
// 更新后的活动信息
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 删除活动
|
||||
|
||||
- **URL**: `/campaigns/{campaign_id}/`
|
||||
- **方法**: DELETE
|
||||
- **描述**: 删除活动(软删除)
|
||||
- **参数**:
|
||||
- `campaign_id`: 活动ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "删除成功",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### 向活动添加产品
|
||||
|
||||
- **URL**: `/campaigns/{campaign_id}/add_product/`
|
||||
- **方法**: POST
|
||||
- **描述**: 将产品添加到活动中
|
||||
- **参数**:
|
||||
- `campaign_id`: 活动ID (路径参数)
|
||||
- 请求体:
|
||||
```json
|
||||
{
|
||||
"product_id": "产品ID"
|
||||
}
|
||||
```
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "产品添加成功",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### 从活动移除产品
|
||||
|
||||
- **URL**: `/campaigns/{campaign_id}/remove_product/`
|
||||
- **方法**: POST
|
||||
- **描述**: 从活动中移除产品
|
||||
- **参数**:
|
||||
- `campaign_id`: 活动ID (路径参数)
|
||||
- 请求体:
|
||||
```json
|
||||
{
|
||||
"product_id": "产品ID"
|
||||
}
|
||||
```
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "产品移除成功",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### 获取活动创作者列表
|
||||
|
||||
- **URL**: `/campaigns/{campaign_id}/creator_list/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取指定活动的创作者列表
|
||||
- **参数**:
|
||||
- `campaign_id`: 活动ID (路径参数)
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
"campaign": {
|
||||
"id": "活动ID",
|
||||
"name": "活动名称",
|
||||
"description": "活动描述",
|
||||
"image_url": "活动图片",
|
||||
"service": "服务类型",
|
||||
"creator_type": "创作者类型",
|
||||
"creator_level": "创作者等级",
|
||||
"creator_category": "创作者分类",
|
||||
"creators_count": 10,
|
||||
"gmv": "GMV范围",
|
||||
"followers": "粉丝数范围",
|
||||
"views": "浏览量范围",
|
||||
"budget": "预算范围",
|
||||
"start_date": "2023-01-01T00:00:00Z",
|
||||
"end_date": "2023-02-01T00:00:00Z",
|
||||
"status": "状态"
|
||||
},
|
||||
"creators": [
|
||||
{
|
||||
"id": "创作者ID",
|
||||
"name": "创作者名称",
|
||||
"category": "创作者分类",
|
||||
"followers": 5000,
|
||||
"gmv_generated": "1000.00",
|
||||
"views_generated": "5000",
|
||||
"pricing": "100.00",
|
||||
"status": "状态"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 获取WebSocket连接URL
|
||||
|
||||
- **URL**: `/campaigns/{campaign_id}/websocket_url/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取带有认证Token的WebSocket连接URL
|
||||
- **参数**:
|
||||
- `campaign_id`: 活动ID (路径参数)
|
||||
- 查询参数:
|
||||
- `product_id`: 可选,用于获取特定产品的WebSocket连接
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
"websocket_url": "ws://127.0.0.1:8000/ws/campaigns/12345/status/?token=abc123"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 获取当前Token信息
|
||||
|
||||
- **URL**: `/campaigns/token_info/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取当前用户的认证Token信息和WebSocket连接示例
|
||||
- **参数**: 无
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
"user_id": "用户ID",
|
||||
"email": "用户邮箱",
|
||||
"token": "认证Token",
|
||||
"expires_at": "过期时间",
|
||||
"websocket_example": {
|
||||
"campaign": "ws://127.0.0.1:8000/ws/campaigns/campaign_id/status/?token=abc123",
|
||||
"product": "ws://127.0.0.1:8000/ws/campaigns/campaign_id/status/?product_id=product_id&token=abc123"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## WebSocket 接口
|
||||
|
||||
### 建立活动状态WebSocket连接
|
||||
|
||||
- **URL**: `ws://127.0.0.1:8000/ws/campaigns/{campaign_id}/status/?token={token}`
|
||||
- **描述**: 建立WebSocket连接,获取活动状态的实时更新
|
||||
- **参数**:
|
||||
- `campaign_id`: 活动ID (路径参数)
|
||||
- 查询参数:
|
||||
- `token`: 用户认证Token (必填)
|
||||
- `product_id`: 可选,用于获取特定产品的状态
|
||||
- **连接成功后接收的数据格式**:
|
||||
```json
|
||||
{
|
||||
"campaign": {
|
||||
// 活动信息
|
||||
},
|
||||
"creators": [
|
||||
// 创作者列表
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### WebSocket连接JavaScript示例
|
||||
|
||||
```javascript
|
||||
// 获取WebSocket URL
|
||||
const response = await fetch(`http://127.0.0.1:8000/api/campaigns/${campaignId}/websocket_url/`);
|
||||
const data = await response.json();
|
||||
const wsUrl = data.data.websocket_url;
|
||||
|
||||
// 建立WebSocket连接
|
||||
const socket = new WebSocket(wsUrl);
|
||||
|
||||
// 连接打开事件
|
||||
socket.onopen = function(e) {
|
||||
console.log("WebSocket连接已建立");
|
||||
};
|
||||
|
||||
// 接收消息事件
|
||||
socket.onmessage = function(event) {
|
||||
const data = JSON.parse(event.data);
|
||||
console.log("接收到的数据:", data);
|
||||
// 处理接收到的数据
|
||||
};
|
||||
|
||||
// 错误事件
|
||||
socket.onerror = function(error) {
|
||||
console.error("WebSocket错误:", error);
|
||||
};
|
||||
|
||||
// 连接关闭事件
|
||||
socket.onclose = function(event) {
|
||||
console.log("WebSocket连接已关闭");
|
||||
};
|
||||
```
|
||||
|
||||
## 状态轮询管理
|
||||
|
||||
### 停止轮询
|
||||
|
||||
- **URL**: `/campaigns/{campaign_id}/stop_polling/`
|
||||
- **方法**: POST
|
||||
- **描述**: 停止指定活动的状态轮询
|
||||
- **参数**:
|
||||
- `campaign_id`: 活动ID (路径参数)
|
||||
- 请求体:
|
||||
```json
|
||||
{
|
||||
"product_id": "产品ID" // 可选,不提供则停止整个活动的轮询
|
||||
}
|
||||
```
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "轮询已停止",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### 获取活跃轮询任务
|
||||
|
||||
- **URL**: `/campaigns/active_polling_tasks/`
|
||||
- **方法**: GET
|
||||
- **描述**: 获取当前系统中所有活跃的轮询任务
|
||||
- **参数**: 无
|
||||
- **响应示例**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"data": {
|
||||
"active_tasks": [
|
||||
{
|
||||
"campaign_id": "活动ID",
|
||||
"product_id": "产品ID", // 如果存在
|
||||
"interval": 30, // 轮询间隔,单位为秒
|
||||
"last_poll": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
1056
daren_detail.md
Normal file
1056
daren_detail.md
Normal file
File diff suppressed because it is too large
Load Diff
371
discovery.md
Normal file
371
discovery.md
Normal file
@ -0,0 +1,371 @@
|
||||
# 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" // 创建日期
|
||||
}
|
||||
```
|
708
template.md
Normal file
708
template.md
Normal file
@ -0,0 +1,708 @@
|
||||
# 模板模块 API 文档
|
||||
|
||||
## 简介
|
||||
|
||||
模板模块(template)提供了一系列API,用于管理和使用各种消息、内容模板,支持按分类、平台、任务类型等维度管理模板。所有接口均需要身份验证,使用CustomTokenAuthentication进行认证。
|
||||
|
||||
本文档详细说明了模板模块中所有接口的使用方法、请求参数和响应结果。
|
||||
|
||||
## 目录
|
||||
|
||||
- [模板管理](#模板管理)
|
||||
- [模板分类管理](#模板分类管理)
|
||||
|
||||
## 模板管理
|
||||
|
||||
模板模块使用REST风格的API,通过TemplateViewSet提供了以下功能:
|
||||
|
||||
### 1. 获取模板列表
|
||||
|
||||
**接口说明**:获取所有模板的列表
|
||||
|
||||
**请求地址**:`GET /template/`
|
||||
|
||||
**查询参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| page | int | 否 | 分页页码,默认1 |
|
||||
| page_size | int | 否 | 每页显示数量,默认10,最大100 |
|
||||
| title | string | 否 | 按标题内容过滤(模糊匹配) |
|
||||
| content | string | 否 | 按正文内容过滤(模糊匹配) |
|
||||
| mission | string | 否 | 按任务类型过滤 |
|
||||
| platform | string | 否 | 按平台过滤 |
|
||||
| collaboration_type | string | 否 | 按合作模式过滤 |
|
||||
| service | string | 否 | 按服务类型过滤 |
|
||||
| category | int | 否 | 按分类ID过滤 |
|
||||
| category_name | string | 否 | 按分类名称过滤(模糊匹配) |
|
||||
| is_public | boolean | 否 | 按是否公开过滤 |
|
||||
| created_after | datetime | 否 | 按创建日期过滤(早于指定日期) |
|
||||
| created_before | datetime | 否 | 按创建日期过滤(晚于指定日期) |
|
||||
| search | string | 否 | 搜索标题和内容 |
|
||||
| ordering | string | 否 | 排序字段,例如:-created_at表示按创建时间降序排序 |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "获取模板列表成功",
|
||||
"data": {
|
||||
"count": 100,
|
||||
"next": "http://example.com/template/?page=2",
|
||||
"previous": null,
|
||||
"results": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "模板标题",
|
||||
"preview": "模板内容预览...",
|
||||
"category_name": "分类名称",
|
||||
"mission": "initial_contact",
|
||||
"mission_display": "初步联系",
|
||||
"platform": "tiktok",
|
||||
"platform_display": "TikTok",
|
||||
"service": "text",
|
||||
"service_display": "文本",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"collaboration_type_display": "付费推广",
|
||||
"is_public": true,
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
],
|
||||
"total_pages": 10,
|
||||
"current_page": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 获取模板详情
|
||||
|
||||
**接口说明**:获取单个模板的详细信息
|
||||
|
||||
**请求地址**:`GET /template/{id}/`
|
||||
|
||||
**路径参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| id | int | 是 | 模板ID |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "获取模板详情成功",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"title": "模板标题",
|
||||
"content": "模板完整内容...",
|
||||
"preview": "模板内容预览...",
|
||||
"category": {
|
||||
"id": 1,
|
||||
"name": "分类名称",
|
||||
"description": "分类描述",
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
},
|
||||
"mission": "initial_contact",
|
||||
"mission_display": "初步联系",
|
||||
"platform": "tiktok",
|
||||
"platform_display": "TikTok",
|
||||
"service": "text",
|
||||
"service_display": "文本",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"collaboration_type_display": "付费推广",
|
||||
"is_public": true,
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 创建模板
|
||||
|
||||
**接口说明**:创建新的模板
|
||||
|
||||
**请求地址**:`POST /template/`
|
||||
|
||||
**请求参数**:
|
||||
|
||||
```json
|
||||
{
|
||||
"title": "模板标题",
|
||||
"content": "模板完整内容...",
|
||||
"category": 1,
|
||||
"mission": "initial_contact",
|
||||
"platform": "tiktok",
|
||||
"service": "text",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"is_public": true
|
||||
}
|
||||
```
|
||||
|
||||
**参数说明**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| title | string | 是 | 模板标题 |
|
||||
| content | string | 是 | 模板内容 |
|
||||
| category | int | 是 | 分类ID |
|
||||
| mission | string | 否 | 任务类型,默认"initial_contact",可选值: initial_contact(初步联系), follow_up(跟进), negotiation(谈判), closing(成交), other(其他) |
|
||||
| platform | string | 否 | 平台,默认"tiktok",可选值: tiktok, instagram, youtube, facebook, twitter, other |
|
||||
| service | string | 否 | 服务类型,默认"text",可选值: voice(声优-交谈), text(文本), video(视频), image(图片), other(其他) |
|
||||
| collaboration_type | string | 否 | 合作模式,默认"paid_promotion",可选值: paid_promotion(付费推广), affiliate(联盟营销), sponsored_content(赞助内容), brand_ambassador(品牌大使), other(其他) |
|
||||
| is_public | boolean | 否 | 是否公开,默认true |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 201,
|
||||
"message": "模板创建成功",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"title": "模板标题",
|
||||
"content": "模板完整内容...",
|
||||
"category": 1,
|
||||
"mission": "initial_contact",
|
||||
"platform": "tiktok",
|
||||
"service": "text",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"is_public": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 更新模板
|
||||
|
||||
**接口说明**:更新已有的模板
|
||||
|
||||
**请求地址**:`PUT /template/{id}/` 或 `PATCH /template/{id}/`
|
||||
|
||||
**路径参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| id | int | 是 | 模板ID |
|
||||
|
||||
**请求参数**:
|
||||
- PUT请求需要提供完整的模板信息
|
||||
- PATCH请求可以只提供需要更新的字段
|
||||
|
||||
```json
|
||||
{
|
||||
"title": "更新后的模板标题",
|
||||
"content": "更新后的模板内容...",
|
||||
"category": 2,
|
||||
"mission": "follow_up",
|
||||
"platform": "instagram",
|
||||
"service": "voice",
|
||||
"collaboration_type": "affiliate",
|
||||
"is_public": false
|
||||
}
|
||||
```
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "模板更新成功",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"title": "更新后的模板标题",
|
||||
"content": "更新后的模板内容...",
|
||||
"category": 2,
|
||||
"mission": "follow_up",
|
||||
"platform": "instagram",
|
||||
"service": "voice",
|
||||
"collaboration_type": "affiliate",
|
||||
"is_public": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 5. 删除模板
|
||||
|
||||
**接口说明**:删除指定的模板
|
||||
|
||||
**请求地址**:`DELETE /template/{id}/`
|
||||
|
||||
**路径参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| id | int | 是 | 模板ID |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "模板删除成功",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### 6. 获取我的模板
|
||||
|
||||
**接口说明**:获取当前用户有权限查看的所有模板
|
||||
|
||||
**请求地址**:`GET /template/mine/`
|
||||
|
||||
**查询参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| page | int | 否 | 分页页码,默认1 |
|
||||
| page_size | int | 否 | 每页显示数量,默认10,最大100 |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "获取模板成功",
|
||||
"data": {
|
||||
"count": 50,
|
||||
"next": "http://example.com/template/mine/?page=2",
|
||||
"previous": null,
|
||||
"results": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "模板标题",
|
||||
"preview": "模板内容预览...",
|
||||
"category_name": "分类名称",
|
||||
"mission": "initial_contact",
|
||||
"mission_display": "初步联系",
|
||||
"platform": "tiktok",
|
||||
"platform_display": "TikTok",
|
||||
"service": "text",
|
||||
"service_display": "文本",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"collaboration_type_display": "付费推广",
|
||||
"is_public": true,
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
],
|
||||
"total_pages": 5,
|
||||
"current_page": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 7. 获取公开模板
|
||||
|
||||
**接口说明**:获取所有公开的模板
|
||||
|
||||
**请求地址**:`GET /template/public/`
|
||||
|
||||
**查询参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| page | int | 否 | 分页页码,默认1 |
|
||||
| page_size | int | 否 | 每页显示数量,默认10,最大100 |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "获取公开模板成功",
|
||||
"data": {
|
||||
"count": 30,
|
||||
"next": "http://example.com/template/public/?page=2",
|
||||
"previous": null,
|
||||
"results": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "模板标题",
|
||||
"preview": "模板内容预览...",
|
||||
"category_name": "分类名称",
|
||||
"mission": "initial_contact",
|
||||
"mission_display": "初步联系",
|
||||
"platform": "tiktok",
|
||||
"platform_display": "TikTok",
|
||||
"service": "text",
|
||||
"service_display": "文本",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"collaboration_type_display": "付费推广",
|
||||
"is_public": true,
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
],
|
||||
"total_pages": 3,
|
||||
"current_page": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 8. 按任务类型获取模板
|
||||
|
||||
**接口说明**:按任务类型筛选模板
|
||||
|
||||
**请求地址**:`GET /template/by_mission/`
|
||||
|
||||
**查询参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| mission | string | 是 | 任务类型,可选值: initial_contact(初步联系), follow_up(跟进), negotiation(谈判), closing(成交), other(其他) |
|
||||
| page | int | 否 | 分页页码,默认1 |
|
||||
| page_size | int | 否 | 每页显示数量,默认10,最大100 |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "按任务类型获取模板成功",
|
||||
"data": {
|
||||
"count": 20,
|
||||
"next": "http://example.com/template/by_mission/?mission=initial_contact&page=2",
|
||||
"previous": null,
|
||||
"results": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "初步联系模板",
|
||||
"preview": "模板内容预览...",
|
||||
"category_name": "分类名称",
|
||||
"mission": "initial_contact",
|
||||
"mission_display": "初步联系",
|
||||
"platform": "tiktok",
|
||||
"platform_display": "TikTok",
|
||||
"service": "text",
|
||||
"service_display": "文本",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"collaboration_type_display": "付费推广",
|
||||
"is_public": true,
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
],
|
||||
"total_pages": 2,
|
||||
"current_page": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 9. 按平台获取模板
|
||||
|
||||
**接口说明**:按平台筛选模板
|
||||
|
||||
**请求地址**:`GET /template/by_platform/`
|
||||
|
||||
**查询参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| platform | string | 是 | 平台,可选值: tiktok, instagram, youtube, facebook, twitter, other |
|
||||
| page | int | 否 | 分页页码,默认1 |
|
||||
| page_size | int | 否 | 每页显示数量,默认10,最大100 |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "按平台获取模板成功",
|
||||
"data": {
|
||||
"count": 15,
|
||||
"next": "http://example.com/template/by_platform/?platform=tiktok&page=2",
|
||||
"previous": null,
|
||||
"results": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "TikTok模板",
|
||||
"preview": "模板内容预览...",
|
||||
"category_name": "分类名称",
|
||||
"mission": "initial_contact",
|
||||
"mission_display": "初步联系",
|
||||
"platform": "tiktok",
|
||||
"platform_display": "TikTok",
|
||||
"service": "text",
|
||||
"service_display": "文本",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"collaboration_type_display": "付费推广",
|
||||
"is_public": true,
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
],
|
||||
"total_pages": 2,
|
||||
"current_page": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 10. 按合作方式获取模板
|
||||
|
||||
**接口说明**:按合作方式筛选模板
|
||||
|
||||
**请求地址**:`GET /template/by_collaboration/`
|
||||
|
||||
**查询参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| collaboration | string | 是 | 合作模式,可选值: paid_promotion(付费推广), affiliate(联盟营销), sponsored_content(赞助内容), brand_ambassador(品牌大使), other(其他) |
|
||||
| page | int | 否 | 分页页码,默认1 |
|
||||
| page_size | int | 否 | 每页显示数量,默认10,最大100 |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "按合作方式获取模板成功",
|
||||
"data": {
|
||||
"count": 25,
|
||||
"next": "http://example.com/template/by_collaboration/?collaboration=paid_promotion&page=2",
|
||||
"previous": null,
|
||||
"results": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "付费推广模板",
|
||||
"preview": "模板内容预览...",
|
||||
"category_name": "分类名称",
|
||||
"mission": "initial_contact",
|
||||
"mission_display": "初步联系",
|
||||
"platform": "tiktok",
|
||||
"platform_display": "TikTok",
|
||||
"service": "text",
|
||||
"service_display": "文本",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"collaboration_type_display": "付费推广",
|
||||
"is_public": true,
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
],
|
||||
"total_pages": 3,
|
||||
"current_page": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 11. 按服务类型获取模板
|
||||
|
||||
**接口说明**:按服务类型筛选模板
|
||||
|
||||
**请求地址**:`GET /template/by_service/`
|
||||
|
||||
**查询参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| service | string | 是 | 服务类型,可选值: voice(声优-交谈), text(文本), video(视频), image(图片), other(其他) |
|
||||
| page | int | 否 | 分页页码,默认1 |
|
||||
| page_size | int | 否 | 每页显示数量,默认10,最大100 |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "按服务类型获取模板成功",
|
||||
"data": {
|
||||
"count": 18,
|
||||
"next": "http://example.com/template/by_service/?service=text&page=2",
|
||||
"previous": null,
|
||||
"results": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "文本模板",
|
||||
"preview": "模板内容预览...",
|
||||
"category_name": "分类名称",
|
||||
"mission": "initial_contact",
|
||||
"mission_display": "初步联系",
|
||||
"platform": "tiktok",
|
||||
"platform_display": "TikTok",
|
||||
"service": "text",
|
||||
"service_display": "文本",
|
||||
"collaboration_type": "paid_promotion",
|
||||
"collaboration_type_display": "付费推广",
|
||||
"is_public": true,
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
],
|
||||
"total_pages": 2,
|
||||
"current_page": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 模板分类管理
|
||||
|
||||
模板分类管理使用REST风格的API,通过TemplateCategoryViewSet提供了以下功能:
|
||||
|
||||
### 1. 获取分类列表
|
||||
|
||||
**接口说明**:获取所有模板分类的列表
|
||||
|
||||
**请求地址**:`GET /template/categories/`
|
||||
|
||||
**查询参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| page | int | 否 | 分页页码,默认1 |
|
||||
| page_size | int | 否 | 每页显示数量,默认10,最大100 |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "获取模板分类列表成功",
|
||||
"data": {
|
||||
"count": 8,
|
||||
"next": null,
|
||||
"previous": null,
|
||||
"results": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "分类名称",
|
||||
"description": "分类描述",
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
],
|
||||
"total_pages": 1,
|
||||
"current_page": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 获取分类详情
|
||||
|
||||
**接口说明**:获取单个模板分类的详细信息
|
||||
|
||||
**请求地址**:`GET /template/categories/{id}/`
|
||||
|
||||
**路径参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| id | int | 是 | 分类ID |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "获取模板分类详情成功",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"name": "分类名称",
|
||||
"description": "分类描述",
|
||||
"created_at": "2023-01-01T00:00:00Z",
|
||||
"updated_at": "2023-01-01T00:00:00Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 3. 创建分类
|
||||
|
||||
**接口说明**:创建新的模板分类
|
||||
|
||||
**请求地址**:`POST /template/categories/`
|
||||
|
||||
**请求参数**:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "新分类名称",
|
||||
"description": "新分类描述"
|
||||
}
|
||||
```
|
||||
|
||||
**参数说明**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| name | string | 是 | 分类名称 |
|
||||
| description | string | 否 | 分类描述 |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 201,
|
||||
"message": "模板分类创建成功",
|
||||
"data": {
|
||||
"id": 2,
|
||||
"name": "新分类名称",
|
||||
"description": "新分类描述",
|
||||
"created_at": "2023-01-02T00:00:00Z",
|
||||
"updated_at": "2023-01-02T00:00:00Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 更新分类
|
||||
|
||||
**接口说明**:更新已有的模板分类
|
||||
|
||||
**请求地址**:`PUT /template/categories/{id}/` 或 `PATCH /template/categories/{id}/`
|
||||
|
||||
**路径参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| id | int | 是 | 分类ID |
|
||||
|
||||
**请求参数**:
|
||||
- PUT请求需要提供完整的分类信息
|
||||
- PATCH请求可以只提供需要更新的字段
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "更新后的分类名称",
|
||||
"description": "更新后的分类描述"
|
||||
}
|
||||
```
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "模板分类更新成功",
|
||||
"data": {
|
||||
"id": 2,
|
||||
"name": "更新后的分类名称",
|
||||
"description": "更新后的分类描述",
|
||||
"created_at": "2023-01-02T00:00:00Z",
|
||||
"updated_at": "2023-01-03T00:00:00Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 5. 删除分类
|
||||
|
||||
**接口说明**:删除指定的模板分类
|
||||
|
||||
**请求地址**:`DELETE /template/categories/{id}/`
|
||||
|
||||
**路径参数**:
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|-------|------|-----|------|
|
||||
| id | int | 是 | 分类ID |
|
||||
|
||||
**响应结果**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "模板分类删除成功",
|
||||
"data": null
|
||||
}
|
||||
```
|
Loading…
Reference in New Issue
Block a user