Spaces:
Running
Running
| from functools import lru_cache | |
| from typing import Literal | |
| from pydantic import Field, field_validator | |
| from pydantic_settings import BaseSettings, SettingsConfigDict | |
| DEFAULT_CORS_ORIGINS = ("http://localhost:5173", "http://127.0.0.1:5173") | |
| class Settings(BaseSettings): | |
| provider_mode: Literal["mock", "cloud"] = "mock" | |
| anthropic_api_key: str = "" | |
| openai_api_key: str = "" | |
| admin_token: str = "change-me" | |
| confidence_threshold: float = Field(default=0.7, ge=0, le=1) | |
| retention_days: int = Field(default=30, ge=0) | |
| max_turn_audio_bytes: int = Field(default=10 * 1024 * 1024, ge=1) | |
| database_url: str = "sqlite:///./carepath.db" | |
| openai_transcribe_model: str = "gpt-4o-transcribe" | |
| claude_mt_model: str = "claude-sonnet-5" | |
| claude_reviewer_model: str = "claude-sonnet-5" | |
| provider_timeout_seconds: float = 30 | |
| cors_origins: tuple[str, ...] = DEFAULT_CORS_ORIGINS | |
| model_config = SettingsConfigDict( | |
| env_file=("../.env", ".env"), enable_decoding=False, extra="ignore" | |
| ) | |
| def parse_cors_origins(cls, value: object) -> tuple[str, ...]: | |
| if isinstance(value, str): | |
| origins = (item.strip().rstrip("/") for item in value.split(",")) | |
| return tuple(origin for origin in origins if origin) | |
| return tuple(value) if value else () | |
| def get_settings() -> Settings: | |
| return Settings() | |