import os from pydantic_settings import BaseSettings class Settings(BaseSettings): """全局配置类,从环境变量加载所有应用配置项,支持通过 .env 文件覆盖。""" DATABASE_URL: str = os.getenv( "DATABASE_URL", "postgresql+asyncpg://enterprise:enterprise123@localhost:5432/enterprise_ai", ) # PostgreSQL 数据库连接 URL(asyncpg 异步驱动) REDIS_URL: str = os.getenv("REDIS_URL", "redis://:redis123@localhost:6379/0") # Redis 连接 URL JWT_SECRET: str = os.getenv("JWT_SECRET", "dev-secret-change-me") # JWT 令牌签名密钥 JWT_ALGORITHM: str = "HS256" # JWT 签名算法 JWT_EXPIRE_MINUTES: int = 1440 # JWT 令牌过期时间(分钟),默认 24 小时 LLM_API_KEY: str = os.getenv("LLM_API_KEY", "sk-placeholder") # 大语言模型 API 密钥 LLM_API_BASE: str = os.getenv("LLM_API_BASE", "https://api.openai.com/v1") # 大语言模型 API 基础地址 LLM_MODEL: str = os.getenv("LLM_MODEL", "gpt-4o-mini") # 默认使用的大语言模型名称 RATE_LIMIT_PER_MINUTE: int = int(os.getenv("RATE_LIMIT_PER_MINUTE", "60")) # 每分钟请求速率限制 RATE_LIMIT_BURST: int = int(os.getenv("RATE_LIMIT_BURST", "10")) # 速率限制突发上限 UPLOAD_DIR: str = os.getenv("UPLOAD_DIR", "./uploads") # 文件上传存储目录 MAX_UPLOAD_SIZE_MB: int = int(os.getenv("MAX_UPLOAD_SIZE_MB", "50")) # 最大上传文件大小(MB) WECOM_CORP_ID: str = os.getenv("WECOM_CORP_ID", "") # 企业微信 CorpID WECOM_APP_SECRET: str = os.getenv("WECOM_APP_SECRET", "") # 企业微信应用 Secret WECOM_TOKEN: str = os.getenv("WECOM_TOKEN", "") # 企业微信 Token(用于回调验证) WECOM_AES_KEY: str = os.getenv("WECOM_AES_KEY", "") # 企业微信 AES 密钥(用于回调消息解密) METRICS_COLLECTION_INTERVAL: int = 60 # 系统指标采集间隔(秒) settings = Settings() # 全局配置单例实例