"""Ürün eşleştirme — semantik retriever üzerinden product chunk'larını ürün id'ye indirger."""
from fastapi import Depends

from app.services.rag.knowledge_retriever import KnowledgeRetriever


class ProductMatcher:
    def __init__(self, retriever: KnowledgeRetriever = Depends()):
        self.retriever = retriever

    async def match_product_ids(
        self, tenant_id: str, query: str, k: int = 5
    ) -> list[str]:
        results = await self.retriever.top_k(
            tenant_id, query, k=k * 3, source_type="product"
        )
        ordered: list[str] = []
        for r in results:
            pid = (r.get("meta") or {}).get("product_id")
            if pid and pid not in ordered:
                ordered.append(pid)
            if len(ordered) >= k:
                break
        return ordered
