from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8") APP_NAME: str = "VideoGen API" APP_VERSION: str = "1.0.0" DEBUG: bool = False SECRET_KEY: str = "change-me" DATABASE_URL: str = "sqlite+aiosqlite:///./videogen.db" REDIS_URL: str = "" # Leave empty to disable Redis (rate limiting, captcha) JWT_ALGORITHM: str = "HS256" JWT_EXPIRE_MINUTES: int = 1440 JWT_EXPIRE_REMEMBER_MINUTES: int = 10080 SEEDANCE_API_KEY: str = "" SEEDANCE_API_BASE: str = "https://ark.cn-beijing.volces.com/api/v3" SEEDANCE_CALLBACK_URL: str = "" LLM_API_BASE: str = "https://api.openai.com/v1" LLM_API_KEY: str = "" LLM_MODEL: str = "gpt-4o" LLM_MOCK: bool = True ENCRYPTION_KEY: str = "changeme-32bytes-base64-key-here!!" # SMS settings SMS_API_URL: str = "" SMS_API_KEY: str = "" SMS_SIGN_NAME: str = "VideoGen" SMS_TEMPLATE_CODE: str = "SMS_001" SMS_MOCK: bool = True # Payment settings WECHAT_MCH_ID: str = "" WECHAT_API_KEY: str = "" WECHAT_CERT_PATH: str = "" ALIPAY_APP_ID: str = "" ALIPAY_PRIVATE_KEY: str = "" ALIPAY_PUBLIC_KEY: str = "" PAYMENT_MOCK: bool = True STORAGE_TYPE: str = "local" STORAGE_LOCAL_PATH: str = "./storage/videos" STORAGE_IMAGE_LOCAL_PATH: str = "./storage/images" UPLOAD_LOCAL_PATH: str = "./storage/uploads" CAPTCHA_ENABLED: bool = True BASE_URL: str = "http://ceshi.apiforeign.minzhong.cn" CORS_ORIGINS: list[str] = ["*"] RATE_LIMIT_ENABLED: bool = True settings = Settings()