"""Ziyaretçi geçmişi → prompt context. KVKK onayı yoksa enjekte EDİLMEZ."""
from app.models.visitor import FlovyVisitor


class MemoryBuilder:
    """Saf dönüşüm — FlovyVisitor → sistem prompt'una eklenecek metin."""

    def build(self, visitor: FlovyVisitor | None) -> str:
        # KVKK onayı olmadan geçmiş LLM'e verilmez (09-VISITOR-MEMORY gotcha).
        if not visitor or not visitor.is_returning or not visitor.kvkk_consent_at:
            return ""
        if visitor.anonymized_at:
            return ""

        parts: list[str] = []

        if visitor.name:
            parts.append(f"Ziyaretçinin adı: {visitor.name}")

        if visitor.products_viewed:
            recent = visitor.products_viewed[-3:]
            titles = [p.get("title") for p in recent if isinstance(p, dict) and p.get("title")]
            if titles:
                parts.append(f"Son baktığı ürünler: {', '.join(titles)}")

        if visitor.products_purchased:
            titles = [
                p.get("title")
                for p in visitor.products_purchased
                if isinstance(p, dict) and p.get("title")
            ]
            if titles:
                parts.append(f"Daha önce satın aldıkları: {', '.join(titles)}")

        if visitor.cart_abandoned and isinstance(visitor.cart_abandoned, dict):
            cart = visitor.cart_abandoned
            if cart.get("title"):
                parts.append(
                    f"Geçen seferde sepetini terk etti: {cart['title']} "
                    f"({cart.get('amount', '?')} TL) — bu ziyarette hatırlatabilirsin."
                )

        if visitor.last_intent:
            parts.append(f"Son sohbetteki niyeti: {visitor.last_intent}")

        if not parts:
            return ""

        return (
            "=== ZİYARETÇİ GEÇMİŞİ (sadece sen görüyorsun, doğal kullan) ===\n"
            + "\n".join(f"- {p}" for p in parts)
            + "\n==="
        )
