"""配置管理模块"""
from functools import lru_cache
from typing import Optional

from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
    """应用配置"""
    model_config = SettingsConfigDict(
        env_file=".env",
        env_file_encoding="utf-8",
        case_sensitive=True,
    )

    # 应用
    APP_NAME: str = "AI研究员"
    APP_VERSION: str = "0.1.0"
    DEBUG: bool = Field(default=False)

    # 数据库
    DATABASE_URL: str = "postgresql://user:pass@localhost/ai_researcher"
    REDIS_URL: str = "redis://localhost:6379"

    # API密钥
    OPENAI_API_KEY: Optional[str] = None

    # DeepSeek
    DEEPSEEK_API_KEY: Optional[str] = None
    DEEPSEEK_BASE_URL: str = "https://api.deepseek.com/v1"
    DEEPSEEK_MODEL: str = "deepseek-chat"

    # 企业微信
    WECHAT_WORK_TOKEN: Optional[str] = None
    WECHAT_WORK_AES_KEY: Optional[str] = None
    WECHAT_WORK_CORP_ID: Optional[str] = None
    WECHAT_WORK_AGENT_ID: Optional[str] = None
    WECHAT_WORK_SECRET: Optional[str] = None

    # Langfuse
    LANGFUSE_PUBLIC_KEY: Optional[str] = None
    LANGFUSE_SECRET_KEY: Optional[str] = None
    LANGFUSE_HOST: Optional[str] = None

    # Query Router配置
    QUERY_ROUTER_COMPLEXITY_THRESHOLD: float = 0.3
    QUERY_ROUTER_MAX_SYNC_DURATION_MS: int = 2000
    QUERY_ROUTER_WEIGHTS: dict = {
        "data_sources": 0.25,
        "api_calls": 0.30,
        "reasoning_depth": 0.25,
        "historical_time": 0.20,
    }


@lru_cache()
def get_settings() -> Settings:
    """获取配置（单例）"""
    return Settings()
