common.py 850 B

123456789101112131415161718192021222324252627282930
  1. from __future__ import annotations
  2. """公共Pydantic模型:提供AppModel基类(统一配置)与SourceMetadata第三方数据来源元数据。"""
  3. from datetime import datetime,timezone
  4. from pydantic import BaseModel,Field,ConfigDict
  5. def utc_now()->datetime:
  6. """返回带时区的 UTC时间。"""
  7. return datetime.now(timezone.utc)
  8. class AppModel(BaseModel):
  9. """项目中所有 Pydantic 模型的基础类。"""
  10. model_config = ConfigDict(
  11. extra="ignore",
  12. str_strip_whitespace = True,
  13. validate_assignment = True,
  14. )
  15. class SourceMetadata(AppModel):
  16. """第三方数据来源信息。"""
  17. provider: str
  18. status: str | None = None
  19. search_id: str | None = None
  20. retrieved_at: datetime = Field(default_factory=utc_now)
  21. currency:str | None = None
  22. is_cached:bool | None = None