from dataclasses import dataclass from functools import lru_cache import os def _int_env(name: str, default: int) -> int: raw = os.getenv(name) if raw is None or raw == "": return default return int(raw) @dataclass(frozen=True) class Settings: app_name: str = os.getenv("APP_NAME", "YG Fine-Tune Platform API") app_env: str = os.getenv("APP_ENV", "local") api_prefix: str = os.getenv("API_PREFIX", "/api") log_level: str = os.getenv("LOG_LEVEL", "INFO") log_dir: str = os.getenv("LOG_DIR", "./logs") log_file_prefix: str = os.getenv("LOG_FILE_PREFIX", "backend") log_error_file_prefix: str = os.getenv("LOG_ERROR_FILE_PREFIX", "error") log_max_bytes: int = _int_env("LOG_MAX_BYTES", 20 * 1024 * 1024) log_retention_days: int = _int_env("LOG_RETENTION_DAYS", 10) @lru_cache def get_settings() -> Settings: return Settings()