|
|
|
|
|
"""
|
|
|
|
|
|
应用配置模块
|
|
|
|
|
|
"""
|
|
|
|
|
|
import os
|
|
|
|
|
|
from typing import Optional
|
|
|
|
|
|
from pydantic_settings import BaseSettings
|
|
|
|
|
|
from pydantic import Field
|
|
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
|
|
|
|
"""应用配置类"""
|
|
|
|
|
|
|
|
|
|
|
|
# 应用配置
|
|
|
|
|
|
APP_NAME: str = "AmazingData金融数据服务平台"
|
|
|
|
|
|
APP_VERSION: str = "1.0.0"
|
|
|
|
|
|
DEBUG: bool = Field(default=True, env="DEBUG")
|
|
|
|
|
|
|
|
|
|
|
|
# 数据库配置 - 使用SQLite简化演示
|
|
|
|
|
|
DATABASE_URL: str = Field(
|
|
|
|
|
|
default="sqlite:///./amazing_data.db",
|
|
|
|
|
|
env="DATABASE_URL"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# Redis配置
|
|
|
|
|
|
REDIS_URL: str = Field(
|
|
|
|
|
|
default="redis://localhost:6379/0",
|
|
|
|
|
|
env="REDIS_URL"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# JWT配置
|
|
|
|
|
|
SECRET_KEY: str = Field(
|
|
|
|
|
|
default="your-secret-key-change-in-production",
|
|
|
|
|
|
env="SECRET_KEY"
|
|
|
|
|
|
)
|
|
|
|
|
|
ACCESS_TOKEN_EXPIRE_HOURS: int = Field(default=24, env="ACCESS_TOKEN_EXPIRE_HOURS")
|
|
|
|
|
|
ALGORITHM: str = "HS256"
|
|
|
|
|
|
|
|
|
|
|
|
# 缓存配置
|
|
|
|
|
|
CACHE_DEFAULT_PERIOD: str = "daily"
|
|
|
|
|
|
CACHE_DEFAULT_DAYS: int = 365
|
|
|
|
|
|
CACHE_AUTO_CLEANUP_DAYS: int = 7
|
|
|
|
|
|
CACHE_BATCH_SIZE: int = 100
|
|
|
|
|
|
CACHE_MISSING_THRESHOLD: float = 0.1
|
|
|
|
|
|
|
|
|
|
|
|
# 实时数据配置
|
|
|
|
|
|
REALTIME_SUBSCRIBE_INTERVAL: int = 1000
|
|
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
|
env_file = ".env"
|
|
|
|
|
|
case_sensitive = True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 全局配置实例
|
|
|
|
|
|
settings = Settings()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def load_system_configs(db: Session):
|
|
|
|
|
|
"""
|
|
|
|
|
|
从数据库加载系统配置到全局settings
|
|
|
|
|
|
注意:这需要在数据库初始化后调用
|
|
|
|
|
|
"""
|
|
|
|
|
|
from app.services.config_service import ConfigService
|
|
|
|
|
|
|
|
|
|
|
|
system_configs = ConfigService.get_all_system_configs(db)
|
|
|
|
|
|
|
|
|
|
|
|
if "DATABASE_URL" in system_configs:
|
|
|
|
|
|
settings.DATABASE_URL = system_configs["DATABASE_URL"]
|
|
|
|
|
|
|
|
|
|
|
|
if "REDIS_URL" in system_configs:
|
|
|
|
|
|
settings.REDIS_URL = system_configs["REDIS_URL"]
|