"""Минимальный settings для standalone trade-in MVP.""" from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore") # required — задаётся через env DATABASE_URL. Нет дефолта: fail-fast при старте # если переменная не задана (C-3 security audit). database_url: str cors_origins: list[str] = ["http://localhost", "http://localhost:3000", "http://localhost:8080"] environment: str = "dev" # Geocoder yandex_geocoder_key: str | None = None # 25K req/day free после регистрации yandex_suggest_key: str | None = None # для frontend autocomplete (proxy через backend) # для User-Agent в Nominatim (Nominatim Usage Policy) contact_email: str = "erginrajpopxbe@outlook.com" # Public URL — для QR-кода в PDF, shareable links, etc. public_url: str = "http://127.0.0.1:8080" # Admin token — защищает /api/v1/admin/* (scrape, geocode-missing). # Пусто = эндпоинты открыты (dev). В prod задаётся через env ADMIN_TOKEN. admin_token: str | None = None # GlitchTip DSN — мониторинг ошибок (Sentry-совместимый). #396. # Пусто = мониторинг выключен (dev). В prod — env GLITCHTIP_DSN из .env.runtime. glitchtip_dsn: str | None = None # Ключ шифрования для pgp_sym_encrypt (Cian session cookies). # Задаётся через env COOKIE_ENCRYPTION_KEY. Пусто = шифрование не работает. cookie_encryption_key: str = "" settings = Settings()