from pathlib import Path from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore") app_name: str = "Voice-Agent" app_host: str = "0.0.0.0" app_port: int = 8000 upload_dir: Path = Path("/var/lib/voice-agent/uploads") result_dir: Path = Path("/var/lib/voice-agent/results") db_url: str = "sqlite:////var/lib/voice-agent/voice-agent.db" mac_api_url: str = "http://192.168.85.10:8080" mac_api_timeout: int = 1800 max_upload_mb: int = 500 allowed_exts: str = "mp3,wav,m4a,mp4,ogg,flac" @property def allowed_ext_set(self) -> set[str]: return {e.strip().lower().lstrip(".") for e in self.allowed_exts.split(",") if e.strip()} settings = Settings() settings.upload_dir.mkdir(parents=True, exist_ok=True) settings.result_dir.mkdir(parents=True, exist_ok=True)