From c7e197d107845aac7295b0e6ef5bf8a50505c259 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Sun, 10 May 2026 08:43:21 +0200 Subject: [PATCH] =?UTF-8?q?feat(iace):=20Sprint=203C=20=E2=80=94=20Werkzeu?= =?UTF-8?q?gmaschinen=20(CNC/Dreh/Fraes/Schleifen/Schweissen)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 35 CNC-spezifische Hazard Patterns (HP1400-HP1434): - Werkzeugbruch, Schleifscheibenbruch, Spaeneflug, Kollision - KSS-Exposition (Aerosol, Hautkontakt, Keimbelastung, Brand) - Schweissrauch, UV-Strahlung, Spritzer, Stromschlag, Ex-Hohlkoerper - Maschinenspezifisch: Quetschung Tuer, Spindelerfassung, Walzeneinzug - Alle mit MachineTypes, OperationalStates, HumanRoles annotiert 18 Metalworking-Massnahmen (M404-M421), RAG-validiert gegen TRGS 551/528: - KSS: Substitution, Aerosolabsaugung, Konzentrationskontrolle, Wechselintervalle, Hautschutzplan - Schleifen: Schleifscheiben-Pruefung, Drehzahlbegrenzung - Schweissen: Fortluft-Absaugung, brennerintegrierte Absaugung, raeumliche Trennung, Schweisserschutzschild - Allgemein: AGW-Ueberwachung, Arbeitsmedizin, Reinigung, Unterweisung 5 Evidenztypen (E51-E55): KSS-Analyse, Schleifscheiben-/Spannmittel-Pruefung, Schweissnaht-Qualifikation Co-Authored-By: Claude Opus 4.6 (1M context) --- .../internal/iace/hazard_patterns_cnc.go | 306 ++++++++++++++++++ .../internal/iace/hazard_patterns_cnc_ext.go | 228 +++++++++++++ .../internal/iace/measures_library.go | 1 + .../iace/measures_library_metalworking.go | 38 +++ .../internal/iace/pattern_engine.go | 2 + .../internal/iace/tag_resolver.go | 6 + 6 files changed, 581 insertions(+) create mode 100644 ai-compliance-sdk/internal/iace/hazard_patterns_cnc.go create mode 100644 ai-compliance-sdk/internal/iace/hazard_patterns_cnc_ext.go create mode 100644 ai-compliance-sdk/internal/iace/measures_library_metalworking.go diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_cnc.go b/ai-compliance-sdk/internal/iace/hazard_patterns_cnc.go new file mode 100644 index 0000000..8b6cf92 --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_cnc.go @@ -0,0 +1,306 @@ +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 nach Einrichtung", NameEN: "Wrong tool offset after setup", + RequiredComponentTags: []string{"cutting_tool", "programmable"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M041", "M050"}, + 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 im Einrichtbetrieb 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{"M420", "M101"}, + 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"}, + 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, + }, + } +} diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_cnc_ext.go b/ai-compliance-sdk/internal/iace/hazard_patterns_cnc_ext.go new file mode 100644 index 0000000..7c27e5f --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_cnc_ext.go @@ -0,0 +1,228 @@ +package iace + +// GetCNCHazardPatternsExt returns the second batch of CNC/metalworking +// hazard patterns: machine-specific mechanical, ergonomic/noise, +// software/control, and maintenance. IDs: HP1420-HP1434. +func GetCNCHazardPatternsExt() []HazardPattern { + cncTypes := []string{"cnc", "lathe", "milling", "grinding", "drilling", "machining_centre"} + return []HazardPattern{ + // ── Machine-specific mechanical (HP1420-HP1424) ───────────── + { + ID: "HP1420", NameDE: "Quetschung an Maschinentuer (CNC)", NameEN: "Crushing at machine door (CNC)", + RequiredComponentTags: []string{"moving_part"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M067", "M069"}, + SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 78, MachineTypes: cncTypes, + ScenarioDE: "Bediener wird an kraftbetaetigter CNC-Maschinentuer eingequetscht", + TriggerDE: "Tuer schliesst automatisch waehrend Bediener im Tuerbereich steht", + HarmDE: "Quetschung an Oberschenkel, Rumpf oder Arm", + AffectedDE: "Bedienpersonal", ZoneDE: "Maschinentuer-Schliesskante", + DefaultSeverity: 3, DefaultExposure: 4, + }, + { + ID: "HP1421", NameDE: "Erfassen durch rotierende Welle (Drehmaschine)", NameEN: "Entanglement by rotating spindle (lathe)", + RequiredComponentTags: []string{"rotating_part"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M061", "M240", "M067"}, + SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 92, MachineTypes: []string{"lathe"}, + OperationalStates: []string{"automatic_operation", "manual_operation"}, + HumanRoles: []string{"operator"}, + ScenarioDE: "Kleidung, Haare oder Handschuhe werden von rotierender Hauptspindel erfasst und aufgewickelt", + TriggerDE: "Fehlende Einhausung der Spindel, Arbeiten mit Handschuhen an Drehmaschine", + HarmDE: "Skalpierung, Abriss von Koerperteilen, Strangulation", + AffectedDE: "Bedienpersonal", ZoneDE: "Spindelbereich, Drehmitte", + DefaultSeverity: 5, DefaultExposure: 3, + }, + { + ID: "HP1422", NameDE: "Einzugsgefahr an Vorschubwalzen", NameEN: "Drawing-in hazard at feed rollers", + RequiredComponentTags: []string{"rotating_part"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M239", "M061"}, + SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 85, MachineTypes: cncTypes, + ScenarioDE: "Finger oder Hand werden zwischen Vorschubwalzen und Werkstueck eingezogen", + TriggerDE: "Manuelles Zufuehren von Material ohne Schutzeinrichtung am Walzenspalt", + HarmDE: "Quetschung, Amputation von Fingern", + AffectedDE: "Bedienpersonal", ZoneDE: "Materialzufuehrung, Walzenspalt", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP1423", NameDE: "Absturz schwerer Maschinenteile bei Wartung", NameEN: "Heavy machine part falling during maintenance", + RequiredComponentTags: []string{"moving_part"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M245", "M210"}, + SuggestedEvidenceIDs: []string{"E01"}, + Priority: 80, MachineTypes: cncTypes, + OperationalStates: []string{"maintenance"}, + HumanRoles: []string{"maintenance_tech"}, + ScenarioDE: "Schwere Maschinenteile (Spindelstock, Revolverkopf) fallen bei Demontage unkontrolliert herab", + TriggerDE: "Fehlende Abstuetzmittel oder Hebezeuge bei Wartung schwerer Baugruppen", + HarmDE: "Quetschung von Hand oder Fuss, Knochenbrueche", + AffectedDE: "Wartungspersonal", ZoneDE: "Maschineninneres, Wartungszugang", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP1424", NameDE: "Hydraulik-Leckage an Spannvorrichtung", NameEN: "Hydraulic leak at clamping device", + RequiredComponentTags: []string{"workpiece_holder", "hydraulic_part"}, + GeneratedHazardCats: []string{"pneumatic_hydraulic", "mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M099", "M411"}, + SuggestedEvidenceIDs: []string{"E01", "E38"}, + Priority: 78, MachineTypes: cncTypes, + ScenarioDE: "Hydraulikleckage an Spannvorrichtung fuehrt zu Spannkraftverlust waehrend Bearbeitung", + TriggerDE: "Verschleiss der Hydraulikdichtungen, Schlauchbruch am Spannzylinder", + HarmDE: "Werkstueck wird herausgeschleudert, Hydraulikoel-Hautinjektion", + AffectedDE: "Bedienpersonal", ZoneDE: "Spannvorrichtung, Hydraulikanschluss", + DefaultSeverity: 4, DefaultExposure: 2, + }, + + // ── Ergonomic / Noise (HP1425-HP1429) ─────────────────────── + { + ID: "HP1425", NameDE: "Laermexposition an Werkzeugmaschinen", NameEN: "Noise exposure at machine tools", + RequiredComponentTags: []string{"cutting_tool"}, + RequiredEnergyTags: []string{"kinetic_rotational"}, + GeneratedHazardCats: []string{"noise_source"}, + SuggestedMeasureIDs: []string{"M347", "M349", "M059"}, + SuggestedEvidenceIDs: []string{"E01", "E12", "E29"}, + Priority: 65, MachineTypes: cncTypes, + ScenarioDE: "Laerm durch Zerspanungsprozess, Spindel und Kuehlmittelpumpe uebersteigt Grenzwerte", + TriggerDE: "Betrieb mehrerer Maschinen in Halle ohne schalldaemmende Einhausung", + HarmDE: "Laermschwerhoerigkeit bei Dauerexposition", + AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenhalle", + DefaultSeverity: 2, DefaultExposure: 5, + }, + { + ID: "HP1426", NameDE: "Hand-Arm-Vibration bei Handschleifarbeit", NameEN: "Hand-arm vibration from manual grinding", + RequiredComponentTags: []string{"grinding_wheel"}, + GeneratedHazardCats: []string{"vibration_source"}, + SuggestedMeasureIDs: []string{"M351", "M038"}, + SuggestedEvidenceIDs: []string{"E01", "E42"}, + Priority: 60, MachineTypes: []string{"grinding"}, + HumanRoles: []string{"operator"}, + ScenarioDE: "Bediener ist bei laengerem Handschleifen Hand-Arm-Vibrationen ausgesetzt", + TriggerDE: "Dauerhafte Nutzung von Winkelschleifern oder Handschleifmaschinen", + HarmDE: "Weissfinger-Krankheit, Durchblutungsstoerungen, Nervenschaeden", + AffectedDE: "Bedienpersonal", ZoneDE: "Handwerkzeugbereich", + DefaultSeverity: 2, DefaultExposure: 4, + }, + { + ID: "HP1427", NameDE: "Ergonomische Belastung bei Werkstueckhandling", NameEN: "Ergonomic strain from workpiece handling", + RequiredComponentTags: []string{"workpiece_holder"}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M354", "M031"}, + SuggestedEvidenceIDs: []string{"E01", "E30"}, + Priority: 55, MachineTypes: cncTypes, + HumanRoles: []string{"operator"}, + ScenarioDE: "Bediener hebt und positioniert schwere Werkstuecke manuell in Spannvorrichtung", + TriggerDE: "Wiederholtes manuelles Handling von Werkstuecken ueber 10 kg ohne Hebevorrichtung", + HarmDE: "Rueckenschmerzen, Bandscheibenschaeden, Muskel-Skelett-Erkrankungen", + AffectedDE: "Bedienpersonal", ZoneDE: "Belade-/Entladebereich", + DefaultSeverity: 2, DefaultExposure: 5, + }, + { + ID: "HP1428", NameDE: "Stolpergefahr durch Kabel und Schlaeuche", NameEN: "Trip hazard from cables and hoses", + RequiredComponentTags: []string{"cutting_tool"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M009", "M144"}, + SuggestedEvidenceIDs: []string{"E01"}, + Priority: 50, MachineTypes: cncTypes, + ScenarioDE: "KSS-Schlaeuche, Druckluftleitungen oder Elektrokabel liegen im Verkehrsweg", + TriggerDE: "Provisorische Verlegung von Versorgungsleitungen ohne Kabelbruecke", + HarmDE: "Sturz mit Prellungen oder Knochenbruechen", + AffectedDE: "Bedienpersonal, Passanten", ZoneDE: "Maschinenumgebung, Verkehrswege", + DefaultSeverity: 2, DefaultExposure: 4, + }, + { + ID: "HP1429", NameDE: "Thermische Belastung durch heisse Spaene und Werkstuecke", NameEN: "Thermal stress from hot chips and workpieces", + RequiredComponentTags: []string{"cutting_tool"}, + GeneratedHazardCats: []string{"high_temperature"}, + SuggestedMeasureIDs: []string{"M095", "M171"}, + SuggestedEvidenceIDs: []string{"E01"}, + Priority: 60, MachineTypes: cncTypes, + HumanRoles: []string{"operator"}, + ScenarioDE: "Bediener beruehrt heisse Spaene oder Werkstuecke nach der Bearbeitung", + TriggerDE: "Entnahme des Werkstuecks ohne Wartezeit oder Schutzhandschuhe", + HarmDE: "Verbrennung an Haenden", + AffectedDE: "Bedienpersonal", ZoneDE: "Bearbeitungsraum, Entnahmebereich", + DefaultSeverity: 2, DefaultExposure: 4, + }, + + // ── Software/Control CNC-specific (HP1430-HP1431) ─────────── + { + ID: "HP1430", NameDE: "Sicherheitsfunktion Schutztuer-Verriegelung versagt", NameEN: "Safety door interlock failure", + RequiredComponentTags: []string{"programmable", "safety_device"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M067", "M069", "M112"}, + SuggestedEvidenceIDs: []string{"E01", "E08", "E07"}, + Priority: 92, MachineTypes: cncTypes, + ScenarioDE: "Schutztuersicherheitsschalter versagt und Maschine laeuft bei geoeffneter Tuer weiter", + TriggerDE: "Defekter Sicherheitsschalter, Manipulation des Schalters, Kabelbruch", + HarmDE: "Zugang zum laufenden Bearbeitungsprozess mit Quetsch-/Schnittgefahr", + AffectedDE: "Bedienpersonal", ZoneDE: "Maschinentuer, Bearbeitungsraum", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP1431", NameDE: "Spindelueberdrehzahl bei Steuerungsfehler", NameEN: "Spindle overspeed due to control error", + RequiredComponentTags: []string{"rotating_part", "programmable"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M115", "M413", "M043"}, + SuggestedEvidenceIDs: []string{"E01", "E07"}, + Priority: 88, MachineTypes: cncTypes, + ScenarioDE: "Spindel dreht ueber zulaessige Drehzahl hinaus und erzeugt unkontrollierte Fliehkraefte", + TriggerDE: "Steuerungsfehler, falscher Drehzahl-Override, Ausfall des Drehzahlueberwachung", + HarmDE: "Werkzeug- oder Werkstueckbruch mit Splitterflug, Lagerschaden", + AffectedDE: "Bedienpersonal", ZoneDE: "Spindelbereich", + DefaultSeverity: 4, DefaultExposure: 2, + }, + + // ── Maintenance CNC-specific (HP1432-HP1434) ──────────────── + { + ID: "HP1432", NameDE: "KSS-Systemreinigung ohne Schutzausruestung", NameEN: "MWF system cleaning without PPE", + RequiredComponentTags: []string{"cutting_tool"}, + GeneratedHazardCats: []string{"chemical_risk"}, + SuggestedMeasureIDs: []string{"M407", "M408", "M171"}, + SuggestedEvidenceIDs: []string{"E01", "E51"}, + Priority: 70, MachineTypes: cncTypes, + OperationalStates: []string{"maintenance"}, + HumanRoles: []string{"maintenance_tech"}, + ScenarioDE: "Wartungspersonal reinigt KSS-System ohne Schutzhandschuhe und Schutzbrille", + TriggerDE: "Fehlende Unterweisung oder unzureichende PSA-Bereitstellung bei KSS-Wartung", + HarmDE: "Hautreizung durch Systemreiniger, Augenveraetzung", + AffectedDE: "Wartungspersonal", ZoneDE: "KSS-Tank, Leitungssystem", + DefaultSeverity: 2, DefaultExposure: 3, + }, + { + ID: "HP1433", NameDE: "Unkontrollierte Achsbewegung bei Probelauf nach Wartung", NameEN: "Uncontrolled axis movement during test run after maintenance", + RequiredComponentTags: []string{"moving_part", "programmable"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M212", "M050", "M042"}, + SuggestedEvidenceIDs: []string{"E01"}, + Priority: 85, MachineTypes: cncTypes, + OperationalStates: []string{"manual_operation", "teach_mode"}, + HumanRoles: []string{"maintenance_tech", "programmer"}, + StateTransitions: []string{"maintenance→manual_operation"}, + ScenarioDE: "Nach Wartung oder Reparatur verfahren Achsen unkontrolliert beim ersten Testlauf", + TriggerDE: "Falsche Parameter nach Wartung, fehlende Referenzfahrt, Endschalter nicht justiert", + HarmDE: "Quetschung, Kollision Werkzeug/Werkstueck", + AffectedDE: "Wartungspersonal, Einrichter", ZoneDE: "Verfahrbereich, Bearbeitungsraum", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP1434", NameDE: "Restkuehlmittel tropft auf elektrische Komponenten", NameEN: "Residual coolant dripping on electrical components", + RequiredComponentTags: []string{"cutting_tool"}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M087", "M274"}, + SuggestedEvidenceIDs: []string{"E01", "E10"}, + Priority: 70, MachineTypes: cncTypes, + OperationalStates: []string{"maintenance"}, + HumanRoles: []string{"maintenance_tech"}, + ScenarioDE: "Restkuehlmittel tropft bei Wartung auf Schaltschrank oder Steuerungskomponenten", + TriggerDE: "Fehlende Auffangwanne oder Abdeckung bei Wartung an KSS-fuehrenden Bauteilen", + HarmDE: "Kurzschluss, Stromschlag bei Beruehrung nasser Teile", + AffectedDE: "Wartungspersonal", ZoneDE: "Schaltschrank, Steuerungsbereich", + DefaultSeverity: 3, DefaultExposure: 2, + }, + } +} diff --git a/ai-compliance-sdk/internal/iace/measures_library.go b/ai-compliance-sdk/internal/iace/measures_library.go index d2f6b41..be3c6fe 100644 --- a/ai-compliance-sdk/internal/iace/measures_library.go +++ b/ai-compliance-sdk/internal/iace/measures_library.go @@ -16,6 +16,7 @@ func GetProtectiveMeasureLibrary() []ProtectiveMeasureEntry { all = append(all, getOSHAMeasures()...) // OSHA-Pflichtmassnahmen (Phase 2) all = append(all, getTRGSMeasures()...) // TRGS-Gefahrstoff-Massnahmen (Phase 2) all = append(all, getSupplementaryMeasures()...) // Luecken-Massnahmen aus RAG-Abgleich (Phase 2) + all = append(all, getMetalworkingMeasures()...) // Metalworking-Massnahmen (Phase 3) return all } diff --git a/ai-compliance-sdk/internal/iace/measures_library_metalworking.go b/ai-compliance-sdk/internal/iace/measures_library_metalworking.go new file mode 100644 index 0000000..3b95eeb --- /dev/null +++ b/ai-compliance-sdk/internal/iace/measures_library_metalworking.go @@ -0,0 +1,38 @@ +package iace + +// getMetalworkingMeasures returns protective measures specific to metalworking +// machinery (CNC, turning, milling, grinding, welding). Each measure is derived +// from obligations in TRGS 551 (Kuehlschmierstoffe) and TRGS 528 (Schweissen), +// validated against RAG-extracted obligation texts. +// IDs: M404–M421 (18 measures). +func getMetalworkingMeasures() []ProtectiveMeasureEntry { + return []ProtectiveMeasureEntry{ + // ── Kühlschmierstoff-Management (TRGS 551) ────────────────── + {ID: "M404", ReductionType: "design", SubType: "material", Name: "KSS-Substitutionspruefung durchfuehren", Description: "Vor Einsatz eines Kuehlschmierstoffs wird geprueft ob ein weniger gefaehrlicher Stoff oder ein emissionsaermeres Verfahren verfuegbar ist. Bei PAK-haltigen Produkten ist Substitution zwingend.", HazardCategory: "material_environmental", Examples: []string{"Mineraloel-KSS durch Ester-KSS ersetzen", "MMS statt Ueberflutungskuehlung pruefen"}, NormReferences: []string{"TRGS 551 — Substitutionspflicht", "TRGS 600 — Substitution"}}, + {ID: "M405", ReductionType: "protection", SubType: "extraction", Name: "KSS-Aerosolabsaugung an Werkzeugmaschinen", Description: "Kuehlschmierstoff-Aerosole und -Daempfe werden direkt an der Bearbeitungsstelle erfasst und ueber Oelnebelabscheider mit geeignetem Abscheidegrad gereinigt.", HazardCategory: "material_environmental", Examples: []string{"Absaughaube an CNC-Fraese", "Oelnebelabscheider mit HEPA-Nachfilter"}, NormReferences: []string{"TRGS 551 — Technische Schutzmassnahmen", "EN 1093-1"}}, + {ID: "M406", ReductionType: "information", SubType: "organizational", Name: "KSS-Konzentration regelmaessig kontrollieren", Description: "Konzentration, pH-Wert und Keimbelastung des Kuehlschmierstoffs werden in festgelegten Intervallen geprueft und dokumentiert.", HazardCategory: "material_environmental", Examples: []string{"Woechentliche Refraktometer-Messung", "Monatliche mikrobiologische Untersuchung"}, NormReferences: []string{"TRGS 551 — Organisatorische Schutzmassnahmen", "DGUV Regel 109-003"}}, + {ID: "M407", ReductionType: "information", SubType: "organizational", Name: "KSS-Wechselintervalle und Systempflege festlegen", Description: "Wechselintervalle fuer Kuehlschmierstoffe werden festgelegt. Maschinen-Innenseiten werden bei jedem Wechsel gereinigt, Systemreiniger eingesetzt.", HazardCategory: "material_environmental", Examples: []string{"KSS-Wechsel bei Keimzahl ueber 10^6 KBE/ml", "Systemreinigung vor Neubefuellung"}, NormReferences: []string{"TRGS 551 — Hygienemassnahmen", "DGUV Regel 109-003"}}, + {ID: "M408", ReductionType: "information", SubType: "ppe", Name: "KSS-Hautschutzplan fuer Metalworking erstellen", Description: "Fuer Arbeitsplaetze mit KSS-Hautkontakt wird ein taetigkeitsbezogener Hautschutzplan erstellt mit Schutz-, Reinigungs- und Pflegemitteln.", HazardCategory: "material_environmental", Examples: []string{"Hautschutzcreme vor Arbeitsbeginn", "Milde Hautreinigung statt Loesemittel"}, NormReferences: []string{"TRGS 551 — Hygienemassnahmen", "TRGS 401 — Hautschutz"}}, + + // ── Späne-/Werkzeugmanagement ──────────────────────────────── + {ID: "M409", ReductionType: "protection", SubType: "fixed_guard", Name: "Werkzeugbruch-Schutzscheibe dimensionieren", Description: "Schutzscheiben an Werkzeugmaschinen werden fuer die maximale kinetische Energie bei Werkzeugbruch dimensioniert und regelmaessig auf Risse geprueft.", HazardCategory: "mechanical", Examples: []string{"Polycarbonat-Scheibe an CNC-Drehmaschine", "Sicherheitsglas an Fraesmaschine"}, NormReferences: []string{"EN 12417 — CNC-Maschinen", "ISO 14120"}}, + {ID: "M410", ReductionType: "protection", SubType: "extraction", Name: "Spaeneabsaugung und -entsorgung", Description: "Metallspaene werden an der Entstehungsstelle abgesaugt oder per Spaenefoerderer abgefuehrt. Spaenebehaelter werden regelmaessig entleert.", HazardCategory: "mechanical", Examples: []string{"Spaenefoerderer in Maschinenunterbau", "Spaenecontainer mit Kuehlmittel-Ruecklauf"}, NormReferences: []string{"EN 12417 — CNC-Maschinen", "TRGS 551 — Reinigung"}}, + {ID: "M411", ReductionType: "information", SubType: "organizational", Name: "Spannmittelpruefung vor Bearbeitung", Description: "Spannmittel werden vor jeder Bearbeitung auf ausreichende Spannkraft, korrekte Aufnahme und Unwuchtfreiheit geprueft.", HazardCategory: "mechanical", Examples: []string{"Spannkraftmessung am Drehfutter", "Sichtpruefung Spannbacken auf Verschleiss"}, NormReferences: []string{"EN 1550 — Spannzeuge", "DGUV Regel 109-003"}}, + + // ── Schleifmaschinen ──────────────────────────────────────── + {ID: "M412", ReductionType: "information", SubType: "organizational", Name: "Schleifscheiben-Pruefung vor Erstinbetriebnahme", Description: "Jede neue Schleifscheibe wird vor der Montage einer Klangpruefung unterzogen und nach Montage einem Probelauf bei maximaler Drehzahl ohne Last durchgefuehrt.", HazardCategory: "mechanical", Examples: []string{"Klangprobe auf Risse", "Probelauf 1 Minute bei Nenndrehzahl"}, NormReferences: []string{"OSHA 29 CFR 1910.215 — Abrasive Wheel Machinery", "DGUV Regel 109-003"}}, + {ID: "M413", ReductionType: "design", SubType: "force_energy", Name: "Schleifspindel-Drehzahlbegrenzung", Description: "Die maximale Drehzahl der Schleifspindel wird so begrenzt, dass die zulaessige Umfangsgeschwindigkeit der Schleifscheibe nicht ueberschritten wird.", HazardCategory: "mechanical", Examples: []string{"Mechanische Drehzahlbegrenzung", "Elektronische Ueberdrehzahl-Abschaltung"}, NormReferences: []string{"EN 13218 — Schleifmaschinen", "DGUV Regel 109-003"}}, + + // ── Schweissen (TRGS 528) ─────────────────────────────────── + {ID: "M414", ReductionType: "protection", SubType: "extraction", Name: "Schweissrauch-Absaugung im Fortluftbetrieb", Description: "Waehrend des Schweissens wird die Absauganlage dauerhaft im Fortluftmodus betrieben. Umluftbetrieb ist nur in schweissfreien Zeiten zulaessig.", HazardCategory: "material_environmental", Examples: []string{"Absaugarm mit Fortluftanschluss", "Hallentechnische Lueftung als Ergaenzung"}, NormReferences: []string{"TRGS 528 — Absaugung bei Schweissen", "DGUV Regel 109-002"}}, + {ID: "M415", ReductionType: "protection", SubType: "extraction", Name: "Brennerintegrierte Absaugung bei Handschweissen", Description: "Beim Handschweissen wird eine brennerintegrierte Absaugung eingesetzt. Mindest- und Maximal-Absaugvolumenstrom werden nach Herstellerangabe eingestellt.", HazardCategory: "material_environmental", Examples: []string{"MIG/MAG-Brenner mit integrierter Absaugung", "Absaugvolumenstrom 800-1000 m3/h"}, NormReferences: []string{"TRGS 528 — Absaugung bei Schweissen von Hand", "EN ISO 21904-1"}}, + {ID: "M416", ReductionType: "information", SubType: "organizational", Name: "Schweissarbeiten raeumlich trennen", Description: "Schweissarbeiten an verschiedenen Werkstoffen (Baustahl, hochlegierter Stahl, Aluminium) werden raeumlich oder zeitlich getrennt um Kreuzkontamination zu vermeiden.", HazardCategory: "material_environmental", Examples: []string{"Separate Schweissplaetze je Werkstoff", "Zeitliche Trennung mit Zwischenreinigung"}, NormReferences: []string{"TRGS 528 — Schutzmassnahmen", "DGUV Regel 109-002"}}, + {ID: "M417", ReductionType: "information", SubType: "ppe", Name: "Geblaeseunterstuetzter Schweisserschutzschild", Description: "Bei unzureichender technischer Absaugung wird ein geblaeseunterstuetzter Schweisserschutzschild mit geeignetem Partikelfilter bereitgestellt.", HazardCategory: "material_environmental", Examples: []string{"Geblaeseeinheit mit P3-Filter", "Vollvisier-Schweisserschutzhelm mit Frischluft"}, NormReferences: []string{"TRGS 528 — Persoenliche Schutzmassnahmen", "EN 12941"}}, + + // ── Allgemein Metalworking ────────────────────────────────── + {ID: "M418", ReductionType: "information", SubType: "organizational", Name: "AGW-Ueberwachung KSS-Aerosole und Schweissrauche", Description: "Expositionsmessungen fuer KSS-Aerosole und Schweissrauche werden regelmaessig durchgefuehrt und mit Arbeitsplatzgrenzwerten verglichen.", HazardCategory: "material_environmental", Examples: []string{"Personenbezogene KSS-Aerosol-Messung", "Stationaere Schweissrauch-Messung"}, NormReferences: []string{"TRGS 402 — Ermittlung und Beurteilung", "TRGS 551 — Substitutionspflicht"}}, + {ID: "M419", ReductionType: "information", SubType: "organizational", Name: "Arbeitsmedizinische Vorsorge Metalworking", Description: "Beschaeftigte mit KSS- oder Schweissrauch-Exposition erhalten arbeitsmedizinische Pflicht- oder Angebotsvorsorge.", HazardCategory: "material_environmental", Examples: []string{"Pflichtvorsorge bei Chrom-VI-Exposition", "Angebotsvorsorge bei KSS-Hautkontakt"}, NormReferences: []string{"TRGS 551 — Organisatorische Schutzmassnahmen", "ArbMedVV"}}, + {ID: "M420", ReductionType: "information", SubType: "organizational", Name: "Reinigung von Maschinen und Arbeitsplaetzen", Description: "Maschinen, Arbeitsplaetze und Umgebungsflaechen werden regelmaessig von KSS-Rueckstaenden und Metallstaeuben gereinigt.", HazardCategory: "material_environmental", Examples: []string{"Taegliche Maschinenreinigung", "Industriesauger statt Druckluft zum Reinigen"}, NormReferences: []string{"TRGS 551 — Hygienemassnahmen", "TRGS 500 — Allgemeine Schutzmaßnahmen"}}, + {ID: "M421", ReductionType: "information", SubType: "training", Name: "Unterweisung KSS-Gefahren und Schweissrauch", Description: "Beschaeftigte werden ueber Gesundheitsgefahren durch KSS und Schweissrauch, korrekte Handhabung und Notfallverhalten unterwiesen.", HazardCategory: "material_environmental", Examples: []string{"Jaehrliche KSS-Unterweisung", "Schulung Absauganlage-Bedienung"}, NormReferences: []string{"TRGS 551 — Organisatorische Schutzmassnahmen", "TRGS 528 — Gefaehrdungsbeurteilung"}}, + } +} diff --git a/ai-compliance-sdk/internal/iace/pattern_engine.go b/ai-compliance-sdk/internal/iace/pattern_engine.go index cc33756..3ff2759 100644 --- a/ai-compliance-sdk/internal/iace/pattern_engine.go +++ b/ai-compliance-sdk/internal/iace/pattern_engine.go @@ -116,6 +116,8 @@ func NewPatternEngine() *PatternEngine { patterns = append(patterns, GetFinalPatternsB()...) // HP1085-HP1169 electrical/thermal/chemical/bio/radiation patterns = append(patterns, GetFinalPatternsC()...) // HP1170-HP1254 software/control/org/ergonomic/fire patterns = append(patterns, GetFinalPatternsD()...) // HP1255-HP1335 lifecycle/special situations + patterns = append(patterns, GetCNCHazardPatterns()...) // HP1400-HP1419 CNC/metalworking part 1 (Phase 3) + patterns = append(patterns, GetCNCHazardPatternsExt()...) // HP1420-HP1434 CNC/metalworking part 2 (Phase 3) return &PatternEngine{ resolver: NewTagResolver(), patterns: patterns, diff --git a/ai-compliance-sdk/internal/iace/tag_resolver.go b/ai-compliance-sdk/internal/iace/tag_resolver.go index c9897bc..0c6478a 100644 --- a/ai-compliance-sdk/internal/iace/tag_resolver.go +++ b/ai-compliance-sdk/internal/iace/tag_resolver.go @@ -194,5 +194,11 @@ func GetEvidenceTypeLibrary() []EvidenceTypeInfo { {ID: "E48", Category: "cyber", LabelDE: "Software-Versionsmanagement-Nachweis", LabelEN: "Software Version Management Evidence", Tags: []string{"cyber_evidence"}, Sort: 48}, {ID: "E49", Category: "cyber", LabelDE: "Vulnerability-Scan-Bericht", LabelEN: "Vulnerability Scan Report", Tags: []string{"cyber_evidence", "test_evidence"}, Sort: 49}, {ID: "E50", Category: "cyber", LabelDE: "SBOM-Vollstaendigkeitsnachweis", LabelEN: "SBOM Completeness Evidence", Tags: []string{"cyber_evidence"}, Sort: 50}, + // ── Phase 3: Metalworking-Evidenztypen (E51-E55) ───────────── + {ID: "E51", Category: "test", LabelDE: "KSS-Analyseprotokoll", LabelEN: "MWF Analysis Protocol", Tags: []string{"test_evidence"}, Sort: 51}, + {ID: "E52", Category: "test", LabelDE: "Schleifscheiben-Pruefprotokoll", LabelEN: "Grinding Wheel Test Protocol", Tags: []string{"test_evidence"}, Sort: 52}, + {ID: "E53", Category: "test", LabelDE: "Spannmittel-Pruefprotokoll", LabelEN: "Clamping Device Test Protocol", Tags: []string{"test_evidence"}, Sort: 53}, + {ID: "E54", Category: "inspection", LabelDE: "Schweissnaht-Qualifikationsnachweis", LabelEN: "Weld Qualification Record", Tags: []string{"certification_evidence"}, Sort: 54}, + {ID: "E55", Category: "inspection", LabelDE: "KSS-Hautschutzplan (ausgefuellt)", LabelEN: "MWF Skin Protection Plan (completed)", Tags: []string{"inspection_evidence"}, Sort: 55}, } }