"""Prompt inşası — system + memory + rag + history → Gemini contents. Saf dönüşüm."""

SENDER_TO_ROLE = {"visitor": "user", "ai": "model", "operator": "model", "system": "user"}


class PromptBuilder:
    def build_system(
        self,
        brand_name: str | None,
        persona: dict | None,
        memory_context: str = "",
        rag_context: str = "",
    ) -> str:
        brand = brand_name or "mağaza"
        tone = (persona or {}).get("tone", "samimi ve yardımsever")
        parts = [
            f"Sen {brand} için çalışan bir satış asistanısın. Türkçe, {tone} bir dille konuş.",
            "Sadece sana verilen ürün ve bilgi tabanına dayan; bilmediğin şeyi uydurma.",
            "Kısa, net ve eyleme yönelik cevap ver.",
        ]
        if rag_context:
            parts.append("\n=== BİLGİ TABANI ===\n" + rag_context + "\n===")
        if memory_context:
            parts.append("\n" + memory_context)
        return "\n".join(parts)

    def build_contents(self, history: list, user_message: str) -> list[dict]:
        """history: ChatMessage benzeri (sender_type, message) listesi (eski→yeni)."""
        contents: list[dict] = []
        for msg in history:
            role = SENDER_TO_ROLE.get(getattr(msg, "sender_type", "visitor"), "user")
            text = getattr(msg, "message", "") or ""
            if text:
                contents.append({"role": role, "parts": [{"text": text}]})
        contents.append({"role": "user", "parts": [{"text": user_message}]})
        return contents
