people-reading/backend/app/core/config.py
2026-05-12 20:50:15 +08:00

40 lines
1.1 KiB
Python

from functools import lru_cache
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
app_name: str = "AI Palm Reading"
environment: str = "development"
database_url: str = "sqlite+aiosqlite:///./palm_reading.db"
secret_key: str = "change-me-in-production"
access_token_expire_minutes: int = 60 * 24 * 30
cors_origins: list[str] = Field(default_factory=lambda: ["*"])
daily_reading_limit: int = 5
openai_api_key: str | None = None
openai_base_url: str | None = None
openai_model: str = "gpt-4.1-mini"
openai_image_model: str = "gpt-image-2"
openai_timeout_seconds: float = 180
share_image_mode: str = "ai"
wechat_app_id: str | None = None
wechat_app_secret: str | None = None
wechat_mock_login: bool = True
upload_dir: str = "./storage/uploads"
image_retention_days: int = 7
max_image_mb: int = 8
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8")
@lru_cache
def get_settings() -> Settings:
return Settings()
settings = get_settings()