#!/usr/bin/env python3
"""
🧪 Test Script für Enhanced AI Schema Generator mit DB-Integration
SICHER: Testet ohne Live-Shop zu beeinträchtigen
"""

import json
import subprocess
import sys
import os

def test_enhanced_schema_generation():
    """Testet Enhanced Schema-Generierung mit verschiedenen Artikeltypen"""
    
    # Test-Daten für verschiedene Problemkategorien
    test_cases = [
        {
            "name": "🚰 PUMPE - Ablaufpumpe Test",
            "data": {
                "item_id": "TEST_PUMP_001",
                "name": "Bosch Ablaufpumpe für Waschmaschine WM14N140",
                "warnings": [
                    {
                        "name": ".WARNUNG! Gefahr eines elektrischen Schlags",
                        "beschreibung": "Schalten Sie das Gerät aus vor Reparatur.",
                        "final_bilddateiname": "ISO_7010_W012.svg"
                    }
                ],
                "attributes": {
                    "attribute_1": "Pumpe für Waschmaschine",
                    "attribute_2": "Kompatibel mit Bosch, Siemens",
                    "attribute_3": "Laugenpumpe"
                }
            }
        },
        {
            "name": "🔥 HEIZUNG - Heizstab Test", 
            "data": {
                "item_id": "TEST_HEAT_001",
                "name": "Siemens Heizstab mit Thermostat für Geschirrspüler",
                "warnings": [
                    {
                        "name": ".WARNUNG! Gefahr eines elektrischen Schlags",
                        "beschreibung": "Hochspannung! Strom abschalten.",
                        "final_bilddateiname": "ISO_7010_W012.svg"
                    }
                ],
                "attributes": {
                    "attribute_1": "Heizelement für Spülmaschine",
                    "attribute_2": "Kompatibel mit Siemens, Bosch",
                    "attribute_3": "Mit NTC-Sensor"
                }
            }
        },
        {
            "name": "🚪 TÜR - Türschloss Test",
            "data": {
                "item_id": "TEST_DOOR_001", 
                "name": "Miele Türschloss für Waschmaschine W1 Serie",
                "warnings": [],
                "attributes": {
                    "attribute_1": "Türverriegelung",
                    "attribute_2": "Kompatibel mit Miele",
                    "attribute_3": "Mechanisches Schloss"
                }
            }
        }
    ]
    
    print("🧪 Enhanced AI Schema Generator Test Suite")
    print("=" * 60)
    
    for test_case in test_cases:
        print(f"\n🔧 {test_case['name']}")
        print("-" * 40)
        
        try:
            # Schema Generator aufrufen
            script_path = "/var/www/vhosts/intelectra.de/httpdocs/core/python/enhanced_ai_schema_generator.py"
            json_input = json.dumps(test_case['data'])
            
            result = subprocess.run([
                "python3", script_path, json_input
            ], capture_output=True, text=True, timeout=30)
            
            if result.returncode == 0:
                response = json.loads(result.stdout)
                
                print("✅ Status:", "SUCCESS" if response.get('success') else "FAILED")
                print("📊 Schema generiert:", response.get('schema_generated', False))
                print("🗄️ Database powered:", response.get('database_powered', False))
                print("🔍 Probleme gefunden:", response.get('problems_found', 0))
                print("🆔 Item ID:", response.get('item_id'))
                
                # Schema-Datei prüfen und analysieren
                schema_file = f"/var/www/vhosts/intelectra.de/httpdocs/core/python/logs/enhanced_schema_{test_case['data']['item_id']}.json"
                try:
                    with open(schema_file, 'r', encoding='utf-8') as f:
                        schema = json.load(f)
                        
                        print("\n📋 Schema Details:")
                        print(f"   - Generator: {schema.get('_meta', {}).get('generator', 'Unknown')}")
                        print(f"   - DB Enabled: {schema.get('_meta', {}).get('database_enabled', False)}")
                        print(f"   - Sicherheitshinweise: {len(schema.get('safetyConsiderations', []))}")
                        print(f"   - Problem-Lösungen: {len(schema.get('solves', []))}")
                        print(f"   - Kompatible Marken: {schema.get('compatibleWith', {}).get('brands', [])}")
                        
                        # Problem-Details anzeigen
                        problems = schema.get('solves', [])
                        if problems:
                            print("\n🔧 Gefundene Probleme:")
                            for i, problem in enumerate(problems[:3], 1):  # Nur erste 3
                                print(f"   {i}. {problem.get('problem', 'N/A')}")
                                print(f"      Urgency: {problem.get('urgencyLevel', 'N/A')}")
                                print(f"      Source: {problem.get('dataSource', 'N/A')}")
                        
                except FileNotFoundError:
                    print("⚠️ Schema-Datei nicht gefunden")
                
            else:
                print("❌ Fehler:", result.stderr)
                print("Output:", result.stdout)
                
        except Exception as e:
            print(f"💥 Test fehlgeschlagen: {str(e)}")
    
    print("\n" + "=" * 60)
    print("🎯 Test Suite abgeschlossen!")
    
    # Log-Datei checken
    log_file = "/var/www/vhosts/intelectra.de/httpdocs/core/python/logs/enhanced_ai_schema.log"
    if os.path.exists(log_file):
        print(f"\n📝 Log-Datei gefunden: {log_file}")
        try:
            with open(log_file, 'r') as f:
                lines = f.readlines()[-5:]  # Letzte 5 Zeilen
                if lines:
                    print("Letzte Log-Einträge:")
                    for line in lines:
                        print(f"   {line.strip()}")
        except:
            print("   (Log-Datei konnte nicht gelesen werden)")

def test_database_fallback():
    """Testet Fallback-Verhalten wenn DB nicht verfügbar"""
    print("\n🔄 Database Fallback Test")
    print("-" * 30)
    
    # Test ohne DB-Verbindung (sollte Fallback verwenden)
    test_data = {
        "item_id": "TEST_FALLBACK_001",
        "name": "Generic Pumpe für Test",
        "attributes": {"test": "fallback"}
    }
    
    try:
        script_path = "/var/www/vhosts/intelectra.de/httpdocs/core/python/enhanced_ai_schema_generator.py"
        json_input = json.dumps(test_data)
        
        result = subprocess.run([
            "python3", script_path, json_input
        ], capture_output=True, text=True, timeout=30)
        
        if result.returncode == 0:
            response = json.loads(result.stdout)
            print("✅ Fallback funktioniert:", response.get('success', False))
            print("🗄️ Database powered:", response.get('database_powered', False))
        else:
            print("❌ Fallback failed")
            
    except Exception as e:
        print(f"💥 Fallback test error: {str(e)}")

if __name__ == "__main__":
    test_enhanced_schema_generation()
    test_database_fallback()