#!/usr/bin/env python3
"""
Functiegroep Taxonomie Database

Contains the complete database of function groups used for boolean search generation.
This includes all job titles, synonyms, skills, certifications, and related data
for various technical recruitment categories.
"""

from typing import Dict
from .functiegroep import FunctieGroep


# Uitgebreide functiegroep database
FUNCTIEGROEPEN: Dict[str, FunctieGroep] = {
    # === WERKVOORBEREIDING & CALCULATIE ===
    "werkvoorbereider_elektro": FunctieGroep(
        id="werkvoorbereider_elektro",
        naam="Werkvoorbereider Elektrotechniek",
        categorie="werkvoorbereiding",
        titels=[
            "Werkvoorbereider",
            "Calculator",
            "Technisch Planner",
            "Tekenaar-Werkvoorbereider",
        ],
        synoniemen=[
            "Werkvoorbereider Elektrotechniek",
            "Calculator E-techniek",
            "Technisch Werkvoorbereider",
            "Project Planner Elektro",
            "Werkvoorbereider Electrical",
            "E-Werkvoorbereider",
            "Werkvoorbereider E&I",
            "WVB Elektro",
            "Werkvoorbereider Sterkstroom",
            "Werkvoorbereider Zwakstroom",
            "Werkvoorbereider Industriële Automatisering",
            "Tekenaar Werkvoorbereider Elektro",
            "Senior Werkvoorbereider E-techniek",
            "Junior Werkvoorbereider Elektro",
            "Medior Werkvoorbereider Elektrotechniek",
            "Werkvoorbereider Laagspanning",
            "Werkvoorbereider Middenspanning",
            "Werkvoorbereider Utiliteit",
            "Technisch Calculator Elektro",
            "Elektrotechnisch Werkvoorbereider",
            "Coördinator Werkvoorbereiding Elektro",
        ],
        english_titles=[
            "Work Planner",
            "Technical Planner",
            "Project Calculator",
            "Electrical Planner",
            "Construction Planner",
            "Electrical Work Preparer",
            "E&I Work Preparer",
            "MEP Work Planner",
            "Electrical Estimator",
            "Technical Coordinator Electrical",
            "Design Coordinator Electrical",
        ],
        skills=[
            "AutoCAD",
            "Revit",
            "E-Plan",
            "EPLAN",
            "EPLAN Electric P8",
            "EPLAN Pro Panel",
            "BIM",
            "NEN1010",
            "NEN3140",
            "calculatie",
            "werkvoorbereiding",
            "3D tekenen",
            "elektrotechniek",
            "MS Project",
            "Primavera",
            "SAP",
            "Navisworks",
            "Dialux",
            "Relux",
            "Caneco",
            "Desigo CC",
            "See Electrical",
            "NEN-EN-IEC 61439",
            "materiaalbegrotingen",
            "installatietekeningen",
            "PLC schema's",
            "laagspanningsinstallaties",
            "middenspanningsinstallaties",
            "E&I engineering",
            "schema lezen",
            "tekening lezen",
            "uittrekstaten",
        ],
        certificeringen=[
            "VCA",
            "VCA VOL",
            "VCA Basis",
            "NEN1010",
            "NEN3140",
            "BIM certificaat",
            "MBO Elektrotechniek niveau 4",
            "HBO Elektrotechniek",
            "MBO Middenkaderfunctionaris Elektrotechnische Installaties",
            "EPLAN gecertificeerd",
            "Revit MEP certificaat",
            "AutoCAD certificaat",
        ],
        look_alikes=[
            "werkvoorbereider_installatie",
            "calculator_bouw",
            "projectleider_elektro",
        ],
        typische_werkgevers=[
            "Unica",
            "Croonwolter&dros",
            "Hoppenbrouwers",
            "Kuijpers",
            "Breman",
            "Spie",
            "Engie",
            "Imtech",
            "Equans",
        ],
        concurrenten=[
            "Strukton",
            "Heijmans",
            "BAM",
            "VolkerWessels",
            "Dura Vermeer",
            "TBI",
            "GMB",
            "Van Gelder",
        ],
        sector_keywords=[
            "elektrotechniek",
            "E-techniek",
            "electrical",
            "elektro",
            "laagspanning",
            "hoogspanning",
            "middenspanning",
            "sterkstroom",
            "zwakstroom",
            "utiliteit",
            "E&I",
        ],
    ),
    "werkvoorbereider_installatie": FunctieGroep(
        id="werkvoorbereider_installatie",
        naam="Werkvoorbereider Installatietechniek",
        categorie="werkvoorbereiding",
        titels=[
            "Werkvoorbereider",
            "Calculator",
            "Technisch Planner",
            "Tekenaar-Werkvoorbereider",
        ],
        synoniemen=[
            "Werkvoorbereider Installatietechniek",
            "Calculator Installatie",
            "Werkvoorbereider W-techniek",
            "Calculator HVAC",
            "Werkvoorbereider Klimaat",
            "W-Werkvoorbereider",
            "Werkvoorbereider Klimaattechniek",
            "Werkvoorbereider Sanitair",
            "Werkvoorbereider Koeltechniek",
            "WVB Installatie",
            "WVB W-techniek",
            "Tekenaar Werkvoorbereider Installatie",
            "Senior Werkvoorbereider W-techniek",
            "Junior Werkvoorbereider Installatietechniek",
            "Medior Werkvoorbereider HVAC",
            "Werkvoorbereider Utiliteit",
            "Werkvoorbereider Sprinkler",
            "Werkvoorbereider Luchtbehandeling",
            "Technisch Calculator Installatie",
            "Coördinator Werkvoorbereiding Installatie",
            "Werkvoorbereider CV",
            "Werkvoorbereider Verwarming",
            "Werkvoorbereider Gebouwgebonden Installaties",
        ],
        english_titles=[
            "HVAC Planner",
            "Installation Planner",
            "MEP Calculator",
            "MEP Work Preparer",
            "Mechanical Work Planner",
            "HVAC Estimator",
            "Plumbing Work Preparer",
            "MEP Coordinator",
            "Technical Planner HVAC",
        ],
        skills=[
            "BIM",
            "Revit",
            "Revit MEP",
            "AutoCAD",
            "AutoCAD MEP",
            "calculatie",
            "HVAC",
            "klimaattechniek",
            "sanitair",
            "werktuigbouw",
            "MS Project",
            "Primavera",
            "SAP",
            "Navisworks",
            "Stabicad",
            "DDS-CAD",
            "Trimble",
            "Plancal Nova",
            "VABI",
            "Vabi Elements",
            "warmtepompen",
            "koelmachines",
            "luchtbehandeling",
            "materiaalbegrotingen",
            "installatietekeningen",
            "isometrieën",
            "leidingschema's",
            "P&ID",
            "CV-installaties",
            "sprinklerinstallaties",
            "tekening lezen",
            "uittrekstaten",
            "gebouwgebonden installaties",
        ],
        certificeringen=[
            "VCA",
            "VCA VOL",
            "VCA Basis",
            "F-gassen",
            "BIM certificaat",
            "MBO Installatie- en Koudetechniek niveau 4",
            "HBO Werktuigbouwkunde",
            "MBO Middenkaderfunctionaris Installaties",
            "Revit MEP certificaat",
            "ISSO gecertificeerd",
            "STEK certificaat",
            "AutoCAD certificaat",
        ],
        look_alikes=[
            "werkvoorbereider_elektro",
            "calculator_bouw",
            "projectleider_installatie",
        ],
        typische_werkgevers=[
            "Unica",
            "Kuijpers",
            "Breman",
            "Aalberts",
            "Engie",
            "Equans",
        ],
        concurrenten=["Strukton", "Heijmans", "BAM", "Croonwolter&dros"],
        sector_keywords=[
            "installatietechniek",
            "W-techniek",
            "HVAC",
            "klimaat",
            "sanitair",
            "koude",
            "warmte",
            "verwarming",
            "ventilatie",
            "luchtbehandeling",
            "utiliteit",
        ],
    ),
    "calculator_bouw": FunctieGroep(
        id="calculator_bouw",
        naam="Calculator Bouw",
        categorie="werkvoorbereiding",
        titels=["Calculator", "Kostencalculator", "Bouwcalculator", "Tender Manager"],
        synoniemen=[
            "Calculator Bouw",
            "Bouwkostencalculator",
            "Tender Calculator",
            "Aanbestedingscalculator",
            "Prijscalculator",
            "Calculator Utiliteitsbouw",
            "Calculator Woningbouw",
            "Calculator GWW",
            "Calculator Infra",
            "Senior Calculator",
            "Junior Calculator",
            "Medior Calculator",
            "Tendermanager",
            "Inschrijvingsmanager",
            "Calculatiespecialist",
            "Kostenspecialist Bouw",
            "Calculator Nieuwbouw",
            "Calculator Renovatie",
        ],
        english_titles=[
            "Quantity Surveyor",
            "Cost Estimator",
            "Tender Specialist",
            "Bid Manager",
            "Estimation Manager",
            "Construction Estimator",
            "Tender Manager",
            "Cost Engineer",
        ],
        skills=[
            "calculatie",
            "IBIS",
            "Excel",
            "kostprijsberekening",
            "bouwkunde",
            "aanbestedingen",
            "contracten",
            "Orca",
            "Kraan",
            "12Build",
            "BIM",
            "Revit",
            "RAW-bestekken",
            "UAV",
            "STABU",
            "bouwbesluit",
            "bestekken schrijven",
            "MS Project",
            "Primavera",
            "kostenbewaking",
            "nacalculatie",
            "offertes",
            "begroten",
            "inschrijvingen",
        ],
        certificeringen=[
            "VCA",
            "VCA VOL",
            "HBO Bouwkunde",
            "MBO Bouwkunde niveau 4",
            "RICS",
            "NVBK certificering",
        ],
        look_alikes=[
            "werkvoorbereider_elektro",
            "werkvoorbereider_installatie",
            "projectleider_bouw",
        ],
        typische_werkgevers=[
            "BAM",
            "Heijmans",
            "VolkerWessels",
            "Dura Vermeer",
            "Strukton",
        ],
        concurrenten=[
            "BAM",
            "Heijmans",
            "VolkerWessels",
            "Dura Vermeer",
            "Strukton",
            "TBI",
            "Ballast Nedam",
            "Van Wijnen",
        ],
        sector_keywords=[
            "bouw",
            "construction",
            "utiliteitsbouw",
            "woningbouw",
            "infra",
            "GWW",
            "nieuwbouw",
            "renovatie",
            "civiel",
        ],
    ),
    # === SOFTWARE DEVELOPMENT ===
    "software_engineer": FunctieGroep(
        id="software_engineer",
        naam="Software Engineer / Developer",
        categorie="software",
        titels=["Software Engineer", "Developer", "Software Developer", "Programmer"],
        synoniemen=[
            "Software Engineer",
            "Software Developer",
            "Developer",
            "Programmer",
            "Softwareontwikkelaar",
            "Application Developer",
            "Full Stack Developer",
            "Frontend Developer",
            "Backend Developer",
            "Web Developer",
            "Mobile Developer",
            "Cloud Developer",
            "Junior Developer",
            "Medior Developer",
            "Senior Developer",
            "Lead Developer",
            "Software Architect",
            "Technical Lead",
            "Senior Software Engineer",
            "Staff Engineer",
            "Principal Engineer",
            "Tech Lead",
            "Embedded Engineer",
            "Cloud Engineer",
            "DevOps Engineer",
            "Platform Engineer",
            "SRE",
            "Data Engineer",
            "ML Engineer",
            "AI Engineer",
        ],
        english_titles=[
            "Software Engineer",
            "Software Developer",
            "Full Stack Developer",
            "Frontend Developer",
            "Backend Developer",
            "Web Developer",
            "Mobile Developer",
            "Cloud Engineer",
            "DevOps Engineer",
            "Senior Software Engineer",
            "Staff Engineer",
            "Principal Engineer",
            "Tech Lead",
            "Embedded Engineer",
            "Cloud Engineer",
            "DevOps Engineer",
            "Platform Engineer",
            "SRE",
            "Data Engineer",
            "ML Engineer",
            "AI Engineer",
        ],
        skills=[
            "Python",
            "Java",
            "C++",
            "C#",
            ".NET",
            "Go",
            "Rust",
            "JavaScript",
            "TypeScript",
            "Node.js",
            "PHP",
            "Ruby",
            "Scala",
            "Kotlin",
            "C",
            "Embedded C",
            "Assembly",
            "Spring",
            "Spring Boot",
            "Django",
            "Flask",
            "FastAPI",
            "Express.js",
            "NestJS",
            "ASP.NET",
            "Ruby on Rails",
            "React",
            "Angular",
            "Vue.js",
            "Next.js",
            "Svelte",
            "Redux",
            "GraphQL",
            "REST API",
            "AWS",
            "Azure",
            "Google Cloud",
            "GCP",
            "Docker",
            "Kubernetes",
            "Terraform",
            "Ansible",
            "Jenkins",
            "GitLab CI",
            "GitHub Actions",
            "CI/CD",
            "PostgreSQL",
            "MySQL",
            "MongoDB",
            "Redis",
            "Elasticsearch",
            "Kafka",
            "RabbitMQ",
            "SQL",
            "NoSQL",
            "Database design",
            "Git",
            "Agile",
            "Scrum",
            "Kanban",
            "TDD",
            "Unit testing",
            "Integration testing",
            "Microservices",
            "API design",
            "System design",
            "RTOS",
            "FreeRTOS",
            "Linux kernel",
            "Device drivers",
            "ARM",
            "STM32",
            "ESP32",
            "Raspberry Pi",
        ],
        certificeringen=[
            "AWS Certified",
            "AWS Solutions Architect",
            "AWS Developer",
            "Azure Certified",
            "Azure Developer",
            "Azure Administrator",
            "Google Cloud Certified",
            "GCP Professional",
            "Scrum Master",
            "PSM",
            "PSPO",
            "SAFe",
            "Agile Coach",
            "Oracle Java Certified",
            "Microsoft Certified",
            "Kubernetes Certified",
            "CKA",
            "CKAD",
            "Docker Certified",
            "Terraform Certified",
            "HBO Informatica",
            "HBO Software Engineering",
            "MSc Computer Science",
            "BSc Informatica",
            "TU Delft",
            "TU Eindhoven",
            "Universiteit",
        ],
        look_alikes=["plc_programmeur", "embedded_engineer", "data_engineer"],
        typische_werkgevers=["ASML", "Philips", "TomTom", "Booking", "Adyen"],
        concurrenten=["ASML", "Philips", "TomTom", "Booking", "Adyen", "Exact"],
        sector_keywords=[
            "software",
            "IT",
            "development",
            "programmeren",
            "tech",
            "digital",
        ],
    ),
    # === PRODUCTIE & OPERATORS ===
    "operator": FunctieGroep(
        id="operator",
        naam="Operator / Procesoperator",
        categorie="productie",
        titels=["Operator", "Procesoperator", "Machine Operator"],
        synoniemen=[
            "Operator",
            "Procesoperator",
            "Machine Operator",
            "Productieoperator",
            "All-round Operator",
            "Meewerkend Voorman",
            "Senior Operator",
            "Junior Operator",
            "1e Operator",
            "Eerste Operator",
            "Hoofd Operator",
            "Lead Operator",
            "Ervaren Operator",
            "Procesoperator A",
            "Procesoperator B",
            "Procesoperator C",
            "Procesoperator D",
            "Chemical Operator",
            "Chemisch Operator",
            "Petrochemisch Operator",
            "Refinery Operator",
            "Raffinaderij Operator",
            "Plant Operator",
            "Control Room Operator",
            "Paneloperator",
            "DCS Operator",
            "Buitenoperator",
            "Field Operator",
            "Outside Operator",
            "Food Operator",
            "Voedingsmiddelen Operator",
            "Farmaceutisch Operator",
            "GMP Operator",
            "Cleanroom Operator",
            "Steriele Operator",
            "Productie Operator Food",
            "Zuivel Operator",
            "Brouwerij Operator",
            "Energie Operator",
            "Power Plant Operator",
            "Utilities Operator",
            "WKK Operator",
            "Stoomketel Operator",
            "Koelinstallatie Operator",
            "Waterzuivering Operator",
            "RWZI Operator",
            "Afvalverwerking Operator",
            "Milieutechnisch Operator",
            "Batch Operator",
            "Reactor Operator",
            "Distillatie Operator",
            "Tankpark Operator",
            "Vuloperator",
            "Blend Operator",
        ],
        english_titles=[
            "Process Operator",
            "Machine Operator",
            "Production Operator",
            "Chemical Operator",
            "Plant Operator",
            "Control Room Operator",
            "Panel Operator",
            "Field Operator",
            "DCS Operator",
            "Senior Operator",
            "Lead Operator",
            "Shift Operator",
        ],
        skills=[
            "procesbesturing",
            "DCS",
            "Honeywell",
            "Emerson DeltaV",
            "Yokogawa",
            "ABB 800xA",
            "Siemens PCS7",
            "controlekamer",
            "panelbediening",
            "SCADA",
            "HMI bediening",
            "trending",
            "alarmbeheer",
            "destillatie",
            "rectificatie",
            "extractie",
            "reactortechniek",
            "warmtewisseling",
            "pompbediening",
            "compressoren",
            "drukregeling",
            "temperatuurregeling",
            "niveauregeling",
            "P&ID",
            "processchema",
            "flowschema lezen",
            "5S",
            "Lean",
            "TPM",
            "Six Sigma",
            "kaizen",
            "kwaliteitscontrole",
            "QC",
            "monstername",
            "labwerk",
            "veiligheid",
            "LMRA",
            "TRA",
            "permit to work",
            "lockout tagout",
            "LOTO",
            "persoonlijke beschermingsmiddelen",
            "klein onderhoud",
            "storingen verhelpen",
            "troubleshooting",
            "preventief onderhoud",
            "dagelijkse inspecties",
            "ploegendienst",
            "volcontinudienst",
            "5-ploegen",
            "3-ploegen",
            "nachtdienst",
            "weekenddienst",
            "consignatiedienst",
        ],
        certificeringen=[
            "VAPRO A",
            "VAPRO B",
            "VAPRO C",
            "VAPRO D",
            "VAPRO Operator",
            "Procesoperator VAPRO",
            "MBO Procestechniek niveau 2",
            "MBO Procestechniek niveau 3",
            "MBO Procestechniek niveau 4",
            "Procesoperator opleiding",
            "VCA VOL",
            "VCA Basis",
            "VCA Petrochemie",
            "BHV",
            "EHBO",
            "Ademlucht",
            "Perslucht",
            "Hoogwerker certificaat",
            "Valbeveiliging",
            "GMP",
            "HACCP",
            "IFS",
            "BRC",
            "FSSC 22000",
            "ADR",
            "Gevaarlijke stoffen",
            "Heftruck certificaat",
            "Reachtruck",
            "EPT",
            "Kraan certificaat",
            "Hijsen en heffen",
            "MBO Operator",
            "BBL Operator",
            "BOL Procestechniek",
        ],
        look_alikes=["productiemedewerker", "cnc_operator", "verspaner"],
        typische_werkgevers=["Shell", "DOW", "SABIC", "Tata Steel", "DSM"],
        concurrenten=["Shell", "DOW", "SABIC", "Tata Steel", "DSM", "AkzoNobel"],
        sector_keywords=[
            "productie",
            "proces",
            "industrie",
            "manufacturing",
            "chemie",
            "petrochemie",
            "food",
            "farma",
        ],
    ),
}
