"""集中读取环境变量/密钥,避免散落硬编码(PRD §10 安全约束)。"""

from __future__ import annotations

import os
from pathlib import Path

from dotenv import load_dotenv

# 从项目根的 .env 加载(src/genesis/config.py → 上溯两级到项目根)
_PROJECT_ROOT = Path(__file__).resolve().parents[2]
load_dotenv(_PROJECT_ROOT / ".env")


def get_env(key: str, default: str | None = None, *, required: bool = False) -> str | None:
    """读环境变量;required 且缺失时抛错,提示去 .env 配置。"""
    val = os.environ.get(key, default)
    if required and not val:
        raise RuntimeError(f"缺少必要环境变量 {key}(请在 .env 配置)")
    return val


MEM0_API_KEY = get_env("MEM0_API_KEY")
ELEVENLABS_API_KEY = get_env("ELEVENLABS_API_KEY")
DEEPSEEK_API_KEY = get_env("DEEPSEEK_API_KEY")
DEEPSEEK_BASE_URL = get_env("DEEPSEEK_BASE_URL", "https://api.deepseek.com")
DEEPSEEK_MODEL = get_env("DEEPSEEK_MODEL", "deepseek-v4-flash")

# LLM 厂商切换(deepseek | minimax):换厂商只改 .env 的 LLM_PROVIDER,代码零改动
LLM_PROVIDER = (get_env("LLM_PROVIDER", "minimax") or "minimax").lower()
MINIMAX_API_KEY = get_env("MINIMAX_API_KEY")
MINIMAX_BASE_URL = get_env("MINIMAX_BASE_URL", "https://api.minimaxi.com/v1")
MINIMAX_MODEL = get_env("MINIMAX_MODEL", "MiniMax-M3")
