# app/config.py import os from functools import lru_cache class Settings: """ 后端配置: - APP_ENV: dev / prod - DB_*: 数据库连接参数 - 默认库:dev 用 LLZQ-test;prod 用 LLZQ """ def __init__(self) -> None: self.app_env = os.getenv("APP_ENV", "dev").lower() self.db_host = os.getenv("DB_HOST", "127.0.0.1") self.db_port = int(os.getenv("DB_PORT", "5432")) self.db_user = os.getenv("DB_USER", "local-Python") self.db_password = os.getenv("DB_PASSWORD", "") # 默认连接的库,根据 APP_ENV 决定 if self.app_env == "prod": self.db_name_default = "LLZQ" else: self.db_name_default = "LLZQ-test" self.db_schema = os.getenv("DB_SCHEMA", "XCX") def resolve_db_name(self, env_header: str | None) -> str: """ 根据前端传来的 X-LLZQ-Env 决定最终使用哪个 DB: - "prod" => LLZQ - 其它/为空 => LLZQ-test """ if env_header is None: return self.db_name_default env_header = env_header.lower() if env_header == "prod": return "LLZQ" else: return "LLZQ-test" @lru_cache() def get_settings() -> Settings: return Settings()