#!/usr/bin/env python3
"""
Glossary'yi 10,000 limite kadar doldur
En yüksek skorlu terimlerden başla
"""

import sqlite3
import requests
import json

# Config
DEEPL_API_KEY = "b121dc7e-8e98-427f-8984-54c4d4f0851e"
DEEPL_API_URL = "https://api.deepl.com/v2"
DB_PATH = "/mnt/pdfs/dictionary_quality.db"
GLOSSARY_NAME = "PEPC_Technical_Terms"
MAX_TERMS = 10000

def get_terms(limit):
    """En yüksek skorlu terimleri al"""
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()
    
    # Daha fazla terim al (filtreleme sonrası 10K'ya ulaşmak için)
    cursor.execute('''
        SELECT canonical_en, canonical_tr, quality_score
        FROM quality_terms
        ORDER BY quality_score DESC
        LIMIT ?
    ''', (limit * 2,))  # 2x al, filtreleme sonrası yeterli olsun
    
    terms = cursor.fetchall()
    conn.close()
    return terms

def prepare_glossary_entries(terms, max_entries):
    """Terimleri TSV formatına hazırla, duplikatları temizle"""
    entries = []
    seen = set()
    
    for en, tr, score in terms:
        if len(entries) >= max_entries:
            break
            
        # Temizle
        en = str(en).strip()
        tr = str(tr).strip()
        
        # Filtreler
        if len(en) < 2 or len(tr) < 2:
            continue
        if '\t' in en or '\n' in en or '\t' in tr or '\n' in tr:
            continue
        if len(en) > 100 or len(tr) > 100:  # Çok uzun terimler
            continue
            
        # Duplikat kontrolü
        key = en.lower()
        if key in seen:
            continue
        seen.add(key)
        
        entries.append(f"{en}\t{tr}")
    
    return entries

def delete_existing_glossaries():
    """Mevcut glossary'leri sil"""
    headers = {"Authorization": f"DeepL-Auth-Key {DEEPL_API_KEY}"}
    
    # Listele
    response = requests.get(f"{DEEPL_API_URL}/glossaries", headers=headers)
    if response.status_code == 200:
        glossaries = response.json().get("glossaries", [])
        for g in glossaries:
            if g['name'] == GLOSSARY_NAME:
                print(f"🗑️ Siliniyor: {g['glossary_id']}")
                requests.delete(f"{DEEPL_API_URL}/glossaries/{g['glossary_id']}", headers=headers)

def create_glossary(entries):
    """Yeni glossary oluştur"""
    entries_tsv = "\n".join(entries)
    
    headers = {
        "Authorization": f"DeepL-Auth-Key {DEEPL_API_KEY}",
        "Content-Type": "application/json"
    }
    
    data = {
        "name": GLOSSARY_NAME,
        "source_lang": "EN",
        "target_lang": "TR",
        "entries": entries_tsv,
        "entries_format": "tsv"
    }
    
    response = requests.post(f"{DEEPL_API_URL}/glossaries", headers=headers, json=data)
    
    if response.status_code == 201:
        result = response.json()
        return result
    else:
        print(f"❌ Hata: {response.status_code}")
        print(response.text)
        return None

def main():
    print("=" * 60)
    print("📚 GLOSSARY GÜNCELLEME - 10,000 TERİM")
    print("=" * 60)
    
    # 1. Terimleri al
    print("\n📥 Terimler okunuyor...")
    terms = get_terms(MAX_TERMS)
    print(f"   DB'den {len(terms):,} terim alındı")
    
    # 2. Hazırla ve filtrele
    print("\n🔧 Terimler hazırlanıyor...")
    entries = prepare_glossary_entries(terms, MAX_TERMS)
    print(f"   {len(entries):,} terim hazırlandı (filtreleme sonrası)")
    
    if len(entries) < 100:
        print("❌ Çok az terim!")
        return
    
    # 3. Mevcut glossary'yi sil
    print("\n🗑️ Eski glossary siliniyor...")
    delete_existing_glossaries()
    
    # 4. Yeni glossary oluştur
    print("\n🚀 Yeni glossary oluşturuluyor...")
    result = create_glossary(entries)
    
    if result:
        print("\n" + "=" * 60)
        print("✅ GLOSSARY OLUŞTURULDU!")
        print("=" * 60)
        print(f"   ID: {result['glossary_id']}")
        print(f"   İsim: {result['name']}")
        print(f"   Terim sayısı: {result['entry_count']:,}")
        print(f"   Kaynak: {result['source_lang']} → Hedef: {result['target_lang']}")
        print("=" * 60)
        
        # translate.php'yi güncelle
        glossary_id = result['glossary_id']
        print(f"\n💾 Yeni Glossary ID: {glossary_id}")
        print("\n⚠️ translate.php dosyasındaki GLOSSARY_ID'yi güncelleyin!")
        
        return glossary_id
    else:
        print("❌ Glossary oluşturulamadı!")
        return None

if __name__ == "__main__":
    new_id = main()

