Spaces:
Sleeping
Sleeping
File size: 4,152 Bytes
fddb26d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | import sys
import os
import logging
# Python'un 'app' klasörünü bulabilmesi için proje ana dizinini yola ekliyoruz
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from app.recommendation.embedding import embed_query
from app.recommendation.retrieval import retrieve_candidates
logging.basicConfig(level=logging.INFO)
# 1. Test Embedding
print("="*50)
print("1. EMBEDDING TESTI")
print("="*50)
query = "Kadıköy'de deniz manzaralı güzel bir kahveci"
print(f"Sorgu: '{query}'")
print("Vektör oluşturuluyor (Model yüklenecek)...")
vec = embed_query(query)
print(f"Vektör uzunluğu: {len(vec)} (Beklenen: 384)")
print(f"Vektörün ilk 5 elemanı: {vec[:5]}")
print("\n")
# 2. Test Retrieval (Mock Supabase Client)
print("="*50)
print("2. RETRIEVAL (VERİ ÇEKME) TESTİ (MOCK DB)")
print("="*50)
class MockSupabaseClient:
def rpc(self, rpc_name, params):
self.rpc_name = rpc_name
self.params = params
return self
def execute(self):
print(f" -> [Mock DB] Çalıştırılan Fonksiyon (RPC): {self.rpc_name}")
print(f" -> [Mock DB] Veritabanına gönderilen parametreler:")
for k, v in self.params.items():
if isinstance(v, list) and len(v) > 5 and isinstance(v[0], float):
print(f" {k}: [Uzunluğu {len(v)} olan vektör listesi]")
else:
print(f" {k}: {v}")
# Sahte veritabanı cevapları
return MockResponse([
{"id": "uuid-1", "name": "Moda Çay Bahçesi", "district": "Kadıköy", "similarity": 0.95},
{"id": "uuid-2", "name": "Walter's Coffee Roastery", "district": "Kadıköy", "similarity": 0.88}
])
class MockResponse:
def __init__(self, data):
self.data = data
mock_supabase = MockSupabaseClient()
# Yapay zekadan (NLP) dönen sahte cevap
nlp_result = {
"status": "success",
"intent": "search_place",
"query": "Kadıköy'de deniz manzaralı güzel bir kahveci",
"entities": {
"location_context": {
"city": "Kadıköy"
},
"category_match": {
"main_category": "kahveci"
}
}
}
print(f"NLP Çıktısı Simüle Ediliyor: {nlp_result}")
print("retrieve_candidates fonksiyonu çağrılıyor...")
candidates = retrieve_candidates(
supabase_client=mock_supabase,
nlp_result=nlp_result,
query_embedding=vec,
top_k=5
)
print("\nRetrieval fonksiyonundan dönen sonuçlar:")
for c in candidates:
print(f" - {c}")
# 3. Test Retrieval with Route Stops
print("\n" + "="*50)
print("3. RETRIEVAL (ROUTING & STOPS) TESTI")
print("="*50)
nlp_result_route = {
"status": "success",
"intent": "routing",
"query": "Kadıköy'den kalkıp Karaköy ve Eminönü üzerinden Beşiktaş'a rota, güzel kahveciler",
"route": {
"enabled": True,
"origin": "Kadıköy",
"stops": ["Karaköy", "Eminönü"],
"destination": "Beşiktaş"
},
"entities": {
"category_match": {
"main_category": "kahveci"
}
}
}
print(f"NLP Çıktısı Simüle Ediliyor (Route): {nlp_result_route}")
print("retrieve_candidates fonksiyonu (Route) çağrılıyor...\n")
candidates_route = retrieve_candidates(
supabase_client=mock_supabase,
nlp_result=nlp_result_route,
query_embedding=vec,
top_k=5
)
print("\nRouting Retrieval fonksiyonundan dönen sonuçlar:")
for c in candidates_route:
print(f" - {c}")
# Kontroller (Asserts)
print("\n[Test Kontrolü] Mock RPC params inceleniyor...")
params = mock_supabase.params
assert "p_route_stops" in params, "HATA: Mock RPC parametreleri içinde p_route_stops bulunamadı!"
assert isinstance(params["p_route_stops"], list), "HATA: p_route_stops bir liste olarak gönderilmiyor!"
assert params["p_route_stops"] == ["Karaköy", "Eminönü"], f"HATA: Beklenen duraklar gelmedi. Gelen: {params['p_route_stops']}"
print("✅ Başarılı: p_route_stops Mock RPC parametrelerinde mevcut.")
print(f"✅ Başarılı: p_route_stops doğru formatta (Liste) ve değerlerle ({params['p_route_stops']}) gidiyor.")
|