diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_vdma.go b/ai-compliance-sdk/internal/iace/hazard_patterns_vdma.go new file mode 100644 index 0000000..1f20753 --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_vdma.go @@ -0,0 +1,180 @@ +package iace + +// GetVDMAIndustryPatterns returns hazard patterns for VDMA industry sectors: +// woodworking, surface treatment, printing, pumps/compressors. +// IDs: HP1500-HP1549 (50 patterns). +func GetVDMAIndustryPatterns() []HazardPattern { + return []HazardPattern{ + // ══════════════════════════════════════════════════════════════ + // Holzbearbeitung (HP1500-HP1514) + // ══════════════════════════════════════════════════════════════ + {ID: "HP1500", NameDE: "Rueckschlag an Kreissaege", NameEN: "Kickback on circular saw", + RequiredComponentTags: []string{"cutting_tool"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M424", "M061"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 92, MachineTypes: []string{"circular_saw", "woodworking"}, + OperationalStates: []string{"automatic_operation", "manual_operation"}, HumanRoles: []string{"operator"}, + ScenarioDE: "Werkstueck wird durch aufsteigenden Saegeblattzahn zurueckgeschleudert", + TriggerDE: "Fehlender oder falsch eingestellter Spaltkeil, verklemmtes Werkstueck", HarmDE: "Schnittverletzung, Prellungen durch Rueckschlag", AffectedDE: "Bedienpersonal", ZoneDE: "Bedienseite der Saege", + DefaultSeverity: 4, DefaultExposure: 4}, + {ID: "HP1501", NameDE: "Saegeblatt-Kontakt bei offener Schutzhaube", NameEN: "Saw blade contact with open guard", + RequiredComponentTags: []string{"cutting_tool"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M424", "MN012", "MN013"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 90, MachineTypes: []string{"circular_saw", "woodworking"}, + ScenarioDE: "Hand geraet an das rotierende Saegeblatt bei fehlender oder geoeffneter Schutzhaube", + TriggerDE: "Schutzhaube entfernt oder verklemmt, Manipulation der Verriegelung", HarmDE: "Amputation, schwere Schnittverletzung", AffectedDE: "Bedienpersonal", ZoneDE: "Saegeblattbereich", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP1502", NameDE: "Holzstaub-Inhalation", NameEN: "Wood dust inhalation", + RequiredComponentTags: []string{"cutting_tool"}, GeneratedHazardCats: []string{"chemical_risk"}, + SuggestedMeasureIDs: []string{"M422", "M425", "M428"}, SuggestedEvidenceIDs: []string{"E01", "E29"}, + Priority: 80, MachineTypes: []string{"circular_saw", "woodworking", "milling"}, + HumanRoles: []string{"operator"}, + ScenarioDE: "Beschaeftigte atmen Holzstaub ein der bei Saege-/Fraes-/Schleifarbeiten entsteht", + TriggerDE: "Absaugung nicht angeschlossen oder unzureichend, Maschine ohne Einhausung", HarmDE: "Atemwegsreizung, Asthma, Nasenkrebs bei Hartholz", AffectedDE: "Bedienpersonal", ZoneDE: "Bearbeitungsbereich", + DefaultSeverity: 4, DefaultExposure: 4}, + {ID: "HP1503", NameDE: "Staubexplosion in Absauganlage", NameEN: "Dust explosion in extraction system", + RequiredComponentTags: []string{"cutting_tool"}, GeneratedHazardCats: []string{"fire_explosion"}, + SuggestedMeasureIDs: []string{"M426", "M290", "M295"}, SuggestedEvidenceIDs: []string{"E01", "E35"}, + Priority: 88, MachineTypes: []string{"woodworking"}, + RequiresExpertCalculation: true, ExpertHintDE: "Zoneneinteilung nach ATEX fuer Absauganlage und Silo erforderlich.", + ScenarioDE: "Holzstaub-Luft-Gemisch in Filter oder Silo entzuendet sich", TriggerDE: "Funken durch Fremdkoerper, elektrostatische Aufladung, heisse Oberflaeche", + HarmDE: "Explosion mit Druckwelle, Brand, schwere Verletzungen", AffectedDE: "Bedienpersonal, Umgebung", ZoneDE: "Filteranlage, Silo, Rohrleitungen", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP1504", NameDE: "Einzug an Hobelmaschine", NameEN: "Drawing-in at planing machine", + RequiredComponentTags: []string{"cutting_tool", "rotating_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M239", "M061"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 88, MachineTypes: []string{"woodworking"}, + ScenarioDE: "Hand wird zwischen Vorschubwalzen und Messerwelle der Hobelmaschine eingezogen", + TriggerDE: "Manuelles Nachschieben kurzer Werkstuecke ohne Schiebeholz", HarmDE: "Amputation, Quetschung", AffectedDE: "Bedienpersonal", ZoneDE: "Einzugsbereich", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP1505", NameDE: "Fraeserkontakt bei Handfraesmaschine", NameEN: "Cutter contact on hand-fed milling machine", + RequiredComponentTags: []string{"cutting_tool", "rotating_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M061", "M067"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 86, MachineTypes: []string{"woodworking", "milling"}, + HumanRoles: []string{"operator"}, + ScenarioDE: "Hand geraet an rotierenden Fraeser bei manueller Werkstueckfuehrung", + TriggerDE: "Fehlende Schutzhaube, Werkstueck wird vom Fraeser weggerissen", HarmDE: "Schnittverletzung, Fingerverlust", AffectedDE: "Bedienpersonal", ZoneDE: "Fraesbereich", + DefaultSeverity: 4, DefaultExposure: 4}, + + // ══════════════════════════════════════════════════════════════ + // Oberflächentechnik (HP1515-HP1529) + // ══════════════════════════════════════════════════════════════ + {ID: "HP1515", NameDE: "Loesemittel-Inhalation in Spritzkabine", NameEN: "Solvent inhalation in spray booth", + RequiredComponentTags: []string{"spray_nozzle"}, GeneratedHazardCats: []string{"chemical_risk"}, + SuggestedMeasureIDs: []string{"M430", "M173"}, SuggestedEvidenceIDs: []string{"E01", "E29"}, + Priority: 82, MachineTypes: []string{"spray_booth", "surface_treatment"}, + HumanRoles: []string{"operator"}, + ScenarioDE: "Lackierer atmet Loesemitteldaempfe ein die bei Spritzlackierung entstehen", + TriggerDE: "Unzureichende Kabinenbelueftung oder Arbeiten ausserhalb der Kabine", HarmDE: "Kopfschmerzen, Schwindel, Leberschaeden bei Langzeitexposition", AffectedDE: "Lackierer", ZoneDE: "Spritzkabine", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP1516", NameDE: "Isocyanat-Exposition bei PU-Lackierung", NameEN: "Isocyanate exposure during PU coating", + RequiredComponentTags: []string{"spray_nozzle"}, GeneratedHazardCats: []string{"chemical_risk"}, + SuggestedMeasureIDs: []string{"M431", "M436", "M173"}, SuggestedEvidenceIDs: []string{"E01", "E29"}, + Priority: 88, MachineTypes: []string{"spray_booth", "surface_treatment"}, + HumanRoles: []string{"operator"}, + ScenarioDE: "Beschaeftigte werden Isocyanat-Aerosolen bei PU-Lack-Verarbeitung ausgesetzt", + TriggerDE: "Spritzlackierung mit isocyanathaltigen 2K-Lacken ohne ausreichende Absaugung", HarmDE: "Atemwegssensibilisierung (Isocyanat-Asthma), Hautallergien", AffectedDE: "Lackierer", ZoneDE: "Spritzkabine, Mischbereich", + DefaultSeverity: 4, DefaultExposure: 4}, + {ID: "HP1517", NameDE: "Brand/Explosion in Spritzkabine", NameEN: "Fire/explosion in spray booth", + RequiredComponentTags: []string{"spray_nozzle"}, GeneratedHazardCats: []string{"fire_explosion"}, + SuggestedMeasureIDs: []string{"M434", "M383", "M290"}, SuggestedEvidenceIDs: []string{"E01", "E35"}, + Priority: 90, MachineTypes: []string{"spray_booth", "surface_treatment"}, + ScenarioDE: "Loesemitteldaempfe in Spritzkabine entzuenden sich", TriggerDE: "Zuendquelle in Ex-Zone (nicht-ex-geschuetztes Geraet, Funke, heisse Oberflaeche)", + HarmDE: "Verpuffung, Brand, Verbrennungen", AffectedDE: "Lackierer, Umgebung", ZoneDE: "Spritzkabine, Trocknungsbereich", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP1518", NameDE: "Chromsaeure-Exposition an Galvanikbad", NameEN: "Chromic acid exposure at electroplating bath", + RequiredComponentTags: []string{"chemical_bath"}, GeneratedHazardCats: []string{"chemical_risk"}, + SuggestedMeasureIDs: []string{"M432", "M435", "M173"}, SuggestedEvidenceIDs: []string{"E01", "E29"}, + Priority: 88, MachineTypes: []string{"surface_treatment", "electroplating"}, + HumanRoles: []string{"operator"}, + ScenarioDE: "Chromsaeuredaempfe steigen aus Hartverchromungsbad auf und werden eingeatmet", + TriggerDE: "Fehlende oder defekte Randabsaugung, hohe Badtemperatur", HarmDE: "Lungenkarzinom bei Chrom-VI, Veraetzung der Schleimhaeute", AffectedDE: "Galvaniker", ZoneDE: "Galvanikbad", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP1519", NameDE: "Hautveraetzung durch Galvanikloesungen", NameEN: "Skin burn from electroplating solutions", + RequiredComponentTags: []string{"chemical_bath"}, GeneratedHazardCats: []string{"chemical_risk"}, + SuggestedMeasureIDs: []string{"M435", "M376"}, SuggestedEvidenceIDs: []string{"E01"}, + Priority: 78, MachineTypes: []string{"surface_treatment", "electroplating"}, + ScenarioDE: "Galvanikloesungen (Saeuren, Laugen, Chromsaeure) spritzen auf ungeschuetzte Haut", + TriggerDE: "Bauteil faellt in Bad und erzeugt Spritzer, Umfuellen ohne Schutzkleidung", HarmDE: "Veraetzung, allergische Reaktion", AffectedDE: "Galvaniker", ZoneDE: "Badoberflaeche, Umfuellbereich", + DefaultSeverity: 3, DefaultExposure: 4}, + + // ══════════════════════════════════════════════════════════════ + // Druckmaschinen (HP1530-HP1539) + // ══════════════════════════════════════════════════════════════ + {ID: "HP1530", NameDE: "Einzug an Walzenpaar (Druckwerk)", NameEN: "Drawing-in at roller pair (printing unit)", + RequiredComponentTags: []string{"rotating_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M438", "M441"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 92, MachineTypes: []string{"printing_press"}, + HumanRoles: []string{"operator"}, + ScenarioDE: "Hand oder Kleidung wird zwischen gegenlaeufigen Walzen des Farbwerks eingezogen", + TriggerDE: "Fehlende Walzenschutzbuegel, manuelles Reinigen bei laufender Maschine", HarmDE: "Quetschung, Amputation, Armbruch", AffectedDE: "Drucker", ZoneDE: "Farbwerk, Feuchtwerk", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP1531", NameDE: "Druckfarben-Inhalation", NameEN: "Printing ink inhalation", + RequiredComponentTags: []string{"rotating_part"}, GeneratedHazardCats: []string{"chemical_risk"}, + SuggestedMeasureIDs: []string{"M439", "M444"}, SuggestedEvidenceIDs: []string{"E01", "E29"}, + Priority: 72, MachineTypes: []string{"printing_press"}, + ScenarioDE: "Aerosole und Daempfe aus Druckfarben und Reinigungsmitteln werden eingeatmet", + TriggerDE: "Fehlende Absaugung, offene Farbbehaelter, Reinigung mit Loesemitteln", HarmDE: "Atemwegsreizung, Schwindel bei hoher Loesemittelkonzentration", AffectedDE: "Drucker", ZoneDE: "Farbwerk, Reinigungsstation", + DefaultSeverity: 2, DefaultExposure: 4}, + {ID: "HP1532", NameDE: "UV-Strahlung an UV-Trockner", NameEN: "UV radiation from UV dryer", + RequiredComponentTags: []string{"uv_source"}, GeneratedHazardCats: []string{"radiation_hazard"}, + SuggestedMeasureIDs: []string{"M440", "M392"}, SuggestedEvidenceIDs: []string{"E01"}, + Priority: 78, MachineTypes: []string{"printing_press"}, + ScenarioDE: "UV-Strahlung aus defekter oder geoeffneter Trocknereinheit trifft Haut oder Augen", + TriggerDE: "Abdeckung des UV-Trockners nicht korrekt geschlossen, Wartung bei aktivem UV", HarmDE: "Hautverbrennung, Augenschaedigung", AffectedDE: "Drucker, Wartungspersonal", ZoneDE: "UV-Trockner", + DefaultSeverity: 3, DefaultExposure: 2}, + {ID: "HP1533", NameDE: "Papierbahnriss mit Einzugsgefahr", NameEN: "Paper web break with entanglement risk", + RequiredComponentTags: []string{"rotating_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M443", "M441"}, SuggestedEvidenceIDs: []string{"E01"}, + Priority: 80, MachineTypes: []string{"printing_press"}, + ScenarioDE: "Papierbahn reisst und lose Enden wickeln sich um Walzen, Bediener greift ein", + TriggerDE: "Materialfehler, Spannungsschwankung, falsche Bahnfuehrung", HarmDE: "Einzug in Walzenpaar, Quetschung", AffectedDE: "Drucker", ZoneDE: "Papierlauf, Walzenspalte", + DefaultSeverity: 4, DefaultExposure: 3}, + + // ══════════════════════════════════════════════════════════════ + // Pumpen/Kompressoren (HP1540-HP1549) + // ══════════════════════════════════════════════════════════════ + {ID: "HP1540", NameDE: "Druckstoss in Rohrleitung", NameEN: "Pressure surge in pipeline", + RequiredComponentTags: []string{"hydraulic_part", "high_pressure"}, GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M446", "M283"}, SuggestedEvidenceIDs: []string{"E01", "E11"}, + Priority: 82, MachineTypes: []string{"pump", "compressor"}, + ScenarioDE: "Schnelles Schliessen einer Armatur erzeugt Druckstoss der Rohrleitungen schaedigt", + TriggerDE: "Schnellschlussventil, Pumpenausfall bei laufender Foerderung", HarmDE: "Rohrbruch mit Medienaustritt, Verletzung durch Druckwelle", AffectedDE: "Bedienpersonal", ZoneDE: "Rohrleitung, Armaturenbereich", + DefaultSeverity: 4, DefaultExposure: 2}, + {ID: "HP1541", NameDE: "Kavitationsschaden an Pumpe", NameEN: "Cavitation damage to pump", + RequiredComponentTags: []string{"hydraulic_part"}, GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M447", "M117"}, SuggestedEvidenceIDs: []string{"E01"}, + Priority: 65, MachineTypes: []string{"pump"}, + ScenarioDE: "Kavitation zerstoert Laufrad und Gehaeuse der Pumpe, Leckage entsteht", + TriggerDE: "Zu geringer Zulaufdruck (NPSH), Luft im System, Drosselung Saugseite", HarmDE: "Pumpenausfall, Medienaustritt, Folgeschaeden an Anlage", AffectedDE: "Bedienpersonal", ZoneDE: "Pumpengehaeuse", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP1542", NameDE: "Leckage an Gleitringdichtung", NameEN: "Leak at mechanical seal", + RequiredComponentTags: []string{"hydraulic_part"}, GeneratedHazardCats: []string{"pneumatic_hydraulic", "chemical_risk"}, + SuggestedMeasureIDs: []string{"M448", "M101"}, SuggestedEvidenceIDs: []string{"E01", "E38"}, + Priority: 72, MachineTypes: []string{"pump", "compressor"}, + ScenarioDE: "Gleitringdichtung versagt und Foerdermedium tritt unkontrolliert aus", + TriggerDE: "Verschleiss, Trockenlauf, thermische Ueberlastung der Dichtung", HarmDE: "Hautkontakt mit Gefahrstoff, Rutschgefahr, Umweltkontamination", AffectedDE: "Bedienpersonal", ZoneDE: "Wellenbereich", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP1543", NameDE: "Kompressorgehaeuse-Bersten", NameEN: "Compressor housing burst", + RequiredComponentTags: []string{"high_pressure"}, GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M449", "M281"}, SuggestedEvidenceIDs: []string{"E01", "E11", "E28"}, + Priority: 92, MachineTypes: []string{"compressor"}, + RequiresExpertCalculation: true, ExpertHintDE: "Festigkeitsnachweis nach EN 1012 und DGRL 2014/68/EU erforderlich.", + ScenarioDE: "Kompressorgehaeuse versagt bei Ueberdruck und berstet", + TriggerDE: "Sicherheitsventil versagt, Druckschalter defekt, Korrosion am Gehaeuse", HarmDE: "Splitterflug, Druckwelle, toedliche Verletzungen", AffectedDE: "Bedienpersonal, Umgebung", ZoneDE: "Kompressorraum", + DefaultSeverity: 5, DefaultExposure: 1}, + {ID: "HP1544", NameDE: "Trockenlauf Pumpe", NameEN: "Pump dry run", + RequiredComponentTags: []string{"hydraulic_part"}, GeneratedHazardCats: []string{"pneumatic_hydraulic", "fire_explosion"}, + SuggestedMeasureIDs: []string{"M450", "M116"}, SuggestedEvidenceIDs: []string{"E01"}, + Priority: 75, MachineTypes: []string{"pump"}, + ScenarioDE: "Pumpe laeuft ohne Foerdermedium, Gleitringdichtung ueberhitzt", + TriggerDE: "Leerer Vorratsbehaelter, Saugseite verstopft, Fuellstandsueberwachung defekt", HarmDE: "Dichtungsbrand, Medienaustritt bei Folgeschaden", AffectedDE: "Bedienpersonal", ZoneDE: "Pumpenbereich", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP1545", NameDE: "Druckluftbehaelter-Korrosion", NameEN: "Compressed air receiver corrosion", + RequiredComponentTags: []string{"high_pressure"}, GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M451", "M365"}, SuggestedEvidenceIDs: []string{"E01", "E11"}, + Priority: 70, MachineTypes: []string{"compressor"}, + ScenarioDE: "Innere Korrosion durch Kondenswasser schwaecht Behaelterwand", + TriggerDE: "Fehlende Entwasserung, lange Standzeiten ohne Wartung", HarmDE: "Behaelterversagen bei Betriebsdruck, Druckwelle", AffectedDE: "Bedienpersonal", ZoneDE: "Druckluftbehaelter", + DefaultSeverity: 4, DefaultExposure: 2}, + } +} diff --git a/ai-compliance-sdk/internal/iace/measures_library.go b/ai-compliance-sdk/internal/iace/measures_library.go index be3c6fe..fff8092 100644 --- a/ai-compliance-sdk/internal/iace/measures_library.go +++ b/ai-compliance-sdk/internal/iace/measures_library.go @@ -17,6 +17,7 @@ func GetProtectiveMeasureLibrary() []ProtectiveMeasureEntry { 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) + all = append(all, getVDMAMeasures()...) // VDMA-Sektoren: Holz, Oberfläche, Druck, Pumpen (Phase 3) return all } diff --git a/ai-compliance-sdk/internal/iace/measures_library_vdma.go b/ai-compliance-sdk/internal/iace/measures_library_vdma.go new file mode 100644 index 0000000..315f522 --- /dev/null +++ b/ai-compliance-sdk/internal/iace/measures_library_vdma.go @@ -0,0 +1,55 @@ +package iace + +// getVDMAMeasures returns protective measures for VDMA industry sectors +// beyond metalworking: woodworking, surface treatment, printing, pumps. +// Each measure is RAG-validated against the relevant TRGS obligations. +// IDs: M422–M451 (30 measures). +func getVDMAMeasures() []ProtectiveMeasureEntry { + return []ProtectiveMeasureEntry{ + // ══════════════════════════════════════════════════════════════ + // 3D.1 Holzbearbeitung (8 Massnahmen) — TRGS 553, EN 1870/848 + // ══════════════════════════════════════════════════════════════ + {ID: "M422", ReductionType: "protection", SubType: "extraction", Name: "Holzstaub-Absauganlage an jeder Maschine", Description: "Jede Holzbearbeitungsmaschine wird an eine wirksame Absauganlage angeschlossen die den Holzstaub direkt am Entstehungsort erfasst.", HazardCategory: "material_environmental", Examples: []string{"Absaugstutzen an Kreissaege", "Zentralabsaugung mit Filteranlage"}, NormReferences: []string{"TRGS 553 — Technische Schutzmassnahmen", "DGUV Regel 109-003"}}, + {ID: "M423", ReductionType: "information", SubType: "organizational", Name: "Absauganlage jaehrlich pruefen", Description: "Die Funktionsfaehigkeit der Holzstaub-Absauganlage wird monatlich kontrolliert und jaehrlich mit Luftgeschwindigkeitsmessung an den Erfassungselementen geprueft.", HazardCategory: "material_environmental", Examples: []string{"Monatliche Funktionskontrolle", "Jaehrliche Luftgeschwindigkeitsmessung"}, NormReferences: []string{"TRGS 553 — Wirksamkeitsueberpruefung", "DGUV Regel 109-003"}}, + {ID: "M424", ReductionType: "protection", SubType: "safety_control", Name: "Rueckschlagsicherung an Kreissaegen und Fraesmaschinen", Description: "Kreissaegen erhalten Spaltkeil und Schutzhaube, Fraesmaschinen erhalten Gegenhalter gegen Rueckschlag des Werkstuecks.", HazardCategory: "mechanical", Examples: []string{"Spaltkeil hinter Saegeblatt", "Greiferschutz an Tischfraese"}, NormReferences: []string{"EN 1870-1 — Sicherheit Kreissaegen", "EN 848 — Fraesmaschinen"}}, + {ID: "M425", ReductionType: "information", SubType: "organizational", Name: "Holzstaub-AGW einhalten und ueberwachen", Description: "Die Holzstaub-Exposition wird durch Messungen ueberprueft und der Arbeitsplatzgrenzwert von 2 mg/m3 (A-Staub) eingehalten.", HazardCategory: "material_environmental", Examples: []string{"Personenbezogene Staubmessung", "Vergleich mit AGW nach TRGS 900"}, NormReferences: []string{"TRGS 553 — AGW Holzstaub", "TRGS 402 — Ermittlung und Beurteilung"}}, + {ID: "M426", ReductionType: "protection", SubType: "safety_control", Name: "Staubexplosionsschutz an Absauganlagen", Description: "Absauganlagen fuer Holzstaub erhalten Massnahmen gegen Staubexplosion: Funkenerkennung, Loeschung und druckfeste Bauteile.", HazardCategory: "material_environmental", Examples: []string{"Funkenerkennungs- und -loeschanlage", "Explosionsklappe an Filteranlage"}, NormReferences: []string{"TRGS 553 — Explosionsschutz", "ATEX 2014/34/EU"}}, + {ID: "M427", ReductionType: "information", SubType: "organizational", Name: "Schlauchbrucherkennung an Filteranlagen", Description: "Luftrueckfuehrende Absauganlagen erhalten eine automatische Erkennung bei Filterschaeden die den Staubeintrag in den Arbeitsraum verhindert.", HazardCategory: "material_environmental", Examples: []string{"Differenzdruckueberwachung am Filter", "Automatische Umschaltung auf Abluft"}, NormReferences: []string{"TRGS 553 — Betriebsstoerungen", "EN 16770"}}, + {ID: "M428", ReductionType: "information", SubType: "ppe", Name: "Atemschutz bei Holzstaubexposition ueber AGW", Description: "Bei unvermeidlicher Ueberschreitung des AGW (z.B. bei Reinigungsarbeiten) wird geeigneter Atemschutz bereitgestellt.", HazardCategory: "material_environmental", Examples: []string{"FFP2-Maske bei Reinigung", "Geblaeseunterstuetzte Halbmaske bei Schleifarbeiten"}, NormReferences: []string{"TRGS 553 — Persoenliche Schutzmassnahmen", "EN 149"}}, + {ID: "M429", ReductionType: "information", SubType: "training", Name: "Unterweisung Holzstaubgefahren", Description: "Beschaeftigte werden ueber Gesundheitsgefahren durch Holzstaub (Atemwegserkrankung, Krebs bei bestimmten Holzarten) und korrekte Absaugungsnutzung unterwiesen.", HazardCategory: "material_environmental", Examples: []string{"Jaehrliche Unterweisung mit Maschinendemonstration", "Schulung ueber krebserzeugende Holzarten"}, NormReferences: []string{"TRGS 553 — Unterweisung", "GefStoffV §14"}}, + + // ══════════════════════════════════════════════════════════════ + // 3D.2 Oberflächentechnik (8 Massnahmen) — TRGS 507/430 + // ══════════════════════════════════════════════════════════════ + {ID: "M430", ReductionType: "protection", SubType: "extraction", Name: "Spritzkabinen-Belueftung nach TRGS 507", Description: "Lackier- und Spritzkabinen werden mit technischer Belueftung ausgestattet die Loesemitteldaempfe und Aerosole zuverlaessig abfuehrt.", HazardCategory: "material_environmental", Examples: []string{"Unterflurabsaugung in Spritzkabine", "Deckenzuluft mit Filterdecke"}, NormReferences: []string{"TRGS 507 — Technische Schutzmassnahmen", "EN 12215 — Spritzkabinen"}}, + {ID: "M431", ReductionType: "design", SubType: "material", Name: "Isocyanat-Substitutionspruefung", Description: "Bei Einsatz isocyanathaltiger Lacke und Schaeume wird geprueft ob isocyanatfreie Alternativen verfuegbar sind.", HazardCategory: "material_environmental", Examples: []string{"UV-haertende Lacke statt PU-Lacke", "Wasserlacke statt Loesemittellacke"}, NormReferences: []string{"TRGS 430 — Substitution", "TRGS 600 — Substitution"}}, + {ID: "M432", ReductionType: "protection", SubType: "extraction", Name: "Galvanikbad-Randabsaugung", Description: "Galvanische Baeder erhalten Randabsaugungen die Daempfe und Aerosole direkt an der Badoberflaeche erfassen.", HazardCategory: "material_environmental", Examples: []string{"Seitliche Randabsaugung an Chrombad", "Schlitzabsaugung ueber Badkante"}, NormReferences: []string{"TRGS 507 — Technische Schutzmassnahmen", "DGUV Regel 109-002"}}, + {ID: "M433", ReductionType: "information", SubType: "organizational", Name: "Arbeitsbereich Oberflaechentechnik absperren und kennzeichnen", Description: "Bereiche in denen Spritz-, Lackier- oder Galvanikarbeiten durchgefuehrt werden, werden gegen unbefugtes Betreten abgesperrt und gekennzeichnet.", HazardCategory: "material_environmental", Examples: []string{"Verbotszeichen Zutritt fuer Unbefugte", "Zugangskontrolle mit Schleuse"}, NormReferences: []string{"TRGS 507 — Kennzeichnung von Arbeitsbereichen", "ASR A1.3"}}, + {ID: "M434", ReductionType: "protection", SubType: "electrical_protection", Name: "Explosionsgeschuetzte Geraete in Spritzbereichen", Description: "In Bereichen mit brennbaren Daempfen und Aerosolen werden nur explosionsgeschuetzte elektrische Geraete eingesetzt.", HazardCategory: "material_environmental", Examples: []string{"ATEX-Leuchten in Spritzkabine", "Ex-geschuetzte Foerderpumpe"}, NormReferences: []string{"TRGS 507 — Explosionsschutz", "ATEX 2014/34/EU"}}, + {ID: "M435", ReductionType: "information", SubType: "ppe", Name: "Chemikalienschutzhandschuhe bei Oberflaechenbehandlung", Description: "Fuer Taetigkeiten mit Kontakt zu Lacken, Loesemitteln oder Galvanikbaedern werden geeignete Chemikalienschutzhandschuhe bereitgestellt.", HazardCategory: "material_environmental", Examples: []string{"Nitrilhandschuhe bei Loesemittelkontakt", "Butylkautschuk-Handschuhe bei Isocyanaten"}, NormReferences: []string{"TRGS 430 — Persoenliche Schutzmassnahmen", "EN 374"}}, + {ID: "M436", ReductionType: "information", SubType: "organizational", Name: "Isocyanat-Schulung nach REACH", Description: "Alle Beschaeftigten die mit Diisocyanaten umgehen erhalten eine Schulung nach der REACH-Beschraenkung (Anhang XVII Nr. 74).", HazardCategory: "material_environmental", Examples: []string{"Online-Schulung Diisocyanate", "Praktische Unterweisung Spritzlackierung"}, NormReferences: []string{"TRGS 430 — REACH-Beschraenkung", "REACH Anhang XVII Nr. 74"}}, + {ID: "M437", ReductionType: "protection", SubType: "safety_control", Name: "Automatische Abschaltung bei Absaugungsausfall", Description: "Bei Ausfall der Absaugung in Spritzkabinen wird der Spritzvorgang automatisch unterbrochen und ein Alarm ausgeloest.", HazardCategory: "material_environmental", Examples: []string{"Volumenstromueberwachung mit Maschinensperre", "Akustischer Alarm bei Druckabfall"}, NormReferences: []string{"TRGS 430 — Zusaetzliche technische Massnahmen", "TRGS 507 — Betriebsstoerungen"}}, + + // ══════════════════════════════════════════════════════════════ + // 3D.3 Druckmaschinen (8 Massnahmen) — EN 1010 + // ══════════════════════════════════════════════════════════════ + {ID: "M438", ReductionType: "protection", SubType: "fixed_guard", Name: "Walzenschutz an Druckmaschinen", Description: "Einzugsstellen an Walzenpaaren erhalten feststehende oder verriegelte Schutzeinrichtungen die ein Hineingreifen verhindern.", HazardCategory: "mechanical", Examples: []string{"Schutzbuegel an Farbwerk", "Verriegelte Abdeckung am Feuchtwerk"}, NormReferences: []string{"EN 1010 — Druckmaschinen", "ISO 12100 — Technische Schutzeinrichtungen"}}, + {ID: "M439", ReductionType: "protection", SubType: "extraction", Name: "Farbnebelabsaugung an Druckmaschinen", Description: "Aerosole und Daempfe aus Druckfarben und Reinigungsmitteln werden durch Absaugeinrichtungen am Farbwerk erfasst.", HazardCategory: "material_environmental", Examples: []string{"Absaugung am Farbkasten", "Abluftanlage an Trockner"}, NormReferences: []string{"EN 1010 — Druckmaschinen", "TRGS 507 — Technische Schutzmassnahmen"}}, + {ID: "M440", ReductionType: "protection", SubType: "fixed_guard", Name: "UV-Strahlenschutz an UV-Trocknern", Description: "UV-Trockner an Druckmaschinen werden eingekapselt und mit Sicherheitsverriegelung versehen um UV-Exposition zu verhindern.", HazardCategory: "general", Examples: []string{"Abgeschirmtes UV-Trocknergehaeuse", "Verriegelter Zugang mit UV-Abschaltung"}, NormReferences: []string{"EN 1010 — Druckmaschinen", "OStrV"}}, + {ID: "M441", ReductionType: "protection", SubType: "safety_control", Name: "Not-Halt-Leiste an Walzeneinzugsstellen", Description: "Entlang aller zugaenglichen Walzeneinzugsstellen werden Not-Halt-Leisten angebracht die bei Beruehrung den Antrieb sofort stoppen.", HazardCategory: "mechanical", Examples: []string{"Schaltleiste an Druckwerkswalzen", "Not-Halt-Seil entlang Papierbahn"}, NormReferences: []string{"EN 1010 — Druckmaschinen", "ISO 13850 — Not-Halt-Gestaltung"}}, + {ID: "M442", ReductionType: "information", SubType: "organizational", Name: "Reinigung von Druckmaschinen nur bei Stillstand", Description: "Reinigungsarbeiten an Farbwerken und Walzen werden nur bei stillstehender Maschine oder mit Tippbetrieb bei reduzierter Geschwindigkeit durchgefuehrt.", HazardCategory: "mechanical", Examples: []string{"Reinigungsmodus mit reduzierter Drehzahl", "LOTO bei manueller Reinigung"}, NormReferences: []string{"EN 1010 — Druckmaschinen", "TRBS 1112 — Instandhaltung"}}, + {ID: "M443", ReductionType: "protection", SubType: "safety_control", Name: "Papierbahnriss-Erkennung", Description: "Bahnsensoren erkennen einen Papierbahnriss und stoppen die Maschine automatisch bevor lose Bahnenden Einzugsstellen erzeugen.", HazardCategory: "mechanical", Examples: []string{"Optischer Bahnkantenerfasser", "Zugkraftueberwachung mit Stopp"}, NormReferences: []string{"EN 1010 — Druckmaschinen"}}, + {ID: "M444", ReductionType: "information", SubType: "organizational", Name: "Druckfarben-Sicherheitsdatenblaetter aushangen", Description: "Aktuelle Sicherheitsdatenblaetter fuer alle verwendeten Druckfarben, Loesemittel und Reiniger sind am Arbeitsplatz zugaenglich.", HazardCategory: "material_environmental", Examples: []string{"SDB-Ordner an Farbmischstation", "QR-Code am Farbbehälter"}, NormReferences: []string{"TRGS 400 — Gefaehrdungsbeurteilung", "REACH Art. 31"}}, + {ID: "M445", ReductionType: "information", SubType: "signage", Name: "Kennzeichnung Einzugsstellen an Druckmaschinen", Description: "Alle Einzugsstellen an Walzen werden mit Warnzeichen und Hinweisen auf Quetschgefahr dauerhaft gekennzeichnet.", HazardCategory: "mechanical", Examples: []string{"Warnzeichen W024 Handverletzung", "Hinweisschild Einzugsgefahr"}, NormReferences: []string{"EN 1010 — Druckmaschinen", "ISO 7010"}}, + + // ══════════════════════════════════════════════════════════════ + // 3D.4 Pumpen/Kompressoren (6 Massnahmen) — EN 809/1012 + // ══════════════════════════════════════════════════════════════ + {ID: "M446", ReductionType: "design", SubType: "fluid_design", Name: "Druckstossdaempfer in Rohrleitungssystemen", Description: "Rohrleitungssysteme mit schnell schliessenden Armaturen erhalten Druckstossdaempfer zur Vermeidung von Druckstoessen.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Windkessel hinter Kolbenpumpe", "Langsam schliessende Rueckschlagklappe"}, NormReferences: []string{"EN 809 — Pumpen", "EN 13480 — Metallische Rohrleitungen"}}, + {ID: "M447", ReductionType: "protection", SubType: "monitoring", Name: "Kavitationsueberwachung an Pumpen", Description: "Pumpen werden mit Sensoren zur Erkennung von Kavitation ausgestattet die rechtzeitig warnen bevor Schaeden am Laufrad entstehen.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Schwingungssensor am Pumpengehaeuse", "Saugdruckueberwachung"}, NormReferences: []string{"EN 809 — Pumpen", "ISO 13709"}}, + {ID: "M448", ReductionType: "protection", SubType: "monitoring", Name: "Leckageueberwachung an Wellendichtungen", Description: "Wellendichtungen an Pumpen und Kompressoren werden auf Leckage ueberwacht, insbesondere bei giftigen oder brennbaren Medien.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Tropfsensor an Gleitringdichtung", "Gasdetektor an Kompressorwelle"}, NormReferences: []string{"EN 809 — Pumpen", "EN 1012 — Kompressoren"}}, + {ID: "M449", ReductionType: "protection", SubType: "fluid_protection", Name: "Berstschutz an Kompressorgehaeuse", Description: "Kompressorgehaeuse werden fuer den maximalen Betriebsdruck plus Sicherheitszuschlag ausgelegt. Berstscheiben sichern gegen katastrophales Versagen.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Druckfestes Gehaeuse nach EN 1012", "Berstscheibe am Druckstutzen"}, NormReferences: []string{"EN 1012 — Kompressoren", "EN ISO 4126-1 — Sicherheitsventile"}}, + {ID: "M450", ReductionType: "protection", SubType: "safety_control", Name: "Trockenlaufschutz an Pumpen", Description: "Pumpen erhalten einen Trockenlaufschutz der bei fehlendem Medium die Pumpe automatisch abschaltet.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Mindestdruckschalter an Saugseite", "Fuellstandsueberwachung im Vorratsbehaelter"}, NormReferences: []string{"EN 809 — Pumpen"}}, + {ID: "M451", ReductionType: "information", SubType: "organizational", Name: "Kompressor-Druckluftbehaelter regelmaessig entwassern", Description: "Druckluftbehaelter an Kompressoren werden regelmaessig entwassert um Korrosion und Druckluftverunreinigung zu verhindern.", HazardCategory: "pneumatic_hydraulic", Examples: []string{"Automatischer Kondensatableiter", "Taeglich manuelle Entwasserung"}, NormReferences: []string{"EN 1012 — Kompressoren", "BetrSichV Anhang 2"}}, + } +} diff --git a/ai-compliance-sdk/internal/iace/pattern_engine.go b/ai-compliance-sdk/internal/iace/pattern_engine.go index 3ff2759..95007f0 100644 --- a/ai-compliance-sdk/internal/iace/pattern_engine.go +++ b/ai-compliance-sdk/internal/iace/pattern_engine.go @@ -118,6 +118,7 @@ func NewPatternEngine() *PatternEngine { 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) + patterns = append(patterns, GetVDMAIndustryPatterns()...) // HP1500-HP1549 VDMA sectors (Phase 3) return &PatternEngine{ resolver: NewTagResolver(), patterns: patterns,