package iace

// GetCNCHazardPatterns returns hazard patterns specific to CNC machining
// centres, lathes, milling machines, grinding machines, and drilling machines.
// Part 1: tool breakage, collision, KSS exposure, welding. IDs: HP1400-HP1419.
// Part 2 (HP1420-HP1434) is in hazard_patterns_cnc_ext.go.
func GetCNCHazardPatterns() []HazardPattern {
	cncTypes := []string{"cnc", "lathe", "milling", "grinding", "drilling", "machining_centre"}
	return []HazardPattern{
		// ── Tool Breakage / Projectile (HP1400-HP1404) ──────────────
		{
			ID: "HP1400", NameDE: "Werkzeugbruch bei Hochgeschwindigkeitsbearbeitung", NameEN: "Tool breakage at high speed machining",
			RequiredComponentTags: []string{"cutting_tool", "high_speed"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M409", "M061", "M025"},
			SuggestedEvidenceIDs:  []string{"E01", "E08"},
			Priority: 90, MachineTypes: cncTypes,
			OperationalStates: []string{"automatic_operation"},
			HumanRoles:        []string{"operator"},
			ScenarioDE: "Werkzeug bricht bei Hochgeschwindigkeitsbearbeitung und Bruchstuecke durchschlagen Schutzscheibe",
			TriggerDE:  "Werkzeugverschleiss, Materiallunker oder Programmierfehler fuehrt zu ploetzlichem Werkzeugbruch",
			HarmDE:     "Durchdringende Verletzung durch Werkzeugfragment, Augenverletzung durch Splitter",
			AffectedDE: "Bedienpersonal", ZoneDE: "Bearbeitungsraum, Bedienseite",
			DefaultSeverity: 4, DefaultExposure: 3,
		},
		{
			ID: "HP1401", NameDE: "Werkstueck loest sich aus Spannung", NameEN: "Workpiece released from clamping",
			RequiredComponentTags: []string{"workpiece_holder"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M411", "M008", "M061"},
			SuggestedEvidenceIDs:  []string{"E01", "E53"},
			Priority: 92, MachineTypes: cncTypes,
			OperationalStates: []string{"automatic_operation", "manual_operation"},
			ScenarioDE: "Werkstueck loest sich waehrend der Bearbeitung aus der Spannvorrichtung und wird herausgeschleudert",
			TriggerDE:  "Unzureichende Spannkraft, falscher Spannmitteleinsatz oder Vibrationen lockern Spannung",
			HarmDE:     "Quetschung, Prellungen oder Knochenbrueche durch herausgeschleudertes Werkstueck",
			AffectedDE: "Bedienpersonal", ZoneDE: "Bearbeitungsraum, Maschinenumgebung",
			DefaultSeverity: 4, DefaultExposure: 3,
		},
		{
			ID: "HP1402", NameDE: "Schleifscheibenbruch", NameEN: "Grinding wheel burst",
			RequiredComponentTags: []string{"grinding_wheel"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M412", "M413", "M061"},
			SuggestedEvidenceIDs:  []string{"E01", "E52"},
			Priority: 94, MachineTypes: []string{"grinding"},
			RequiresExpertCalculation: true,
			ExpertHintDE: "Schleifscheibenfestigkeit nach EN 12413 pruefen. Schutzhaube nach EN 13218 dimensionieren.",
			ScenarioDE: "Schleifscheibe bricht bei Betrieb und Fragmente durchschlagen die Schutzhaube",
			TriggerDE:  "Ueberschreitung der zulaessigen Drehzahl, Materialfehler oder thermischer Schock",
			HarmDE:     "Schwere Schnitt- und Durchdringungsverletzungen durch Scheibenfragmente",
			AffectedDE: "Bedienpersonal, Umstehende", ZoneDE: "Bearbeitungsraum, seitlich der Maschine",
			DefaultSeverity: 5, DefaultExposure: 2,
		},
		{
			ID: "HP1403", NameDE: "Spaeneflug und Spaenewickel an Drehmaschine", NameEN: "Chip fly and chip entanglement on lathe",
			RequiredComponentTags: []string{"cutting_tool", "rotating_part"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M410", "M061", "M169"},
			SuggestedEvidenceIDs:  []string{"E01", "E08"},
			Priority: 82, MachineTypes: []string{"lathe", "cnc"},
			OperationalStates: []string{"automatic_operation", "manual_operation"},
			ScenarioDE: "Heisse, scharfkantige Metallspaene werden weggeschleudert oder wickeln sich um rotierende Teile",
			TriggerDE:  "Spanbildung bei Drehbearbeitung ohne Spanbrecher oder geschlossene Einhausung",
			HarmDE:     "Schnitt- und Brandverletzungen an Haenden und Armen, Augenverletzungen",
			AffectedDE: "Bedienpersonal", ZoneDE: "Bearbeitungsraum, Bedienseite",
			DefaultSeverity: 3, DefaultExposure: 4,
		},
		{
			ID: "HP1404", NameDE: "Funkenflug beim Schleifen", NameEN: "Spark generation during grinding",
			RequiredComponentTags: []string{"grinding_wheel"},
			GeneratedHazardCats:   []string{"fire_explosion", "mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M169", "M383", "M061"},
			SuggestedEvidenceIDs:  []string{"E01"},
			Priority: 75, MachineTypes: []string{"grinding"},
			ScenarioDE: "Funkenflug beim Schleifen entzuendet brennbare Materialien in der Umgebung",
			TriggerDE:  "Schleifvorgang an Stahl erzeugt Funken die auf oelgetraenkte Lappen oder KSS-Rueckstaende treffen",
			HarmDE:     "Brandverletzungen, Maschinenbrand",
			AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenumgebung, Spaenebehaelter",
			DefaultSeverity: 3, DefaultExposure: 3,
		},

		// ── Collision / Programming (HP1405-HP1409) ─────────────────
		{
			ID: "HP1405", NameDE: "Kollision Werkzeug/Werkstueck bei Programmfehler", NameEN: "Tool-workpiece collision due to programming error",
			RequiredComponentTags: []string{"cutting_tool", "programmable"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M041", "M039", "M409"},
			SuggestedEvidenceIDs:  []string{"E01", "E14"},
			Priority: 85, MachineTypes: cncTypes,
			OperationalStates: []string{"automatic_operation"},
			ScenarioDE: "CNC-Programm enthaelt falschen Verfahrweg und Werkzeug kollidiert mit Werkstueck oder Spannmittel",
			TriggerDE:  "Programmierfehler bei G-Code, falscher Werkzeug-Offset oder fehlerhafte Nullpunktverschiebung",
			HarmDE:     "Werkzeugbruch mit Splitterflug, Maschinenschaden, Werkstueck wird herausgeschleudert",
			AffectedDE: "Bedienpersonal, Einrichter", ZoneDE: "Bearbeitungsraum",
			DefaultSeverity: 3, DefaultExposure: 3,
		},
		{
			ID: "HP1406", NameDE: "Automatischer Werkzeugwechsel bei Aufenthalt im Gefahrbereich", NameEN: "Automatic tool change while person in danger zone",
			RequiredComponentTags: []string{"cutting_tool", "programmable"},
			RequiredEnergyTags:    []string{"kinetic_translational"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M067", "M071", "M255"},
			SuggestedEvidenceIDs:  []string{"E01", "E08"},
			Priority: 88, MachineTypes: cncTypes,
			OperationalStates: []string{"automatic_operation"},
			ScenarioDE: "Werkzeugwechsler bewegt sich waehrend Bediener im Maschinenraum fuer Kontrolle oder Reinigung",
			TriggerDE:  "Fehlende Verriegelung der Schutztuer oder Umgehung des Sicherheitsschalters",
			HarmDE:     "Quetschung an Werkzeugwechsler, Schnittverletzung durch rotierendes Werkzeug",
			AffectedDE: "Bedienpersonal, Einrichter", ZoneDE: "Werkzeugmagazin, Bearbeitungsraum",
			DefaultSeverity: 4, DefaultExposure: 2,
		},
		{
			ID: "HP1407", NameDE: "Referenzfahrt ohne Personenfreiheit", NameEN: "Homing movement without person clearance",
			RequiredComponentTags: []string{"moving_part", "programmable"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M042", "M071"},
			SuggestedEvidenceIDs:  []string{"E01"},
			Priority: 86, MachineTypes: cncTypes,
			OperationalStates: []string{"homing", "startup"},
			HumanRoles:        []string{"operator", "maintenance_tech"},
			ScenarioDE: "Achsen fahren bei Referenzfahrt unkontrolliert in Endlage waehrend Person im Maschinenraum",
			TriggerDE:  "Referenzfahrt nach Stoerung oder Neustart ohne Pruefung ob Maschinenraum frei",
			HarmDE:     "Quetschung zwischen Schlitten und Maschinenrahmen",
			AffectedDE: "Bedienpersonal, Einrichter", ZoneDE: "Verfahrbereich der Achsen",
			DefaultSeverity: 4, DefaultExposure: 2,
		},
		{
			ID: "HP1408", NameDE: "Falscher Werkzeug-Offset", NameEN: "Wrong tool offset after setup",
			RequiredComponentTags: []string{"cutting_tool", "programmable"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M008", "M001", "M061", "M141"},
			SuggestedEvidenceIDs:  []string{"E14"},
			Priority: 78, MachineTypes: cncTypes,
			OperationalStates: []string{"teach_mode"},
			HumanRoles:        []string{"programmer"},
			ScenarioDE: "Nach Werkzeugwechsel wird falscher Offset programmiert und Werkzeug faehrt in Spannmittel",
			TriggerDE:  "Manuelle Eingabe des Werkzeug-Offsets mit Vorzeichen- oder Wertfehler",
			HarmDE:     "Werkzeugbruch, Werkstueck-Beschaedigung, Splitterflug",
			AffectedDE: "Programmierer, Einrichter", ZoneDE: "Bearbeitungsraum",
			DefaultSeverity: 3, DefaultExposure: 3,
		},
		{
			ID: "HP1409", NameDE: "Einrichtbetrieb ohne reduzierte Vorschubgeschwindigkeit", NameEN: "Setup mode without reduced feed rate",
			RequiredComponentTags: []string{"moving_part", "programmable"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M012", "M049"},
			SuggestedEvidenceIDs:  []string{"E01"},
			Priority: 84, MachineTypes: cncTypes,
			OperationalStates: []string{"teach_mode", "manual_operation"},
			HumanRoles:        []string{"programmer", "maintenance_tech"},
			ScenarioDE: "Achsen verfahren mit voller Produktionsgeschwindigkeit",
			TriggerDE:  "Fehlende Geschwindigkeitsbegrenzung im Einrichtmodus oder Umgehung",
			HarmDE:     "Quetschung oder Schlagverletzung durch schnell verfahrende Maschinenteile",
			AffectedDE: "Einrichter, Programmierer", ZoneDE: "Verfahrbereich der Achsen",
			DefaultSeverity: 4, DefaultExposure: 3,
		},

		// ── KSS Exposure (HP1410-HP1414) ────────────────────────────
		{
			ID: "HP1410", NameDE: "KSS-Aerosol-Inhalation", NameEN: "MWF aerosol inhalation",
			RequiredComponentTags: []string{"cutting_tool"},
			RequiredEnergyTags:    []string{"kinetic_rotational"},
			GeneratedHazardCats:   []string{"chemical_risk"},
			SuggestedMeasureIDs:   []string{"M405", "M406", "M418"},
			SuggestedEvidenceIDs:  []string{"E01", "E29", "E51"},
			Priority: 80, MachineTypes: cncTypes,
			OperationalStates: []string{"automatic_operation", "manual_operation"},
			HumanRoles:        []string{"operator"},
			ScenarioDE: "Bediener atmet KSS-Aerosole und -Daempfe ein die bei Hochgeschwindigkeitsbearbeitung entstehen",
			TriggerDE:  "Unzureichende Absaugung oder geoeffnete Maschinentuer waehrend Bearbeitung",
			HarmDE:     "Atemwegsreizung, Alveolitis, Lungenfunktionsstoerung bei Langzeitexposition",
			AffectedDE: "Bedienpersonal", ZoneDE: "Bedienbereich vor der Maschine",
			DefaultSeverity: 3, DefaultExposure: 4,
		},
		{
			ID: "HP1411", NameDE: "KSS-Hautkontakt und Hauterkrankung", NameEN: "MWF skin contact and dermatitis",
			RequiredComponentTags: []string{"cutting_tool"},
			GeneratedHazardCats:   []string{"chemical_risk"},
			SuggestedMeasureIDs:   []string{"M408", "M376", "M171"},
			SuggestedEvidenceIDs:  []string{"E01", "E55"},
			Priority: 78, MachineTypes: cncTypes,
			HumanRoles: []string{"operator", "maintenance_tech"},
			ScenarioDE: "Bediener hat direkten Hautkontakt mit KSS beim Werkstueckhandling oder bei Maschinenreinigung",
			TriggerDE:  "Wiederholter Hautkontakt mit KSS ohne Schutzhandschuhe oder Hautschutzmittel",
			HarmDE:     "Kontaktekzem, allergische Hautreaktion, Oelakne",
			AffectedDE: "Bedienpersonal, Wartungspersonal", ZoneDE: "Bedienbereich, Maschineninneres",
			DefaultSeverity: 2, DefaultExposure: 5,
		},
		{
			ID: "HP1412", NameDE: "Biologische Gefaehrdung durch kontaminierten KSS", NameEN: "Biological hazard from contaminated MWF",
			RequiredComponentTags: []string{"cutting_tool"},
			GeneratedHazardCats:   []string{"chemical_risk"},
			SuggestedMeasureIDs:   []string{"M406", "M407", "M420"},
			SuggestedEvidenceIDs:  []string{"E01", "E51"},
			Priority: 76, MachineTypes: cncTypes,
			OperationalStates: []string{"maintenance"},
			HumanRoles:        []string{"maintenance_tech"},
			ScenarioDE: "Wartungspersonal kommt bei KSS-Wechsel mit mikrobiell belastetem KSS in Kontakt",
			TriggerDE:  "Keimwachstum in KSS-System durch fehlende Konzentrationskontrolle oder zu lange Standzeit",
			HarmDE:     "Atemwegsinfektionen, Hautinfektionen, allergische Reaktionen",
			AffectedDE: "Wartungspersonal", ZoneDE: "KSS-Tank, Maschineninneres",
			DefaultSeverity: 3, DefaultExposure: 3,
		},
		{
			ID: "HP1413", NameDE: "KSS-Brandgefahr durch Oelnebel", NameEN: "MWF fire hazard from oil mist",
			RequiredComponentTags: []string{"cutting_tool"},
			RequiredEnergyTags:    []string{"kinetic_rotational"},
			GeneratedHazardCats:   []string{"fire_explosion"},
			SuggestedMeasureIDs:   []string{"M405", "M383", "M385"},
			SuggestedEvidenceIDs:  []string{"E01"},
			Priority: 82, MachineTypes: cncTypes,
			ScenarioDE: "KSS-Oelnebel im Maschinenraum entzuendet sich durch Funken oder heisse Spaene",
			TriggerDE:  "Unzureichende KSS-Absaugung bei Minimalmengenschmierung oder MMS-Trockenlauf",
			HarmDE:     "Maschinenbrand, Verbrennungen, Rauchgasvergiftung",
			AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenraum, Oelnebelabscheider",
			DefaultSeverity: 4, DefaultExposure: 2,
		},
		{
			ID: "HP1414", NameDE: "Rutschgefahr durch KSS-Leckage am Boden", NameEN: "Slip hazard from MWF leakage on floor",
			RequiredComponentTags: []string{"cutting_tool"},
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M538", "M484", "M141"},
			SuggestedEvidenceIDs:  []string{"E01"},
			Priority: 65, MachineTypes: cncTypes,
			ScenarioDE: "KSS-Leckage erzeugt rutschigen Bodenbelag um die Werkzeugmaschine",
			TriggerDE:  "Undichte KSS-Leitungen, ueberlaufender KSS-Tank oder Spritzerauswurf",
			HarmDE:     "Sturzunfaelle mit Prellungen, Knochenbruechen",
			AffectedDE: "Bedienpersonal, Passanten", ZoneDE: "Maschinenumgebung, Verkehrswege",
			DefaultSeverity: 2, DefaultExposure: 4,
		},

		// ── Welding-specific (HP1415-HP1419) ────────────────────────
		{
			ID: "HP1415", NameDE: "Schweissrauch-Inhalation", NameEN: "Welding fume inhalation",
			RequiredComponentTags: []string{"welding_equipment"},
			GeneratedHazardCats:   []string{"chemical_risk"},
			SuggestedMeasureIDs:   []string{"M414", "M415", "M418"},
			SuggestedEvidenceIDs:  []string{"E01", "E29"},
			Priority: 85, MachineTypes: []string{"welding", "cnc"},
			HumanRoles: []string{"operator"},
			ScenarioDE: "Schweisser atmet Schweissrauch mit Metalloxiden und ggf. krebserzeugenden Stoffen ein",
			TriggerDE:  "Fehlende oder unzureichende Schweissrauch-Absaugung, Schweissen in beengten Raeumen",
			HarmDE:     "Metallrauchfieber, Atemwegserkrankung, Lungenkarzinom bei Chrom-VI/Nickel",
			AffectedDE: "Schweisser", ZoneDE: "Schweissplatz, angrenzende Arbeitsplaetze",
			DefaultSeverity: 4, DefaultExposure: 4,
		},
		{
			ID: "HP1416", NameDE: "UV-Strahlung beim Lichtbogenschweissen", NameEN: "UV radiation from arc welding",
			RequiredComponentTags: []string{"welding_equipment"},
			GeneratedHazardCats:   []string{"radiation_hazard"},
			SuggestedMeasureIDs:   []string{"M392", "M169"},
			SuggestedEvidenceIDs:  []string{"E01"},
			Priority: 80, MachineTypes: []string{"welding"},
			HumanRoles: []string{"operator", "bystander"},
			ScenarioDE: "UV-Strahlung des Lichtbogens trifft ungeschuetzte Haut oder Augen",
			TriggerDE:  "Fehlender Schweisserschutzschild, keine Abschirmung des Schweissplatzes",
			HarmDE:     "Verblitzen der Augen, Sonnenbrand-aehnliche Hautschaeden",
			AffectedDE: "Schweisser, Umstehende", ZoneDE: "Schweissplatz, angrenzende Bereiche",
			DefaultSeverity: 3, DefaultExposure: 4,
		},
		{
			ID: "HP1417", NameDE: "Spritzer und Schlacke beim Schweissen", NameEN: "Spatter and slag during welding",
			RequiredComponentTags: []string{"welding_equipment"},
			GeneratedHazardCats:   []string{"thermal_hazard", "mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M169", "M174", "M095"},
			SuggestedEvidenceIDs:  []string{"E01"},
			Priority: 72, MachineTypes: []string{"welding"},
			HumanRoles: []string{"operator"},
			ScenarioDE: "Schweissspritzer und heisse Schlacke treffen Haut oder entzuenden brennbare Materialien",
			TriggerDE:  "Schweissvorgang ohne Schutzschuerze, brennbare Materialien in Spritzweite",
			HarmDE:     "Brandwunden, Augenverletzung, Brand in der Umgebung",
			AffectedDE: "Schweisser", ZoneDE: "Schweissplatz, Boden im Spritzbereich",
			DefaultSeverity: 3, DefaultExposure: 4,
		},
		{
			ID: "HP1418", NameDE: "Elektrischer Schlag durch Schweissgeraet", NameEN: "Electric shock from welding equipment",
			RequiredComponentTags: []string{"welding_equipment"},
			RequiredEnergyTags:    []string{"electrical_energy"},
			GeneratedHazardCats:   []string{"electrical_hazard"},
			SuggestedMeasureIDs:   []string{"M087", "M090", "MN025"},
			SuggestedEvidenceIDs:  []string{"E01", "E10"},
			Priority: 82, MachineTypes: []string{"welding"},
			ScenarioDE: "Schweisser beruehrt spannungsfuehrende Teile des Schweissstromkreises",
			TriggerDE:  "Defekte Isolation am Schweissbrenner, feuchte Umgebung, beschaedigtes Kabel",
			HarmDE:     "Stromschlag mit Herzkammerflimmern, Verbrennungen",
			AffectedDE: "Schweisser", ZoneDE: "Schweissbrenner, Masseklemme, Werkstueck",
			DefaultSeverity: 5, DefaultExposure: 3,
		},
		{
			ID: "HP1419", NameDE: "Explosionsgefahr beim Schweissen an Hohlkoerpern", NameEN: "Explosion when welding on hollow bodies",
			RequiredComponentTags: []string{"welding_equipment"},
			GeneratedHazardCats:   []string{"fire_explosion"},
			SuggestedMeasureIDs:   []string{"M290", "M383"},
			SuggestedEvidenceIDs:  []string{"E01", "E35"},
			Priority: 90, MachineTypes: []string{"welding"},
			RequiresExpertCalculation: true,
			ExpertHintDE: "Vor Schweissarbeiten an Behaeltern: Freimessen auf brennbare Gase/Daempfe.",
			ScenarioDE: "Schweissflamme oder Lichtbogen entzuendet Restgas oder -daempfe in Hohlkoerper",
			TriggerDE:  "Schweissen an nicht freigemessenem Behaelter, Fass oder Rohrleitung",
			HarmDE:     "Explosion mit schweren Verletzungen, toedliche Druckwelle",
			AffectedDE: "Schweisser, Umstehende", ZoneDE: "Schweissplatz, Behaelterinneres",
			DefaultSeverity: 5, DefaultExposure: 2,
		},
	}
}
