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, JobRoleMapping 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 JobRoleMappings 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(JobRoleMapping).delete() db.commit() print("Cleared old JobRoleMappings.") for group in mapping_updates: role_name = group["role"] for pattern in group["patterns"]: print(f"Mapping '{pattern}' -> '{role_name}'") db.add(JobRoleMapping(pattern=pattern, role=role_name)) db.commit() print("Archetypes and Mappings Seeded Successfully.") db.close() if __name__ == "__main__": seed_archetypes()