54 lines
1.8 KiB
Python
Executable File
54 lines
1.8 KiB
Python
Executable File
"""系统配置"""
|
|
import os
|
|
from urllib.parse import quote_plus
|
|
from pydantic_settings import BaseSettings
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
# 数据库
|
|
DB_HOST: str = os.getenv("DB_HOST", "localhost")
|
|
DB_PORT: int = int(os.getenv("DB_PORT", "3306"))
|
|
DB_USER: str = os.getenv("DB_USER", "aivirtual")
|
|
DB_PASSWORD: str = os.getenv("DB_PASSWORD", "AiVirtual2024")
|
|
DB_NAME: str = os.getenv("DB_NAME", "ai_virtual_news")
|
|
|
|
# Redis
|
|
REDIS_HOST: str = os.getenv("REDIS_HOST", "localhost")
|
|
REDIS_PORT: int = int(os.getenv("REDIS_PORT", "6379"))
|
|
|
|
# 安全
|
|
SECRET_KEY: str = os.getenv("SECRET_KEY", "dev-secret-key-change-in-prod")
|
|
AES_KEY: str = os.getenv("AES_KEY", "your-aes-key-32-chars-change-now!")
|
|
AVATAR_MODEL_CONFIG_TOKEN: str = os.getenv("AVATAR_MODEL_CONFIG_TOKEN", "")
|
|
|
|
# 新闻平台
|
|
NEWS_PLATFORM_BASE_URL: str = os.getenv(
|
|
"NEWS_PLATFORM_BASE_URL", "http://192.168.1.200:63120"
|
|
)
|
|
|
|
# 数字分身 SQLite 数据库路径(直连数字分身应用的 SQLite)
|
|
AVATAR_DB_PATH: str = os.getenv("AVATAR_DB_PATH", "")
|
|
|
|
# 数字分身后端服务地址(用于拼接头像等文件 URL)
|
|
AVATAR_BACKEND_URL: str = os.getenv("AVATAR_BACKEND_URL", "")
|
|
|
|
# 日志目录
|
|
LOG_DIR: str = "/app/logs"
|
|
|
|
@property
|
|
def DATABASE_URL(self) -> str:
|
|
# 对密码做 URL 编码,防止 @ # ! 等特殊字符破坏连接字符串
|
|
pwd = quote_plus(self.DB_PASSWORD)
|
|
return f"mysql+aiomysql://{self.DB_USER}:{pwd}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
|
|
|
|
@property
|
|
def SYNC_DATABASE_URL(self) -> str:
|
|
pwd = quote_plus(self.DB_PASSWORD)
|
|
return f"mysql+pymysql://{self.DB_USER}:{pwd}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
|
|
|
|
settings = Settings()
|