diff --git a/ai-compliance-sdk/internal/iace/benchmark_matcher.go b/ai-compliance-sdk/internal/iace/benchmark_matcher.go index d99de1f8..54d1c215 100644 --- a/ai-compliance-sdk/internal/iace/benchmark_matcher.go +++ b/ai-compliance-sdk/internal/iace/benchmark_matcher.go @@ -217,10 +217,17 @@ func fuzzyMatchScore(gt *GroundTruthEntry, h *Hazard) (float64, string) { // Penalty: if engine hazard mentions a machine-specific term not in the GT context, // it's likely a wrong-machine match (e.g. "Spielplatz" for a robot cell GT entry) if hasWrongMachineTerm(h.Name, h.Scenario, gt.HazardCause, gt.ComponentZone) { - score *= 0.3 // Heavy penalty + score *= 0.3 reasons = append(reasons, "Strafabzug:FremdMaschine") } + // Minimum keyword overlap required: if GT and Engine share no hazard-type + // keywords at all, the match is unreliable regardless of category/zone score + if kwScore == 0 && zoneScore < 0.5 { + score *= 0.5 + reasons = append(reasons, "Strafabzug:KeineKeywords") + } + return score, strings.Join(reasons, "+") } diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_robot_cell_ext.go b/ai-compliance-sdk/internal/iace/hazard_patterns_robot_cell_ext.go new file mode 100644 index 00000000..3d26343f --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_robot_cell_ext.go @@ -0,0 +1,366 @@ +package iace + +// GetRobotCellPatternsExt returns additional hazard patterns for robot cells. +// These cover specific scenarios identified through GT benchmark gaps. +// HP1650-HP1699 +func GetRobotCellPatternsExt() []HazardPattern { + return []HazardPattern{ + // ================================================================ + // Roboterarm — Spezifische Szenarien (GT-Gaps) + // ================================================================ + { + ID: "HP1650", NameDE: "Roboterarm durchschlaegt Bewegungsbegrenzung", NameEN: "Robot arm exceeds motion limit", + RequiredComponentTags: []string{"moving_part", "guard"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M061", "M054"}, + Priority: 94, + ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "changeover", "fault_clearing"}, + ScenarioDE: "Roboterarm ueberschreitet den sicher begrenzten Bewegungsbereich und trifft den Schutzzaun oder die Einhausung mit hoher Kraft.", + TriggerDE: "Softwareendschalter versagt, Achsbegrenzung (DCS) fehlerhaft konfiguriert.", + HarmDE: "Person ausserhalb wird von Zaunteilen oder dem Roboterarm getroffen.", + AffectedDE: "Bedienpersonal in der Naehe des Schutzzauns", + ZoneDE: "Schutzzaun, Bereich um die Roboterzelle", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP1651", NameDE: "Wiederanlauf Roboter waehrend Person in Zelle", NameEN: "Robot restart while person inside cell", + RequiredComponentTags: []string{"moving_part", "guard"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M054", "M061", "M141"}, + Priority: 95, + ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing", "changeover"}, + ScenarioDE: "Person befindet sich in der Roboterzelle. Schutztuer wird geschlossen und Roboter startet ohne dass sichergestellt ist, dass niemand im Gefahrenbereich ist.", + TriggerDE: "Fehlende Quittierungspflicht, kein Personenscanner, Schutztuer ohne Sicherheitszuhaltung.", + HarmDE: "Schwere Quetschungen, Knochenbrueche durch anlaufenden Roboter.", + AffectedDE: "Wartungspersonal, Einrichter, Reinigungspersonal", + ZoneDE: "Inneres der Roboterzelle, Roboterarm", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP1652", NameDE: "Quetschen durch Werkzeug/Greifer am Roboter im Betrieb", NameEN: "Crushing by tool/gripper during operation", + RequiredComponentTags: []string{"moving_part", "clamping_part"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M054", "M061"}, + Priority: 94, + ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning"}, + ScenarioDE: "Person wird von bewegtem Werkzeug oder Greifer am Roboterarm getroffen oder zwischen Werkzeug und feststehenden Teilen eingeklemmt.", + TriggerDE: "Roboter bewegt Werkzeug/Greifer waehrend Person im Schwenkbereich.", + HarmDE: "Quetschungen, Schnittverletzungen, Prellungen durch Werkzeug/Greifer.", + AffectedDE: "Bedienpersonal, Einrichter", + ZoneDE: "Inneres der Roboterzelle, Greifer/Werkzeug des Roboterarms", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP1653", NameDE: "Quetschen durch Werkstück am Robotergreifer", NameEN: "Crushing by workpiece on robot gripper", + RequiredComponentTags: []string{"moving_part", "clamping_part"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M054", "M061"}, + Priority: 93, + ApplicableLifecycles: []string{"normal_operation", "setup", "changeover"}, + ScenarioDE: "Person wird von sich bewegendem Werkstueck am Robotergreifer getroffen oder zwischen Werkstueck und feststehenden Anlagenteilen eingeklemmt.", + TriggerDE: "Roboter transportiert Werkstueck, Person steht im Schwenkbereich.", + HarmDE: "Quetschungen, Prellungen, Knochenbrueche abhaengig von Werkstueckgewicht.", + AffectedDE: "Bedienpersonal, Einrichter", + ZoneDE: "Inneres der Roboterzelle, Greifer des Roboterarms", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP1654", NameDE: "Werkstück/Werkzeug durchschlaegt Schutzzaun", NameEN: "Workpiece/tool penetrates safety fence", + RequiredComponentTags: []string{"clamping_part", "guard"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M061"}, + Priority: 92, + ApplicableLifecycles: []string{"normal_operation"}, + ScenarioDE: "Greifer versagt und Werkstueck oder Werkzeug wird durch Roboterbewegung in Richtung Schutzzaun geschleudert.", + TriggerDE: "Greifkraftverlust, Druckausfall, oelige Oberflaeche des Werkstuecks.", + HarmDE: "Person ausserhalb der Zelle wird von weggeschleudertem Teil getroffen.", + AffectedDE: "Bedienpersonal in der Naehe der Roboterzelle", + ZoneDE: "Schutzzaun, Bereich ausserhalb der Roboterzelle", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP1655", NameDE: "Durchgreifen ueber Schutzzaun zum Greifer/Werkstueck", NameEN: "Reaching over fence to gripper/workpiece", + RequiredComponentTags: []string{"clamping_part", "guard"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M002", "M061"}, + Priority: 92, + ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"}, + ScenarioDE: "Person greift ueber den Schutzzaun und erreicht den Greifer oder das Werkstueck am Roboterarm.", + TriggerDE: "Sicherheitsabstand zwischen Zaun-Oberkante und Greifer/Werkstueck zu gering.", + HarmDE: "Quetschung von Hand oder Arm zwischen Greifer/Werkstueck und feststehenden Teilen.", + AffectedDE: "Bedienpersonal", + ZoneDE: "Schutzzaun-Oberkante, Greifer/Werkstueck am Roboterarm", + DefaultSeverity: 3, DefaultExposure: 2, + }, + // ================================================================ + // Zentriergreifer an Förderbändern + // ================================================================ + { + ID: "HP1660", NameDE: "Quetschen am Zentriergreifer von aussen", NameEN: "Crushing at centering gripper from outside", + RequiredComponentTags: []string{"clamping_part", "entanglement_risk"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M002", "M061"}, + Priority: 93, + ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"}, + ScenarioDE: "Person befindet sich ausserhalb der Roboterzelle und greift an die Zentriereinheit (fest montierter Greifer am Foerderband).", + TriggerDE: "Zentriergreifer schliesst waehrend Hand im Greifbereich. Unzureichender Abstand zwischen Greifer und Schutzzaun-Oeffnung.", + HarmDE: "Quetschung von Fingern oder Hand zwischen Greifbacken und Werkstueck.", + AffectedDE: "Bedienpersonal", + ZoneDE: "Zentriereinheit an Foerderbaendern, Schutzzaun-Oeffnung", + DefaultSeverity: 2, DefaultExposure: 3, + }, + { + ID: "HP1661", NameDE: "Quetschen am Zentriergreifer von innen", NameEN: "Crushing at centering gripper from inside cell", + RequiredComponentTags: []string{"clamping_part", "entanglement_risk", "guard"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M054", "M061"}, + Priority: 93, + ApplicableLifecycles: []string{"normal_operation", "cleaning", "fault_clearing"}, + ScenarioDE: "Person befindet sich innerhalb der Roboterzelle und greift an die Zentriereinheit am Foerderband.", + TriggerDE: "Schutztuer geoeffnet, aber Zentriergreifer wird nicht automatisch stillgesetzt.", + HarmDE: "Quetschung von Fingern oder Hand zwischen Greifbacken und Werkstueck.", + AffectedDE: "Wartungspersonal, Reinigungspersonal", + ZoneDE: "Zentriereinheit an Foerderbaendern innerhalb der Roboterzelle", + DefaultSeverity: 2, DefaultExposure: 3, + }, + // ================================================================ + // Bearbeitungszentrum (Robodrill/WZM) innerhalb Roboterzelle + // ================================================================ + { + ID: "HP1665", NameDE: "Quetschen an Beladetuer der Werkzeugmaschine", NameEN: "Crushing at machine tool loading door", + RequiredComponentTags: []string{"moving_part"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M054", "M061"}, + Priority: 93, MachineTypes: []string{"cnc", "metalworking", "automotive", "robotics_cobot"}, + ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"}, + ScenarioDE: "Person greift durch die Beladetuer der Werkzeugmaschine. Beladetuer schliesst sich oder bewegliche Teile im Innenraum starten.", + TriggerDE: "Tuerpositionsschalter nicht in Robotersteuerung eingebunden, fehlende Verriegelung.", + HarmDE: "Quetschung von Hand/Arm an Beladetuer oder durch bewegliche Teile im Bearbeitungsraum.", + AffectedDE: "Bedienpersonal, Einrichter, Wartungspersonal", + ZoneDE: "Beladetuer der Werkzeugmaschine, Bearbeitungsraum", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP1666", NameDE: "Quetschen/Scheren im Bearbeitungsraum der WZM", NameEN: "Crushing/shearing inside machine tool workspace", + RequiredComponentTags: []string{"moving_part"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M054"}, + Priority: 92, MachineTypes: []string{"cnc", "metalworking", "automotive", "robotics_cobot"}, + ApplicableLifecycles: []string{"setup", "maintenance", "fault_clearing"}, + ScenarioDE: "Person greift in den Bearbeitungsraum der Werkzeugmaschine und wird von beweglichen Achsen, Werkzeug oder Spannvorrichtung verletzt.", + TriggerDE: "Bewegliche Teile starten waehrend Hand im Bearbeitungsraum (Einrichtbetrieb, Stoerungsbeseitigung).", + HarmDE: "Quetschungen, Schnittverletzungen durch rotierende Werkzeuge, Scheren an Achsbewegungen.", + AffectedDE: "Einrichter, Wartungspersonal", + ZoneDE: "Bearbeitungsraum der Werkzeugmaschine, Achsen, Werkzeug, Spannvorrichtung", + DefaultSeverity: 3, DefaultExposure: 3, + }, + // ================================================================ + // KSS-Spritzer / Druckluft in Bearbeitungszelle + // ================================================================ + { + ID: "HP1670", NameDE: "KSS-Spritzer in Augen/Gesicht", NameEN: "Coolant splash to eyes/face", + RequiredComponentTags: []string{}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M141"}, + Priority: 91, MachineTypes: []string{"cnc", "metalworking", "automotive"}, + ApplicableLifecycles: []string{"normal_operation", "cleaning", "maintenance", "fault_clearing"}, + ScenarioDE: "Person bekommt Kuehlschmierstoff-Spritzer ins Auge oder Gesicht beim Oeffnen der Bearbeitungszelle oder bei laufender Bettspuelung.", + TriggerDE: "KSS-Pumpe laeuft waehrend Schutztuer geoeffnet ist, Austrittsduese nicht korrekt gerichtet.", + HarmDE: "Augenverletzung, Reizung der Bindehaut, bei Hochdruck-KSS ernsthafte Augenschaeden.", + AffectedDE: "Bedienpersonal, Wartungspersonal", + ZoneDE: "Bearbeitungszelle, Bereich vor der Schutztuer, Austrittsduesen", + DefaultSeverity: 2, DefaultExposure: 3, + }, + { + ID: "HP1671", NameDE: "Druckluft-Verletzung in Bearbeitungszelle", NameEN: "Compressed air injury in machining cell", + RequiredComponentTags: []string{"pinch_point"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M061"}, + Priority: 91, MachineTypes: []string{"cnc", "metalworking", "automotive"}, + ApplicableLifecycles: []string{"normal_operation", "cleaning", "maintenance", "fault_clearing"}, + ScenarioDE: "Person wird von ausstroemender Druckluft oder aufgewirbelten Bearbeitungsrueckstaenden in der Bearbeitungszelle verletzt.", + TriggerDE: "Druckluftreinigungsduese aktiv waehrend Schutztuer geoeffnet, Spaene oder Partikel werden aufgewirbelt.", + HarmDE: "Augenverletzung durch Spaene, Hautverletzung durch Druckluftstoss.", + AffectedDE: "Bedienpersonal, Wartungspersonal", + ZoneDE: "Bearbeitungszelle, Druckluftreinigungsduesen", + DefaultSeverity: 2, DefaultExposure: 3, + }, + // ================================================================ + // KSS-Schläuche unter Druck + // ================================================================ + { + ID: "HP1675", NameDE: "KSS-Schlauch bersten oder abspringen", NameEN: "Coolant hose burst or detachment", + RequiredComponentTags: []string{}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M420"}, + Priority: 91, MachineTypes: []string{"cnc", "metalworking", "automotive"}, + ApplicableLifecycles: []string{"normal_operation", "setup", "maintenance", "fault_clearing"}, + ScenarioDE: "Schlauch der Kuehlschmierstoffversorgung zwischen Aufbereitungsanlage und Bearbeitungszentrum platzt oder springt unter Druck ab.", + TriggerDE: "Materialermuedung, Ueberdruck, fehlerhafte Befestigung, mechanische Beschaedigung des Schlauchs.", + HarmDE: "Peitscheneffekt des Schlauchs, Spritzer unter Druck, Rutschgefahr durch austretenden KSS.", + AffectedDE: "Bedienpersonal, Wartungspersonal", + ZoneDE: "Druckschlaeuche des Kuehlschmierstoffsystems", + DefaultSeverity: 2, DefaultExposure: 2, + }, + // ================================================================ + // Quetschen am Förderband — Werkstück/Tunnel + // ================================================================ + { + ID: "HP1680", NameDE: "Quetschen zwischen Werkstueck und Tunnel am Foerderband", NameEN: "Crushing between workpiece and conveyor tunnel", + RequiredComponentTags: []string{"entanglement_risk"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M002", "M003"}, + Priority: 91, + ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "fault_clearing"}, + ScenarioDE: "Person greift an den Tunnel/Rahmen des Foerderbandes und wird von einem darauf bewegten Werkstueck eingequetscht.", + TriggerDE: "Zu geringer Abstand zwischen Werkstueck und Tunnel/Rahmen, scharfe Kanten an Tunneleingang.", + HarmDE: "Quetschung von Fingern zwischen Werkstueck und Rahmen.", + AffectedDE: "Bedienpersonal", + ZoneDE: "Foerderband-Tunnel, Werkstück auf dem Band", + DefaultSeverity: 2, DefaultExposure: 3, + }, + // ================================================================ + // Elektrisch — Spezifische Szenarien + // ================================================================ + { + ID: "HP1685", NameDE: "Indirektes Beruehren durch Schutzleiterunterbrechung", NameEN: "Indirect contact due to PE interruption", + RequiredComponentTags: []string{}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M410", "M411"}, + Priority: 93, + ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"}, + ScenarioDE: "Schutzleiter ist unterbrochen. Beruehrbare leitfaehige Teile der Maschine fuehren gefaehrliche Beruehrungsspannung.", + TriggerDE: "Mechanische Beschaedigung des Schutzleiters, korrodierte Verbindung, fehlerhafte Installation.", + HarmDE: "Elektrischer Schlag bei Beruehren des Maschinengehaeuses oder anderer leitfaehiger Teile.", + AffectedDE: "Bedienpersonal, Wartungspersonal", + ZoneDE: "Beruehrbare leitfaehige Oberflaechen der Anlage", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP1686", NameDE: "Direktes Beruehren im Schaltschrank", NameEN: "Direct contact inside control cabinet", + RequiredComponentTags: []string{}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M009"}, + Priority: 93, + ApplicableLifecycles: []string{"maintenance", "fault_clearing", "commissioning"}, + ScenarioDE: "Person beruehrt spannungsfuehrende Teile bei geoeffnetem Schaltschrank. Leiter um Bedienelemente sind nicht fingersicher geschuetzt.", + TriggerDE: "Schaltschranktuer geoeffnet fuer Wartung oder Fehlersuche, unzureichender Beruehrungsschutz.", + HarmDE: "Elektrischer Schlag, bei Hochspannung potentiell toedlich.", + AffectedDE: "Wartungspersonal, Elektrofachkraefte", + ZoneDE: "Schaltschrank-Innenraum, Klemmen, Sammelschienen", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP1687", NameDE: "Brand durch eindringende Fluessigkeit", NameEN: "Fire from liquid ingress causing short circuit", + RequiredComponentTags: []string{}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M009"}, + Priority: 92, + ApplicableLifecycles: []string{"normal_operation", "cleaning"}, + ScenarioDE: "Wasser oder Kuehlschmierstoff dringt in elektrische Komponenten ein und verursacht einen Kurzschluss.", + TriggerDE: "Reinigung mit Wasser, KSS-Leckage tropft auf Schaltschrank oder Steuerungskomponenten.", + HarmDE: "Kurzschluss, Brand, Rauchentwicklung.", + AffectedDE: "Bedienpersonal, Reinigungspersonal", + ZoneDE: "Schaltgeraetekombinationen, elektrische Komponenten unterhalb von Rohrleitungen", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP1688", NameDE: "Gefaehrliche Beruehrungsspannung durch Potentialunterschiede", NameEN: "Dangerous touch voltage from potential differences", + RequiredComponentTags: []string{}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M410"}, + Priority: 92, + ApplicableLifecycles: []string{"normal_operation", "setup", "maintenance", "fault_clearing"}, + ScenarioDE: "Verschiedene Anlagenteile mit unterschiedlicher Energieversorgung haben kein gemeinsames Bezugspotential. Beruehrbare Teile fuehren unterschiedliche Spannungen.", + TriggerDE: "Fehlender Potentialausgleich zwischen Anlagenteilen verschiedener Hersteller.", + HarmDE: "Elektrischer Schlag bei gleichzeitigem Beruehren von Teilen unterschiedlichen Potentials.", + AffectedDE: "Bedienpersonal, Wartungspersonal", + ZoneDE: "Elektrisch leitfaehige Oberflaechen verschiedener Anlagenteile", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP1689", NameDE: "Fehlerstromschutz an Steckdosenstromkreisen", NameEN: "RCD protection at socket circuits", + RequiredComponentTags: []string{}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M410"}, + Priority: 91, + ApplicableLifecycles: []string{"normal_operation", "setup", "maintenance", "fault_clearing"}, + ScenarioDE: "Defektes Geraet wird an Steckdose der Maschine angeschlossen. Fehlerstrom fliesst ueber den Koerper der beruerenden Person.", + TriggerDE: "Fehlende Fehlerstrom-Schutzeinrichtung (RCD) an Steckdosenstromkreisen der Maschine.", + HarmDE: "Elektrischer Schlag, Herzkammerflimmern.", + AffectedDE: "Bedienpersonal, Wartungspersonal", + ZoneDE: "Steckdosen der Maschine, angeschlossene Betriebsmittel", + DefaultSeverity: 4, DefaultExposure: 2, + }, + // ================================================================ + // Ergonomie + // ================================================================ + { + ID: "HP1690", NameDE: "Ergonomisch unguenstige Einlegeposition", NameEN: "Unfavorable ergonomic loading position", + RequiredComponentTags: []string{"entanglement_risk"}, + GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{}, + Priority: 85, + ApplicableLifecycles: []string{"normal_operation"}, + ScenarioDE: "Person muss Werkstuecke in ergonomisch unguenstiger Hoehe oder Reichweite auf das Foerderband auflegen oder entnehmen.", + TriggerDE: "Bandhoehe nicht auf ergonomische Handhabung ausgelegt, schwere Werkstuecke.", + HarmDE: "Rueckenbeschwerden, Schulterbelastung, langfristig Muskel-Skelett-Erkrankungen.", + AffectedDE: "Bedienpersonal", + ZoneDE: "Beladebereich der Foerderbaender", + DefaultSeverity: 2, DefaultExposure: 4, + }, + { + ID: "HP1691", NameDE: "Unergonomische Position der Bedienelemente", NameEN: "Unfavorable ergonomic position of controls", + RequiredComponentTags: []string{}, + GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{}, + Priority: 85, + ApplicableLifecycles: []string{"normal_operation", "setup"}, + ScenarioDE: "Bedienelemente der Anlage sind in ergonomisch unguenstiger Hoehe oder Position angebracht.", + TriggerDE: "Bedienfeld zu hoch, zu niedrig oder seitlich versetzt montiert.", + HarmDE: "Fehlhaltung, Nacken-/Schulterbelastung bei laengerer Bedienung.", + AffectedDE: "Bedienpersonal", + ZoneDE: "Bedienfeld, HMI, Betriebsartenwahlschalter", + DefaultSeverity: 2, DefaultExposure: 4, + }, + // ================================================================ + // Thermisch / Verbrennung + // ================================================================ + { + ID: "HP1695", NameDE: "Verbrennung an heissen Werkstuecken", NameEN: "Burn from hot workpieces", + RequiredComponentTags: []string{}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M141"}, + Priority: 88, MachineTypes: []string{"cnc", "metalworking", "automotive"}, + ApplicableLifecycles: []string{"normal_operation", "setup", "changeover"}, + ScenarioDE: "Person beruehrt heisse Werkstuecke die durch die Bearbeitung erwaermt wurden.", + TriggerDE: "Manuelle Entnahme von Werkstuecken ohne Wartezeit oder Schutzhandschuhe.", + HarmDE: "Verbrennungen an Haenden und Fingern.", + AffectedDE: "Bedienpersonal", + ZoneDE: "Werkstueckausgabe, Entnahmeplatz", + DefaultSeverity: 1, DefaultExposure: 3, + }, + // ================================================================ + // Tragfähigkeit / Aufstellung + // ================================================================ + { + ID: "HP1697", NameDE: "Anlage bricht durch unzureichenden Untergrund ein", NameEN: "Machine collapses through insufficient floor", + RequiredComponentTags: []string{"high_force"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{}, + Priority: 88, + ApplicableLifecycles: []string{"normal_operation", "setup", "commissioning"}, + ScenarioDE: "Tragfaehigkeit des Untergrunds wird durch das Maschinengewicht und die dynamischen Lasten ueberschritten.", + TriggerDE: "Boden nicht auf maximale statische und dynamische Lasten der Maschine ausgelegt.", + HarmDE: "Anlage bricht ein, Quetschung von Personen im Umfeld.", + AffectedDE: "Bedienpersonal, Wartungspersonal", + ZoneDE: "Bereich um die Maschine, Aufstellflaeche", + DefaultSeverity: 4, DefaultExposure: 1, + }, + } +} diff --git a/ai-compliance-sdk/internal/iace/pattern_registry.go b/ai-compliance-sdk/internal/iace/pattern_registry.go index 17455cf4..efb3b21e 100644 --- a/ai-compliance-sdk/internal/iace/pattern_registry.go +++ b/ai-compliance-sdk/internal/iace/pattern_registry.go @@ -38,5 +38,6 @@ func collectAllPatterns() []HazardPattern { patterns = append(patterns, GetVDMAIndustryPatterns()...) // HP1500-HP1549 VDMA sectors (Phase 3) patterns = append(patterns, GetTextileAgriPatterns()...) // HP1550-HP1584 Textile + Agri (Phase 5) patterns = append(patterns, GetRobotCellPatterns()...) // HP1600-HP1649 Robot cell (GT benchmark) + patterns = append(patterns, GetRobotCellPatternsExt()...) // HP1650-HP1699 Robot cell extended (GT gaps) return patterns }