import os from pathlib import Path from typing import Literal from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): """应用配置,从环境变量加载.""" # 安全配置 encrypt_key: str # AES-256 密钥 (base64) api_token: str # API 认证 Token # 路径配置 data_dir: Path = Path('./data') # 服务器配置 host: str = '0.0.0.0' port: int = 8000 model_config = SettingsConfigDict( env_prefix='GM_', env_file='.env', env_file_encoding='utf-8', ) @property def db_path(self) -> Path: """SQLite 数据库路径.""" return self.data_dir / 'git_manager.db' @property def ssh_keys_dir(self) -> Path: """SSH 密钥存储目录.""" return self.data_dir / 'ssh_keys' @property def repos_dir(self) -> Path: """仓库镜像存储目录.""" return self.data_dir / 'repos' settings = Settings()