tranth3truong's picture
Deploy public Scribe-only CarePath Space
cc678b9
Raw
History Blame Contribute Delete
1.46 kB
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"
)
@field_validator("cors_origins", mode="before")
@classmethod
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 ()
@lru_cache
def get_settings() -> Settings:
return Settings()