import requests
import random
import json
import os
import sys

# Output fix
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

BASE_URL = "http://127.0.0.1:5001"

def run_test():
    print("🤖 OTOMATİK QA TESTİ BAŞLATILIYOR...")
    print("-------------------------------------")

    # 1. Rastgele bir PDF bulmak için önce manuel bir path kuralım veya veritabanından çekelim
    # Şimdilik bilinen bir path üzerinden gidelim ama çeşitlendirelim
    print("1. Rastgele Doküman Seçiliyor...")
    
    # Simüle edilmiş "Rastgelelik" - Gerçekte dizinleri tarayabilirdik ama hızlı olsun
    target_pdf = "/mnt/pdfs/İŞ MAKİNASI GRUBU/BOMAG/BW 151 AD-50/BW 151 AD-50 SERVİS MANUELİ -1.pdf"
    
    print(f"   Seçilen: {os.path.basename(target_pdf)}")
    
    # 2. Rastgele Kelime Seç
    keywords = ["pompa", "valve", "basınç", "pressure", "filter", "filtre", "motor", "dişli"]
    keyword = random.choice(keywords)
    
    print(f"2. Rastgele Anahtar Kelime: '{keyword}'")
    
    # 3. Arama İsteği (Browser Taklidi)
    print("3. Browser İsteği Gönderiliyor (POST /usta/api/search)...")
    
    payload = {
        "query": keyword,
        "pdf_filter": target_pdf,
        "limit": 10
    }
    
    try:
        r = requests.post(f"{BASE_URL}/usta/api/search", json=payload)
        data = r.json()
        
        if data.get("success"):
            results = data.get("results", [])
            print(f"✅ BAŞARILI! Toplam Sonuç: {len(results)}")
            
            if results:
                print("\n   Örnek Sonuçlar:")
                for i, res in enumerate(results[:3]):
                    print(f"   --- Sonuç {i+1} ---")
                    print(f"   Skor: %{int(res['score']*100)}")
                    print(f"   Dosya: {res['pdf_filename']}")
                    print(f"   Sayfa: {res['page_number']}")
                    print(f"   Metin (EN): {res['text_original'][:50].replace(chr(10), ' ')}...")
                    print(f"   Metin (TR): {res['text_tr'][:50].replace(chr(10), ' ')}...")
            else:
                print("   ⚠️ Sonuç seti boş döndü (Kelime bu belgede geçmiyor olabilir).")
        else:
            print(f"❌ HATA: {data.get('error')}")
            
    except Exception as e:
        print(f"❌ BAĞLANTI HATASI: {e}")

if __name__ == "__main__":
    run_test()
