"""Configuration du STT-server — via variables d'environnement (12-factor / k8s)."""

from __future__ import annotations

import os


class Settings:
    # LiteLLM (s01) — joint en IP directe depuis le cluster (cf. open-webui).
    litellm_url: str = os.getenv(
        "STT_LITELLM_URL", "http://192.168.10.1:4000/v1/chat/completions"
    )
    litellm_key: str = os.getenv("STT_LITELLM_KEY", "lm-studio")
    # Modèle par défaut + alias LiteLLM autorisés (le client peut en demander un par requête)
    model: str = os.getenv("STT_MODEL", "hermes-default")
    allowed_models: list[str] = [
        m.strip()
        for m in os.getenv(
            "STT_ALLOWED_MODELS",
            "hermes-default,qwen3-8b,claude-sonnet-4-6,claude-opus-4-7",
        ).split(",")
        if m.strip()
    ]

    system_prompt: str = os.getenv(
        "STT_SYSTEM_PROMPT",
        "Tu es Hermes, l'assistant vocal du homelab Funk. "
        "Réponds toujours en français, de façon concise (2-3 phrases maximum), "
        "sans markdown ni listes.",
    )
    max_tokens: int = int(os.getenv("STT_MAX_TOKENS", "200"))
    temperature: float = float(os.getenv("STT_TEMPERATURE", "0.7"))
    request_timeout: float = float(os.getenv("STT_REQUEST_TIMEOUT", "60"))

    # Mémoire long-terme (Qdrant) — dégrade proprement si Qdrant/embeddings injoignables
    memory_longterm: bool = os.getenv("STT_MEMORY_LONGTERM", "true").lower() == "true"
    qdrant_url: str = os.getenv("STT_QDRANT_URL", "http://192.168.10.1:6333")
    qdrant_collection: str = os.getenv("STT_QDRANT_COLLECTION", "stt-memory")
    # Embeddings : Qwen3 sur llama-server gpu-01 (comme le RAG). dim 4096.
    embed_url: str = os.getenv("STT_EMBED_URL", "http://192.168.10.20:1234/v1/embeddings")
    embed_model: str = os.getenv("STT_EMBED_MODEL", "qwen3-8b")
    memory_top_k: int = int(os.getenv("STT_MEMORY_TOPK", "3"))


settings = Settings()
