urmi-ai/backend/app/config.py
2026-10-02 12:15:27 +05:30

49 lines
1.9 KiB
Python

from pydantic import computed_field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
app_name: str = "Urmi API"
environment: str = "development"
database_url: str = "postgresql+psycopg://urmi:urmi@localhost:5432/urmi"
frontend_origin: str = "http://localhost:5173"
# Comma-separated browser origins for CORS (defaults to frontend_origin only)
cors_origins: str = ""
auth_secret: str = "change-me-in-production"
auth_cookie_secure: bool = False
access_token_minutes: int = 60 * 24 * 7
google_client_id: str = ""
google_client_secret: str = ""
google_redirect_uri: str = "http://localhost:8000/api/v1/auth/google/callback"
admin_username: str = "root"
admin_password: str = "Nishtha#01"
upload_dir: str = "uploads"
kyc_template_path: str = "assets/kyc-template.docx"
dlt_loa_template_path: str = "assets/dlt-loa-template.docx"
max_upload_bytes: int = 10 * 1024 * 1024
ultronsms_base_url: str = "https://ultronsms.com"
ultronsms_user: str = ""
ultronsms_password: str = ""
redis_url: str = "redis://localhost:6379/0"
voice_relay_public_url: str = "ws://localhost:8000/api/v1/voice"
bonvoice_token: str = ""
bonvoice_api_url: str = "https://backend.pbx.bonvoice.com/autoDialManagement/autoCallBridging/"
bonvoice_media_allowlist: str = "103.131.25.5"
voice_session_ttl_seconds: int = 600
model_config = SettingsConfigDict(
env_file=(".env", "../.env"),
env_file_encoding="utf-8",
extra="ignore",
)
@computed_field # type: ignore[prop-decorator]
@property
def cors_allowed_origins(self) -> list[str]:
configured = [item.strip() for item in self.cors_origins.split(",") if item.strip()]
if configured:
return configured
return [self.frontend_origin]
settings = Settings()