import sys
import os
import json

# Setup Environment to import backend modules
sys.path.append(os.path.join(os.path.dirname(__file__), "../../"))
from backend.database import SessionLocal, Persona, JobRolePattern

def seed_archetypes():
    db = SessionLocal()
    print("Seeding Strategic Archetypes (Pains & Gains)...")

    # --- 1. The 4 Strategic Archetypes ---
    # Based on user input and synthesis of previous specific roles
    archetypes = [
        {
            "name": "Operativer Entscheider",
            "pains": [
                "Personelle Unterbesetzung und hohe Fluktuation führen zu Überstunden und Qualitätsmängeln.",
                "Manuelle, wiederkehrende Prozesse binden wertvolle Ressourcen und senken die Effizienz.",
                "Sicherstellung gleichbleibend hoher Standards (Hygiene/Service) ist bei Personalmangel kaum möglich."
            ],
            "gains": [
                "Spürbare Entlastung des Teams von Routineaufgaben (20-40%).",
                "Garantierte, gleichbleibend hohe Ausführungsqualität rund um die Uhr.",
                "Stabilisierung der operativen Abläufe unabhängig von kurzfristigen Personalausfällen."
            ]
        },
        {
            "name": "Infrastruktur-Verantwortlicher",
            "pains": [
                "Integration neuer Systeme in bestehende Gebäude/IT ist oft komplex und risikobehaftet.",
                "Sorge vor hohen Ausfallzeiten und aufwändiger Fehlerbehebung ohne internes Spezialwissen.",
                "Unklare Wartungsaufwände und Schnittstellenprobleme (WLAN, Aufzüge, Türen)."
            ],
            "gains": [
                "Reibungslose, fachgerechte Integration in die bestehende Infrastruktur.",
                "Maximale Betriebssicherheit durch proaktives Monitoring und schnelle Reaktionszeiten.",
                "Volle Transparenz über Systemstatus und Wartungsbedarf."
            ]
        },
        {
            "name": "Wirtschaftlicher Entscheider",
            "pains": [
                "Steigende operative Kosten (Personal, Material) drücken auf die Margen.",
                "Unklare Amortisation (ROI) und Risiko von Fehlinvestitionen bei neuen Technologien.",
                "Intransparente Folgekosten (TCO) über die Lebensdauer der Anlagen."
            ],
            "gains": [
                "Nachweisbare Senkung der operativen Kosten (10-25%).",
                "Transparente und planbare Kostenstruktur (TCO) ohne versteckte Überraschungen.",
                "Schneller, messbarer Return on Investment durch Effizienzsteigerung."
            ]
        },
        {
            "name": "Innovations-Treiber",
            "pains": [
                "Verlust der Wettbewerbsfähigkeit durch veraltete Prozesse und Kundenangebote.",
                "Schwierigkeit, das Unternehmen als modernes, zukunftsorientiertes Brand zu positionieren.",
                "Verpasste Chancen durch fehlende Datengrundlage für Optimierungen."
            ],
            "gains": [
                "Positionierung als Innovationsführer und Steigerung der Arbeitgeberattraktivität.",
                "Nutzung modernster Technologie als sichtbares Differenzierungsmerkmal.",
                "Gewinnung wertvoller Daten zur kontinuierlichen Prozessoptimierung."
            ]
        }
    ]

    # Clear existing Personas to avoid mix-up with old granular ones
    # (In production, we might want to be more careful, but here we want a clean slate for the new archetypes)
    try:
        db.query(Persona).delete()
        db.commit()
        print("Cleared old Personas.")
    except Exception as e:
        print(f"Warning clearing personas: {e}")

    for p_data in archetypes:
        print(f"Creating Archetype: {p_data['name']}")
        new_persona = Persona(
            name=p_data["name"],
            pains=json.dumps(p_data["pains"]),
            gains=json.dumps(p_data["gains"])
        )
        db.add(new_persona)
    
    db.commit()

    # --- 2. Update JobRolePatterns to map to Archetypes ---
    # We map the patterns to the new 4 Archetypes
    
    mapping_updates = [
        # Wirtschaftlicher Entscheider
        {"role": "Wirtschaftlicher Entscheider", "patterns": ["geschäftsführer", "ceo", "director", "einkauf", "procurement", "finance", "cfo"]},
        
        # Operativer Entscheider
        {"role": "Operativer Entscheider", "patterns": ["housekeeping", "hausdame", "hauswirtschaft", "reinigung", "restaurant", "f&b", "werksleiter", "produktionsleiter", "lager", "logistik", "operations", "coo"]},
        
        # Infrastruktur-Verantwortlicher
        {"role": "Infrastruktur-Verantwortlicher", "patterns": ["facility", "technik", "instandhaltung", "it-leiter", "cto", "admin", "building"]},
        
        # Innovations-Treiber
        {"role": "Innovations-Treiber", "patterns": ["innovation", "digital", "transformation", "business dev", "marketing"]}
    ]
    
    # Clear old mappings to prevent confusion
    db.query(JobRolePattern).delete()
    db.commit()
    print("Cleared old JobRolePatterns.")

    for group in mapping_updates:
        role_name = group["role"]
        for pattern_text in group["patterns"]:
            print(f"Mapping '{pattern_text}' -> '{role_name}'")
            # All seeded patterns are regex contains checks
            new_pattern = JobRolePattern(
                pattern_type='regex',
                pattern_value=pattern_text, # Stored without wildcards
                role=role_name,
                priority=100, # Default priority for seeded patterns
                created_by='system'
            )
            db.add(new_pattern)

    db.commit()
    print("Archetypes and Mappings Seeded Successfully.")
    db.close()

if __name__ == "__main__":
    seed_archetypes()