config.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """应用配置:从 .env / 环境变量加载。"""
  2. from pydantic_settings import BaseSettings, SettingsConfigDict
  3. class Settings(BaseSettings):
  4. """所有可配置项;不允许在源码中硬编码凭据。"""
  5. model_config = SettingsConfigDict(
  6. env_file=".env",
  7. env_file_encoding="utf-8",
  8. case_sensitive=False,
  9. extra="ignore",
  10. )
  11. # Zendesk 凭据
  12. zendesk_subdomain: str
  13. zendesk_email: str
  14. zendesk_api_token: str
  15. # 业务默认值
  16. default_locale: str = "en-us"
  17. # 缓存刷新时间(本地时区,24 小时制)
  18. cache_refresh_hour: int = 0
  19. cache_refresh_minute: int = 0
  20. # HTTP
  21. http_timeout: int = 30
  22. @property
  23. def zendesk_base_url(self) -> str:
  24. return f"https://{self.zendesk_subdomain}.zendesk.com/api/v2/help_center"
  25. @property
  26. def zendesk_auth(self) -> tuple[str, str]:
  27. # Zendesk API Token 鉴权格式:("{email}/token", api_token)
  28. return (f"{self.zendesk_email}/token", self.zendesk_api_token)
  29. settings = Settings()