# =============================================================
# telegram_bot/gemini_client.py
# Izmanto: google-genai (jaunā oficiālā bibliotēka)
# pip install google-genai
# =============================================================

import logging
from pathlib import Path
from django.conf import settings

logger = logging.getLogger(__name__)

KNOWLEDGE_BASE_DIR = Path(__file__).resolve().parent / "knowledge_base"

SYSTEM_PROMPT = """Tu esi Čiko — MIM portāla AI asistents.

TAVS RAKSTURS:
- Saprātīgs, silts un ar vieglu humoru — kā labs draugs, kurš gadījumā ir AI eksperts
- Tu NEKAD nesāc ar reklāmu. Vispirms uzklausī, saproti, tad palīdzi
- Esi godīgs: ja kaut ko nezini — saki to, nevis izdomā
- Tu runā kā cilvēks, nevis korporatīvs robots

SARUNAS STILS:
1. Vispirms SAPROTI ko cilvēks vēlas vai jūt
2. Atbildi uz VIŅA jautājumu — ne uz to, ko tu gribētu pārdot
3. Tikai ja tas ir dabiski un relevanti — piemin DevSprintAI
4. Beidz ar vienu īsu jautājumu (ne anketu!)

VALODA:
- Latviski, dabīgi — kā rakstītu Telegram draugam
- *bold* svarīgam, _italic_ niansēm
- Emodži — mēreni, ar jēgu
- Atbildes garums: pielāgot jautājumam

PAR KO ZINI VISLABĀK:
- Mākslīgais intelekts — kā tas strādā, ko var, ko nevar
- ES AI Akts — juridiskais regulējums, riska kategorijas, sodi
- MiM.Lv pakalpojumi — web, AI risinājumi, automatizācija
- Tehnoloģijas un bizness — kā AI palīdz uzņēmumiem

KO NEDARI:
- Neatkārto jautājumu atpakaļ
- Neatbild ar sarakstu ja var pateikt teikumā
- Neiesāc ar "Protams!", "Lielisks jautājums!", "Saprotams!"
- Nepārdod ja neviens nepērk

Ja cilvēks vēlas sazināties — piedāvā /kontakts vai mim.melgalis.lv"""


def _load_knowledge_base() -> str:
    if not KNOWLEDGE_BASE_DIR.exists():
        return ""
    sections = []
    priority = {"es_ai_akts": 0, "par_mums": 1, "par_ai": 2}
    files = sorted(
        KNOWLEDGE_BASE_DIR.glob("*.md"),
        key=lambda f: priority.get(f.stem, 9)
    )
    for md_file in files:
        try:
            content = md_file.read_text(encoding="utf-8")
            sections.append(f"=== {md_file.stem.upper()} ===\n{content}")
        except Exception as e:
            logger.error(f"Kļūda lasot {md_file.name}: {e}")
    return "\n\n".join(sections)


def ask_gemini(user_message: str, conversation_history: list = None) -> str:
    """Nosūta ziņu Gemini izmantojot google-genai (jaunā pakete)."""
    api_key = getattr(settings, "GEMINI_API_KEY", None)

    if not api_key:
        logger.error("GEMINI_API_KEY nav iestatīts!")
        return _fallback(user_message)

    try:
        from google import genai
        from google.genai import types
    except ImportError:
        logger.error("google-genai nav instalēts! Palaid: pip install google-genai")
        return _fallback(user_message)

    try:
        client = genai.Client(api_key=api_key)

        knowledge = _load_knowledge_base()
        full_system = (
            f"{SYSTEM_PROMPT}\n\n"
            f"--- ZINĀŠANU BĀZE ---\n{knowledge}\n--- BEIGAS ---"
        )

        # Sarunu vēsture
        contents = []
        if conversation_history:
            for msg in conversation_history[-8:]:
                role = "user" if msg["role"] == "user" else "model"
                contents.append(
                    types.Content(
                        role=role,
                        parts=[types.Part(text=msg["text"])]
                    )
                )

        # Pašreizējais jautājums
        contents.append(
            types.Content(
                role="user",
                parts=[types.Part(text=f"{full_system}\n\nLIETOTĀJS: {user_message}")]
            )
        )

        response = client.models.generate_content(
            model="gemini-2.5-flash-lite",
            contents=contents,
            config=types.GenerateContentConfig(
                temperature=0.8,
                max_output_tokens=1200,
            )
        )

        answer = response.text.strip() if response.text else ""

        if not answer:
            logger.warning("Gemini atgrieza tukšu atbildi")
            return _fallback(user_message)

        logger.info(f"Gemini atbildēja ({len(answer)} rakstzīmes)")
        return answer

    except Exception as e:
        error_str = str(e)
        logger.error(f"Gemini kļūda: {error_str}")

        if "quota" in error_str.lower() or "429" in error_str:
            return "⏳ Esmu mazliet pārslogots. Mēģini vēlreiz pēc 10 sekundēm!"
        if "invalid" in error_str.lower() or "api_key" in error_str.lower():
            return "🔑 API atslēgas problēma. Sazinies ar administratoru."

        return _fallback(user_message)


def _fallback(user_message: str) -> str:
    msg = user_message.lower()

    if any(w in msg for w in ["ai akts", "regula", "juridisk", "likum", "es akts", "sodi"]):
        return (
            "🇪🇺 *ES AI Akts kopsavilkumā:*\n\n"
            "Spēkā no 2024. augusta — pirmais AI likums pasaulē.\n\n"
            "4 riska līmeņi:\n"
            "🔴 *Aizliegts* — manipulācija, sociālais scoring\n"
            "🟠 *Augstais* — medicīna, kredīti, darba atlase\n"
            "🟡 *Ierobežots* — čatboti _(jāpaziņo lietotājam!)_\n"
            "🟢 *Minimāls* — lielākā daļa biznesa AI rīku\n\n"
            "Sodi — līdz €35 milj. Uzdod konkrētu jautājumu!"
        )

    if any(w in msg for w in ["cena", "maksā", "pakalpojum", "web", "izstrād"]):
        return (
            "🚀 *MiM.Lv izstrādā:*\n\n"
            "• AI čatbotus un asistentus\n"
            "• Web platformas un portālus\n"
            "• Biznesa automatizāciju\n\n"
            "Izmanto /kontakts — atbildēsim 24h laikā!"
        )

    return (
        "🤔 Šobrīd man ir nelielas tehniskas grūtības...\n\n"
        "• /kontakts — cilvēks atbildēs 24h laikā\n"
        "• /ai — par mākslīgo intelektu\n"
        "• /aiakts — par ES AI regulējumu\n\n"
        "_Mēģini vēlreiz pēc minūtes!_ 🙏"
    )
