""" 配置管理 """ import os from pathlib import Path from dotenv import load_dotenv # 加载环境变量 env_path = Path(__file__).parent.parent / '.env' load_dotenv(dotenv_path=env_path) class Settings: """应用配置""" # 数据库配置 DB_HOST: str = os.getenv("DB_HOST", "localhost") DB_PORT: int = int(os.getenv("DB_PORT", "3306")) DB_USER: str = os.getenv("DB_USER", "root") DB_PASSWORD: str = os.getenv("DB_PASSWORD", "") DB_NAME: str = os.getenv("DB_NAME", "buff") # 数据库URL @property def DATABASE_URL(self) -> str: return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4" # 应用配置 APP_ENV: str = os.getenv("APP_ENV", "development") DEBUG: bool = os.getenv("DEBUG", "False").lower() == "true" SECRET_KEY: str = os.getenv("SECRET_KEY", "your-secret-key-change-in-production") # 加密配置 ENCRYPT_ENABLED: bool = os.getenv("ENCRYPT_ENABLED", "true").lower() == "true" KEY_ROTATION_DAYS: int = int(os.getenv("KEY_ROTATION_DAYS", "10")) # 日志配置 LOG_LEVEL: str = os.getenv("LOG_LEVEL", "DEBUG") # API配置 API_V1_PREFIX: str = "/api" ADMIN_PREFIX: str = "/admin" # Redis配置 REDIS_HOST: str = os.getenv("REDIS_HOST", "47.99.164.66") REDIS_PORT: int = int(os.getenv("REDIS_PORT", "16379")) REDIS_DATABASE: int = int(os.getenv("REDIS_DATABASE", "11")) REDIS_PASSWORD: str = os.getenv("REDIS_PASSWORD", "Hzdyjs@123456") REDIS_TIMEOUT: int = int(os.getenv("REDIS_TIMEOUT", "30")) REDIS_SSL_ENABLED: bool = os.getenv("REDIS_SSL_ENABLED", "false").lower() == "true" # Redis URL @property def REDIS_URL(self) -> str: if self.REDIS_SSL_ENABLED: return f"rediss://:{self.REDIS_PASSWORD}@{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DATABASE}" else: return f"redis://:{self.REDIS_PASSWORD}@{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DATABASE}" settings = Settings()