Подключаем tradein-backend к GlitchTip (Sentry-совместимый, уже на сервере). Необработанные исключения FastAPI улетают в дашборд — баг estimate-500 (#388/#389) был бы виден сразу с трейсбеком. - sentry-sdk в зависимостях. - main.py — sentry_sdk.init(), env-gated: пусто GLITCHTIP_DSN → off. - config.glitchtip_dsn + GLITCHTIP_DSN в docker-compose.prod.yml. - traces_sample_rate=0 (только ошибки), send_default_pii=False. Активация: создать проект в GlitchTip → DSN в .env.runtime.
30 lines
1.4 KiB
Python
30 lines
1.4 KiB
Python
"""Минимальный 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")
|
||
|
||
database_url: str = "postgresql+psycopg://tradein:tradein@postgres:5432/tradein"
|
||
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)
|
||
contact_email: str = "erginrajpopxbe@outlook.com" # для User-Agent в Nominatim (Nominatim Usage Policy)
|
||
|
||
# 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
|
||
|
||
|
||
settings = Settings()
|