Files
yu-zhi-ran/platform/backend/app/schemas.py
T

54 lines
1.4 KiB
Python

from pydantic import BaseModel
from datetime import datetime, date
from typing import Optional, List, Dict, Any
class TopicBase(BaseModel):
id: str
title: str
field: str
priority_score: int = 0
status: str = "pending"
compliance_score: Optional[int] = None
ready_at: Optional[date] = None
published_at: Optional[date] = None
platform_urls: Optional[Dict[str, str]] = None
class TopicResponse(TopicBase):
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
class Config:
from_attributes = True
class ArticleBase(BaseModel):
id: str
topic_id: str
platform: str
file_path: str
status: str = "draft"
compliance_score: Optional[int] = None
created_at: Optional[datetime] = None
class ArticleResponse(ArticleBase):
class Config:
from_attributes = True
class SystemStatus(BaseModel):
total_topics: int
topics_by_status: Dict[str, int]
ready_topics: List[TopicResponse]
today_articles: int
compliance_rate: float
last_optimization: Optional[datetime] = None
execution_time: Optional[float] = None # 任务执行耗时(秒)
class OptimizationRequest(BaseModel):
topic_ids: Optional[List[str]] = None # None表示全部
class PublishRequest(BaseModel):
topic_id: str
platform_urls: Dict[str, str] # {"zhihu": "...", "wechat": "...", "xiaohongshu": "..."}
class BatchPublishRequest(BaseModel):
date: str # YYYY-MM-DD