from pydantic_settings import BaseSettings from typing import Optional, List import os from dotenv import load_dotenv load_dotenv() class Settings(BaseSettings): API_V1_STR: str = "/api/v1" PROJECT_NAME: str = "美搭Meida API" PROJECT_DESCRIPTION: str = "美搭Meida服务后端API" PROJECT_VERSION: str = "0.1.0" # CORS设置 BACKEND_CORS_ORIGINS: List[str] = ["*"] # 数据库设置 DB_HOST: str = os.getenv("DB_HOST", "localhost") DB_PORT: str = os.getenv("DB_PORT", "3306") DB_USER: str = os.getenv("DB_USER", "root") DB_PASSWORD: str = os.getenv("DB_PASSWORD", "password") DB_NAME: str = os.getenv("DB_NAME", "meida") DB_ECHO: bool = os.getenv("DB_ECHO", "False").lower() == "true" # DashScope API密钥 DASHSCOPE_API_KEY: str = os.getenv("DASHSCOPE_API_KEY", "") DASHSCOPE_MODEL: str = os.getenv("DASHSCOPE_MODEL", "qwen-max") # 安全设置 SECRET_KEY: str = os.getenv("SECRET_KEY", "your-secret-key-for-jwt-please-change-in-production") ALGORITHM: str = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 7 # 7天 # 微信设置 WECHAT_APP_ID: str = os.getenv("WECHAT_APP_ID", "") WECHAT_APP_SECRET: str = os.getenv("WECHAT_APP_SECRET", "") # 腾讯云COS配置 COS_SECRET_ID: str = os.getenv("COS_SECRET_ID", "") COS_SECRET_KEY: str = os.getenv("COS_SECRET_KEY", "") COS_REGION: str = os.getenv("COS_REGION", "ap-guangzhou") COS_BUCKET: str = os.getenv("COS_BUCKET", "") @property def cors_origins(self): """获取CORS来源列表""" if isinstance(self.BACKEND_CORS_ORIGINS, str) and self.BACKEND_CORS_ORIGINS == "*": return ["*"] elif isinstance(self.BACKEND_CORS_ORIGINS, list): return self.BACKEND_CORS_ORIGINS return [] class Config: env_file = ".env" case_sensitive = True settings = Settings()