- Brief 支持代理商附件上传 (迁移 007) - 项目新增 platform 字段 (迁移 008),前端创建/展示平台信息 - 修复 AI 规则解析:处理中文引号导致 JSON 解析失败的问题 - 修复消息中心崩溃:补全后端消息类型映射 + fallback 保护 - 项目创建时自动发送消息通知 - .gitignore 排除 backend/data/ 数据库文件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
"""
|
||
Brief 相关 Schema
|
||
"""
|
||
from typing import Optional, List
|
||
from datetime import datetime
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
# ===== 请求 =====
|
||
|
||
class BriefCreateRequest(BaseModel):
|
||
"""创建/更新 Brief 请求"""
|
||
file_url: Optional[str] = None
|
||
file_name: Optional[str] = None
|
||
selling_points: Optional[List[dict]] = None
|
||
blacklist_words: Optional[List[dict]] = None
|
||
competitors: Optional[List[str]] = None
|
||
brand_tone: Optional[str] = None
|
||
min_duration: Optional[int] = None
|
||
max_duration: Optional[int] = None
|
||
other_requirements: Optional[str] = None
|
||
attachments: Optional[List[dict]] = None
|
||
agency_attachments: Optional[List[dict]] = None
|
||
|
||
|
||
class BriefUpdateRequest(BaseModel):
|
||
"""更新 Brief 请求"""
|
||
file_url: Optional[str] = None
|
||
file_name: Optional[str] = None
|
||
selling_points: Optional[List[dict]] = None
|
||
blacklist_words: Optional[List[dict]] = None
|
||
competitors: Optional[List[str]] = None
|
||
brand_tone: Optional[str] = None
|
||
min_duration: Optional[int] = None
|
||
max_duration: Optional[int] = None
|
||
other_requirements: Optional[str] = None
|
||
attachments: Optional[List[dict]] = None
|
||
agency_attachments: Optional[List[dict]] = None
|
||
|
||
|
||
class AgencyBriefUpdateRequest(BaseModel):
|
||
"""代理商更新 Brief 请求(仅允许更新 agency_attachments)"""
|
||
agency_attachments: Optional[List[dict]] = None
|
||
|
||
|
||
# ===== 响应 =====
|
||
|
||
class BriefResponse(BaseModel):
|
||
"""Brief 响应"""
|
||
id: str
|
||
project_id: str
|
||
project_name: Optional[str] = None
|
||
file_url: Optional[str] = None
|
||
file_name: Optional[str] = None
|
||
selling_points: Optional[List[dict]] = None
|
||
blacklist_words: Optional[List[dict]] = None
|
||
competitors: Optional[List[str]] = None
|
||
brand_tone: Optional[str] = None
|
||
min_duration: Optional[int] = None
|
||
max_duration: Optional[int] = None
|
||
other_requirements: Optional[str] = None
|
||
attachments: Optional[List[dict]] = None
|
||
agency_attachments: Optional[List[dict]] = None
|
||
created_at: datetime
|
||
updated_at: datetime
|
||
|
||
class Config:
|
||
from_attributes = True
|