-- 🗄️ Problem-FAQ-Database Creation Script - Intelectra AI Schema System
-- Erzeugt dynamische Problem-Solution-Datenbank für KI-Optimierung

-- Haupt-Tabelle: problem_solutions
CREATE TABLE problem_solutions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    
    -- Problem-Kategorisierung
    problem_category ENUM(
        'heating', 'pumping', 'door_system', 'motor_drive', 
        'electronics', 'mechanical', 'filters', 'lighting',
        'water_system', 'drainage'
    ) NOT NULL,
    
    -- Problem-Definition
    problem_title VARCHAR(200) NOT NULL,
    problem_description TEXT,
    
    -- Symptome & Erkennungsmerkmale
    symptoms JSON NOT NULL,                    -- ["Geschirr bleibt kalt", "Kein warmes Wasser"]
    error_codes JSON,                          -- ["E15", "F25", "F21"] 
    keywords JSON NOT NULL,                    -- ["heizt nicht", "kein warmes wasser", "heizstab"]
    alternative_keywords JSON,                 -- ["temperatur", "warm", "erhitzen"]
    
    -- Problem-Eigenschaften
    urgency_level ENUM('LOW', 'MEDIUM', 'HIGH', 'CRITICAL') DEFAULT 'MEDIUM',
    repair_complexity ENUM('EASY', 'MEDIUM', 'HARD') DEFAULT 'MEDIUM',
    frequency_score INT DEFAULT 0,            -- Häufigkeit des Problems (für Ranking)
    
    -- Lösungs-Informationen  
    typical_parts JSON,                       -- [{"category": "heizstab", "keywords": ["heating", "thermostat"]}]
    installation_time_min INT,               -- Minuten
    installation_time_max INT,               -- Minuten
    tools_needed JSON,                       -- ["Schraubendreher", "Multimeter", "Zange"]
    safety_notes TEXT,
    difficulty_description VARCHAR(100),     -- "Mittel - handwerkliches Geschick nötig"
    
    -- Meta-Daten
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    active BOOLEAN DEFAULT TRUE
);

-- Erweiterte Tabelle: problem_appliance_mapping
CREATE TABLE problem_appliance_mapping (
    id INT AUTO_INCREMENT PRIMARY KEY,
    problem_id INT,
    appliance_type ENUM(
        'waschmaschine', 'geschirrspuler', 'kuhlschrank', 
        'backofen', 'dunstabzug', 'mikrowelle', 'trockner'
    ),
    brand_compatibility JSON,                -- ["bosch", "siemens", "miele"]
    model_patterns JSON,                     -- ["SMI*", "WM*", "GSV*"]
    
    FOREIGN KEY (problem_id) REFERENCES problem_solutions(id)
);

-- Keyword-Optimierung: problem_keywords
CREATE TABLE problem_keywords (
    id INT AUTO_INCREMENT PRIMARY KEY,
    problem_id INT,
    keyword VARCHAR(100),
    keyword_type ENUM('primary', 'secondary', 'symptom', 'error_code'),
    weight DECIMAL(3,2) DEFAULT 1.0,        -- Gewichtung für Relevanz
    language CHAR(2) DEFAULT 'de',
    
    FOREIGN KEY (problem_id) REFERENCES problem_solutions(id),
    INDEX idx_keyword (keyword),
    INDEX idx_type (keyword_type)
);

-- Usage Analytics & Learning
CREATE TABLE problem_usage_stats (
    id INT AUTO_INCREMENT PRIMARY KEY,
    problem_id INT,
    item_id INT,
    generated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    ai_model VARCHAR(50),           -- 'chatgpt', 'gemini', 'claude'
    user_feedback ENUM('helpful', 'not_helpful', 'partially_helpful'),
    
    FOREIGN KEY (problem_id) REFERENCES problem_solutions(id)
);

-- Initial Seed Data: Top 20 häufigste Ersatzteil-Probleme

-- Problem 1: Heizung defekt (Sehr häufig - 85%)
INSERT INTO problem_solutions VALUES (
    1,
    'heating',
    'Geschirrspüler heizt nicht',
    'Das Gerät spült zwar, aber das Wasser wird nicht warm. Geschirr bleibt verschmutzt und kalt.',
    
    '["Geschirr bleibt kalt", "Kein warmes Wasser", "Schlechtes Spülergebnis", "Wasser lauwarm"]',
    '["E15", "F25", "Er:15"]',
    '["heizt nicht", "kein warmes wasser", "heizstab", "thermostat", "ntc"]',
    '["temperatur", "warm", "erhitzen", "heizelement", "heizpumpe"]',
    
    'HIGH',
    'MEDIUM',
    85,  -- Sehr häufiges Problem
    
    '[{"category": "heizstab", "keywords": ["heizstab", "heating", "thermostat"]}, 
      {"category": "ntc", "keywords": ["ntc", "temperaturfühler", "sensor"]}]',
    45, 90,
    '["Schraubendreher", "Multimeter", "Zange"]',
    '⚠️ STROM ABSCHALTEN! Gerät vom Netz trennen vor Reparatur.',
    'Mittel - handwerkliches Geschick nötig'
);

-- Problem 2: Pumpe defekt (Sehr häufig - 92%)
INSERT INTO problem_solutions VALUES (
    2, 
    'pumping',
    'Wasser läuft nicht ab / Pumpe defekt',
    'Das Gerät pumpt das Wasser nicht ab, Wasser steht in der Maschine.',
    
    '["Wasser steht", "Gerät pumpt nicht", "Ablauf verstopft", "Pumpe brummt", "Seltsame Geräusche"]',
    '["E20", "E03", "F03", "Er:03"]', 
    '["pumpe defekt", "wasser läuft nicht ab", "ablaufpumpe", "laugenpumpe"]',
    '["drainage", "pump", "water", "ablauf", "entwässerung"]',
    
    'HIGH',
    'MEDIUM', 
    92,  -- Sehr häufig
    
    '[{"category": "pumpe", "keywords": ["pumpe", "pump", "ablaufpumpe", "laugenpumpe"]}]',
    30, 60,
    '["Schraubendreher", "Zange", "Eimer", "Handschuhe"]',
    'Wasser abstellen! Restwasser ablassen vor Ausbau.',
    'Mittel - Wasserkontakt möglich'
);

-- Problem 3: Türschloss defekt (Häufig - 78%)
INSERT INTO problem_solutions VALUES (
    3,
    'door_system',
    'Tür schließt nicht richtig / Türschloss defekt',
    'Die Gerätetür lässt sich nicht richtig schließen oder das Schloss hakt.',
    
    '["Tür geht nicht zu", "Türschloss hakt", "Gerät startet nicht", "Türgriff locker"]',
    '["E01", "Er:01", "F01"]',
    '["türschloss defekt", "tür geht nicht zu", "türgriff kaputt", "schloss hakt"]',
    '["door lock", "türschließung", "verschluss", "riegel"]',
    
    'MEDIUM',
    'EASY',
    78,
    
    '[{"category": "türschloss", "keywords": ["türschloss", "door lock", "türgriff"]}]',
    15, 30,
    '["Schraubendreher", "Zange"]',
    'Gerät ausschalten vor Reparatur.',
    'Einfach - DIY möglich'
);

-- Problem 4: Motor/Antrieb defekt (Häufig - 65%)
INSERT INTO problem_solutions VALUES (
    4,
    'motor_drive',
    'Trommel dreht nicht / Motor defekt',
    'Der Antriebsmotor funktioniert nicht mehr, Trommel dreht sich nicht.',
    
    '["Trommel dreht nicht", "Motor brummt nur", "Gerät macht komische Geräusche", "Kein Schleudern"]',
    '["F21", "E02", "Er:02", "F02"]',
    '["motor defekt", "trommel dreht nicht", "antrieb kaputt", "motor brummt"]',
    '["drive motor", "antriebsmotor", "drehmotor", "trommelmotor"]',
    
    'HIGH',
    'HARD',
    65,
    
    '[{"category": "motor", "keywords": ["motor", "antrieb", "antriebsmotor"]}]',
    90, 180,
    '["Multimeter", "Schraubendreher", "Zange", "Spezialwerkzeug"]',
    '⚠️ STROM ABSCHALTEN! Schweres Teil - Hilfe holen!',
    'Schwer - Fachmann empfohlen'
);

-- Problem 5: Wasserschlauch undicht (Häufig - 71%)
INSERT INTO problem_solutions VALUES (
    5,
    'water_system',
    'Wasserschlauch undicht / Aquastop defekt',
    'Zulauf- oder Ablaufschlauch ist undicht oder Aquastop löst aus.',
    
    '["Wasser tropft", "Schlauch undicht", "Aquastop piepst", "Pfütze unter Gerät"]',
    '["E10", "Er:10", "F10"]',
    '["schlauch undicht", "wasser tropft", "aquastop defekt", "zulaufschlauch"]',
    '["water hose", "wasserschlauch", "zulauf", "aquastop"]',
    
    'HIGH',
    'EASY',
    71,
    
    '[{"category": "schlauch", "keywords": ["schlauch", "hose", "aquastop", "zulauf"]}]',
    10, 25,
    '["Zange", "Schraubendreher"]',
    'Wasserzufuhr abstellen vor Reparatur!',
    'Einfach - DIY möglich'
);

-- Weitere Top-Probleme...
-- Problem 6: Filter verstopft
INSERT INTO problem_solutions VALUES (
    6, 'filters', 'Filter/Flusensieb verstopft',
    'Filter oder Flusensieb ist verstopft und beeinträchtigt die Leistung.',
    '["Schlechte Waschleistung", "Geruch", "Wasser läuft schlecht ab", "Filter stinkt"]',
    '["E18", "Er:18"]',
    '["filter verstopft", "flusensieb", "sieb verstopft", "schlechte waschleistung"]',
    '["filter", "lint filter", "sieb", "flusen"]',
    'MEDIUM', 'EASY', 88,
    '[{"category": "filter", "keywords": ["filter", "sieb", "flusensieb"]}]',
    5, 15,
    '["Handschuhe", "Eimer"]',
    'Filter regelmäßig reinigen zur Vorbeugung.',
    'Einfach - regelmäßige Wartung'
);

-- Problem 7: Türdichtung defekt
INSERT INTO problem_solutions VALUES (
    7, 'door_system', 'Türdichtung undicht/beschädigt',
    'Türdichtung ist porös oder beschädigt, Wasser tritt aus.',
    '["Wasser läuft aus Tür", "Dichtung porös", "Schimmel an Dichtung", "Gummi rissig"]',
    NULL,
    '["türdichtung defekt", "dichtung undicht", "wasser läuft aus", "gummi kaputt"]',
    '["door seal", "türdichtung", "dichtgummi", "manschette"]',
    'MEDIUM', 'MEDIUM', 67,
    '[{"category": "dichtung", "keywords": ["dichtung", "seal", "türdichtung", "manschette"]}]',
    30, 60,
    '["Schraubendreher", "Spezialkleber"]',
    'Gerät komplett trocknen vor Montage.',
    'Mittel - Geduld erforderlich'
);

-- Problem 8: Thermostat defekt
INSERT INTO problem_solutions VALUES (
    8, 'heating', 'Thermostat/Temperaturfühler defekt',
    'Temperaturfühler oder Thermostat misst falsche Werte.',
    '["Falsche Temperatur", "Überhitzung", "Zu kalt", "Temperatur schwankt"]',
    '["E25", "F25", "Er:25"]',
    '["thermostat defekt", "temperaturfühler", "ntc defekt", "temperatur falsch"]',
    '["thermostat", "temperature sensor", "ntc", "fühler"]',
    'MEDIUM', 'MEDIUM', 58,
    '[{"category": "thermostat", "keywords": ["thermostat", "ntc", "temperaturfühler"]}]',
    30, 45,
    '["Multimeter", "Schraubendreher"]',
    'Temperatur-Test vor Einbau durchführen.',
    'Mittel - Messgerät nötig'
);

-- Weitere Keywords für bessere Suche
INSERT INTO problem_keywords (problem_id, keyword, keyword_type, weight) VALUES
(1, 'heizt nicht', 'primary', 2.0),
(1, 'kalt', 'symptom', 1.5),
(1, 'e15', 'error_code', 2.0),
(2, 'pumpt nicht', 'primary', 2.0),
(2, 'wasser steht', 'symptom', 1.8),
(2, 'e20', 'error_code', 2.0),
(3, 'tür zu', 'primary', 1.8),
(3, 'schloss', 'secondary', 1.5),
(4, 'dreht nicht', 'primary', 2.0),
(4, 'motor', 'primary', 1.9),
(5, 'tropft', 'symptom', 1.7),
(5, 'aquastop', 'primary', 1.9);

-- Appliance Mappings für bessere Zuordnung
INSERT INTO problem_appliance_mapping (problem_id, appliance_type, brand_compatibility, model_patterns) VALUES
(1, 'geschirrspuler', '["bosch", "siemens", "neff", "gaggenau"]', '["SMI*", "SMV*", "SMU*"]'),
(2, 'waschmaschine', '["bosch", "siemens", "miele"]', '["WM*", "WA*", "WS*"]'),
(2, 'geschirrspuler', '["bosch", "siemens"]', '["SMI*", "SMV*"]'),
(3, 'waschmaschine', '["bosch", "siemens", "miele", "amica"]', '["WM*", "WA*"]'),
(4, 'waschmaschine', '["bosch", "siemens", "miele"]', '["WM*", "WA*"]'),
(5, 'waschmaschine', '["bosch", "siemens", "miele", "amica"]', '["WM*", "WA*"]'),
(5, 'geschirrspuler', '["bosch", "siemens"]', '["SMI*", "SMV*"]');