api_schema.py 853 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. from pydantic import BaseModel, Field, field_validator
  2. from typing import List, Optional, Any
  3. class ChannelScore(BaseModel):
  4. """
  5. 对应 API 中的 channel_score
  6. 使用 extra='allow' 以应对未来微信增加新字段
  7. """
  8. total_score: int = 0
  9. finder_score: int = 0
  10. query_score: int = 0
  11. mpdoc_score: int = 0
  12. class Config:
  13. extra = 'allow'
  14. class TrendItem(BaseModel):
  15. """单日数据"""
  16. ymd: str
  17. channel_score: ChannelScore
  18. @field_validator('ymd')
  19. def validate_date(cls, v):
  20. if len(v) != 8: raise ValueError("Date format error")
  21. return v
  22. class ApiResponse(BaseModel):
  23. """API 响应外层"""
  24. code: int
  25. msg: Optional[str] = None
  26. data: Optional[dict] = None
  27. @property
  28. def is_success(self):
  29. return self.code == 0 and self.data is not None