from pydantic import BaseModel, Field, field_validator from typing import List, Optional, Any class ChannelScore(BaseModel): """ 对应 API 中的 channel_score 使用 extra='allow' 以应对未来微信增加新字段 """ total_score: int = 0 finder_score: int = 0 query_score: int = 0 mpdoc_score: int = 0 class Config: extra = 'allow' class TrendItem(BaseModel): """单日数据""" ymd: str channel_score: ChannelScore @field_validator('ymd') def validate_date(cls, v): if len(v) != 8: raise ValueError("Date format error") return v class ApiResponse(BaseModel): """API 响应外层""" code: int msg: Optional[str] = None data: Optional[dict] = None @property def is_success(self): return self.code == 0 and self.data is not None