"""
CATIA Batch Mode Test - HTTP Server üzerinden

HTTP server'ın /convert_batch endpoint'ini test eder.
Bu mod CATIA'yı bağımsız bir process olarak başlatır.
"""

import requests
import json
import sys
import io
import os

# Encoding düzelt
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')

SERVER_URL = "http://localhost:1989"
SOURCE_FILE = r"D:\__sistem__\Downloads\C0000638.stp"
OUTPUT_DIR = r"D:\__sistem__\Masaustu\FikatiaV2024\IDialoglar\IDialogCevirici"
OUTPUT_NAME = "C0000638_batch"

print("=" * 70)
print("  CATIA Batch Mode Test - HTTP Server")
print("=" * 70)

print(f"\nKaynak Dosya: {SOURCE_FILE}")
print(f"Çıktı Klasörü: {OUTPUT_DIR}")
print(f"Çıktı Adı: {OUTPUT_NAME}.wrl")
print(f"Mode: BATCH (Bağımsız CATIA Process)")

# Kaynak dosya var mı?
if not os.path.exists(SOURCE_FILE):
    print(f"\n✗ HATA: Kaynak dosya bulunamadı!")
    print(f"  {SOURCE_FILE}")
    sys.exit(1)

print(f"\n✓ Kaynak dosya mevcut ({os.path.getsize(SOURCE_FILE):,} bytes)")

# Server çalışıyor mu?
print("\n[1/2] Server kontrolü...")
print("-" * 70)

try:
    response = requests.get(f"{SERVER_URL}/health", timeout=5)
    if response.status_code == 200:
        print("  ✓ Server çalışıyor")
    else:
        print(f"  ✗ Server hatası: {response.status_code}")
        sys.exit(1)
except Exception as e:
    print(f"  ✗ Server'a bağlanılamıyor: {e}")
    print("\n  Dialog penceresinde 'Server Başlat' butonuna tıkladınız mı?")
    sys.exit(1)

# Batch Mode WRL Dönüştürme
print("\n[2/2] Batch Mode Dönüştürme...")
print("-" * 70)
print("\n  ⚠ BATCH MODE: CATIA yeni bir process olarak başlatılacak")
print("  ⚠ Bu işlem 30-120 saniye sürebilir, lütfen bekleyin...")
print("\n  İstek gönderiliyor...")

try:
    response = requests.post(f"{SERVER_URL}/convert_batch", json={
        'source_file': SOURCE_FILE,
        'output_dir': OUTPUT_DIR,
        'output_name': OUTPUT_NAME
    }, timeout=180)  # Batch mode daha uzun sürer

    if response.status_code == 200:
        result = response.json()

        print("\n  ✓✓✓ BATCH DÖNÜŞTÜRME BAŞARILI! ✓✓✓")
        print("\n  Sonuç:")
        print(f"    - Method      : {result.get('method', 'batch')}")
        print(f"    - Çıktı Dosyası: {result.get('output_file')}")
        print(f"    - Kaynak Dosya: {result.get('source_file')}")
        print(f"    - Timestamp   : {result.get('timestamp')}")

        # Dosya kontrol
        output_file = result.get('output_file')
        if output_file and os.path.exists(output_file):
            file_size = os.path.getsize(output_file)
            print(f"    - Dosya Boyutu: {file_size:,} bytes")
            print(f"\n  ✓ WRL dosyası oluşturuldu: {output_file}")
        else:
            print(f"\n  ⚠ Uyarı: Çıktı dosyası bulunamadı")

    else:
        print(f"\n  ✗ DÖNÜŞTÜRME HATASI!")
        print(f"  HTTP Kodu: {response.status_code}")
        print(f"  Yanıt: {response.text}")

except requests.exceptions.Timeout:
    print("\n  ✗ Timeout hatası!")
    print("  Batch dönüştürme işlemi çok uzun sürüyor.")
    print("  CATIA'da işlem hala devam ediyor olabilir.")
    print("\n  Şunları kontrol edin:")
    print("    1. Task Manager'da CNEXT.exe process'i var mı?")
    print("    2. Conversion.log dosyasını kontrol edin")

except Exception as e:
    print(f"\n  ✗ İstek hatası: {e}")
    import traceback
    traceback.print_exc()

print("\n" + "=" * 70)
print("  Test Tamamlandı")
print("=" * 70)

print("\n💡 İpuçları:")
print("   - Dialog penceresindeki log alanını kontrol edin")
print("   - CatiaBatch/conversion.log dosyasına bakın")
print("   - Batch mode mevcut CATIA'yı kullanmaz, yeni instance açar")

