Files
yaoyaoai/app/config.py
fengchuanhn@gmail.com 5ee6a57dd1 11
2026-05-21 01:47:21 +08:00

54 lines
1.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from functools import lru_cache
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
extra="ignore",
)
app_name: str = "aiclient-api"
debug: bool = False
mysql_host: str = "127.0.0.1"
mysql_port: int = 3306
mysql_user: str = "root"
mysql_password: str = ""
mysql_database: str = "aiclient"
redis_url: str = "redis://127.0.0.1:6379/0"
secret_key: str = Field(default="change-me-in-production")
access_token_expire_minutes: int = 60 * 24 * 7
"""AES-256 密钥32 字节 Base64 或 64 位十六进制;为空则关闭 API 加解密。"""
api_aes_key: str = "98cde5e64ee0da6ed0c5842f43a950aa0d8ae5087c43c8d8ee5d10bd8d571bb4"
cors_origins: str = "http://localhost:1420"
"""对外图片/品牌资源基址,用于拼接 logo_url。"""
api_public_base: str = "http://127.0.0.1:8001"
@property
def database_url(self) -> str:
return (
f"mysql+aiomysql://{self.mysql_user}:{self.mysql_password}"
f"@{self.mysql_host}:{self.mysql_port}/{self.mysql_database}"
)
@property
def cors_origin_list(self) -> list[str]:
raw = self.cors_origins.strip()
if raw == "*":
return ["*"]
return [o.strip() for o in raw.split(",") if o.strip()]
@lru_cache
def get_settings() -> Settings:
return Settings()