diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended.go b/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended.go new file mode 100644 index 0000000..2cfd5e0 --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_cyber_extended.go @@ -0,0 +1,1009 @@ +package iace + +// GetCyberExtendedPatterns returns 65 hazard patterns (HP800-HP864) +// for cyber/software/AI/automation safety covering: detailed software faults, +// cyber-security, AI/ML specifics, network/communication, and HMI hazards. +func GetCyberExtendedPatterns() []HazardPattern { + return []HazardPattern{ + // ================================================================ + // Software-Fehler detailliert (HP800-HP814) + // ================================================================ + { + ID: "HP800", NameDE: "Speicherueberlauf fuehrt zu unkontrolliertem Verhalten", NameEN: "Memory overflow causes uncontrolled behavior", + RequiredComponentTags: []string{"has_software", "programmable"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M102", "M103"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 85, + ScenarioDE: "Dynamischer Speicher der Steuerung laeuft voll; Steuerungsprogramm verhaelt sich undefiniert oder stuerzt ab.", + TriggerDE: "Memory Leak ueber Betriebszeit, fehlende Speicherfreigabe, zu kleine Heap-Groesse", + HarmDE: "Unkontrollierter Maschinenzustand, Ausfall der Sicherheitsfunktion, unerwartete Aktorbewegung", + AffectedDE: "Bedienpersonal, Personen im Maschinenbereich", + ZoneDE: "Gesamte Maschine (alle softwaregesteuerten Aktoren)", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP801", NameDE: "Race Condition in Echtzeitsystem", NameEN: "Race condition in real-time system", + RequiredComponentTags: []string{"has_software", "programmable"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M102"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 85, + ScenarioDE: "Zwei Tasks greifen gleichzeitig auf gemeinsame Ressource zu; Zustandsinformation wird inkonsistent.", + TriggerDE: "Fehlende Synchronisierung, Interrupt-Kollision, Multicore-Steuerung ohne Mutex", + HarmDE: "Falsche Aktoransteuerung, Sicherheitszustand wird uebersprungen, sporadische Fehlfunktion", + AffectedDE: "Bedienpersonal, Wartungspersonal (schwer reproduzierbar)", + ZoneDE: "Alle softwaregesteuerten Achsen und Sicherheitsfunktionen", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP802", NameDE: "Division durch Null in Regelkreis", NameEN: "Division by zero in control loop", + RequiredComponentTags: []string{"has_software", "programmable"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M103"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 80, + ScenarioDE: "Regelkreis teilt durch einen Sensorwert, der unerwartet Null wird; Stellgroesse laeuft ins Unendliche.", + TriggerDE: "Sensorausfall liefert Null, Grenzwertberechnung ohne Pruefung, Kaltstart mit uninitialisierten Werten", + HarmDE: "Aktor faehrt mit Maximalgeschwindigkeit, Druckregelung auf Maximum, unkontrollierter Prozess", + AffectedDE: "Bedienpersonal, Personen im Wirkbereich des Aktors", + ZoneDE: "Regelstrecke, Aktorbereich, gesamter Regelkreis", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP803", NameDE: "Falscher Datentyp fuehrt zu Werteueberlauf", NameEN: "Wrong data type causes value overflow", + RequiredComponentTags: []string{"has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M102"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 75, + ScenarioDE: "Integer-Ueberlauf in der Steuerung wandelt grossen Positivwert in negativen Wert und kehrt Bewegungsrichtung um.", + TriggerDE: "16-Bit-Variable fuer 32-Bit-Wert, fehlende Bereichspruefung, Zaehlerueberlauf", + HarmDE: "Aktor faehrt in falsche Richtung, Kollision, mechanischer Anschlag wird ueberfahren", + AffectedDE: "Bedienpersonal, Personen im Bewegungsbereich", + ZoneDE: "Verfahrbereich der Achsen, Positionierbereich", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP804", NameDE: "Watchdog loest nicht aus", NameEN: "Watchdog fails to trigger", + RequiredComponentTags: []string{"has_software", "safety_device"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"safety_function_failure", "software_fault"}, + SuggestedMeasureIDs: []string{"M104", "M105"}, + SuggestedEvidenceIDs: []string{"E01", "E08", "E14"}, + Priority: 90, + ScenarioDE: "Hardware- oder Software-Watchdog erkennt Haengen der Steuerung nicht und loest keinen sicheren Zustand aus.", + TriggerDE: "Watchdog falsch konfiguriert, Programm bedient Watchdog obwohl Funktion fehlerhaft, Timer-Intervall zu lang", + HarmDE: "Steuerung bleibt in unsicherem Zustand, Sicherheitsfunktion wird nicht ausgeloest", + AffectedDE: "Bedienpersonal, alle Personen im Gefahrenbereich", + ZoneDE: "Gesamte Maschine (bei Versagen des Watchdog fehlt letzte Sicherheitsebene)", + DefaultSeverity: 5, DefaultExposure: 1, + }, + { + ID: "HP805", NameDE: "Deadlock in Multi-Thread-Steuerung", NameEN: "Deadlock in multi-threaded controller", + RequiredComponentTags: []string{"has_software", "programmable"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M102", "M103"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 80, + ScenarioDE: "Zwei oder mehr Tasks der Steuerung blockieren sich gegenseitig; Steuerung reagiert nicht mehr.", + TriggerDE: "Zirkulaere Ressourcen-Abhaengigkeit, verschachtelte Locks in falscher Reihenfolge", + HarmDE: "Steuerung friert ein, Aktor in letzter Position, kein Stopp-Befehl moeglich", + AffectedDE: "Bedienpersonal, Personen im Maschinenbereich", + ZoneDE: "Gesamte Maschine (alle softwaregesteuerten Funktionen eingefroren)", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP806", NameDE: "Datenverlust nach Spannungsausfall", NameEN: "Data loss after power failure", + RequiredComponentTags: []string{"has_software"}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M103", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 70, + ScenarioDE: "Steuerung verliert nach Spannungsausfall Prozessdaten und startet mit falschen oder veralteten Parametern.", + TriggerDE: "Spannungsausfall waehrend Schreibvorgang, kein nichtfluechtiger Speicher, kein USV-System", + HarmDE: "Falsche Referenzposition nach Neustart, falsche Prozessparameter, unerwartete Bewegung", + AffectedDE: "Bedienpersonal beim Wiederanlauf", + ZoneDE: "Gesamte Maschine, insbesondere Referenzfahrt-Bereiche", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP807", NameDE: "Korrupte Firmware nach fehlerhaftem Update", NameEN: "Corrupt firmware after failed update", + RequiredComponentTags: []string{"has_software", "programmable"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"update_failure", "software_fault"}, + SuggestedMeasureIDs: []string{"M138", "M146"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 80, + ScenarioDE: "Firmware-Update wird unterbrochen und hinterlaesst Steuerung mit teilweise ueberschriebener, inkonsistenter Software.", + TriggerDE: "Spannungsausfall waehrend Update, Netzwerkabbruch, inkompatible Firmware-Version", + HarmDE: "Steuerung startet nicht oder verhaelt sich undefiniert, Sicherheitsfunktionen verloren", + AffectedDE: "Wartungspersonal, Bedienpersonal nach Wiederinbetriebnahme", + ZoneDE: "Gesamte Maschine (Steuerung nicht funktionsfaehig oder unberechenbar)", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP808", NameDE: "Falsches Programm geladen (Verwechslung)", NameEN: "Wrong program loaded (mix-up)", + RequiredComponentTags: []string{"programmable"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"configuration_error"}, + SuggestedMeasureIDs: []string{"M145", "M146", "M121"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 80, + ScenarioDE: "Falsches Maschinenrezept oder SPS-Programm wird geladen; Maschine arbeitet mit falschen Parametern.", + TriggerDE: "Verwechslung der Programmnummer, fehlende Rezeptvalidierung, ungesicherte Programmauswahl", + HarmDE: "Falsche Werkzeugbewegung, Kollision, zu hohe Kraefte auf Werkstueck", + AffectedDE: "Bedienpersonal, Einrichter", + ZoneDE: "Gesamte Bearbeitungszone, alle programmierten Achsen", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP809", NameDE: "Sensorwert ausserhalb Messbereich", NameEN: "Sensor value out of measuring range", + RequiredComponentTags: []string{"sensor_part", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M102"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 75, + ScenarioDE: "Sensor liefert Wert ausserhalb seines Messbereichs; Steuerungssoftware interpretiert ihn falsch.", + TriggerDE: "Sensor-Saettigung, Kabelbruch liefert Maximalwert, EMV-Stoerung, Sensor defekt", + HarmDE: "Falscher Regeleingriff, Sicherheitsgrenzwert wird nicht erkannt, unkontrollierter Prozess", + AffectedDE: "Bedienpersonal, Personen im Prozessbereich", + ZoneDE: "Sensorposition, gesamte Regelstrecke", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP810", NameDE: "Aktor-Ansteuerung invertiert", NameEN: "Actuator control inverted", + RequiredComponentTags: []string{"has_software", "moving_part"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault", "configuration_error"}, + SuggestedMeasureIDs: []string{"M101", "M145"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 85, + ScenarioDE: "Aktor bewegt sich entgegengesetzt zur programmierten Richtung durch vertauschtes Vorzeichen in der Software.", + TriggerDE: "Programmierfehler, falsches Parametriervorzeichen, Kabelvertauschung nach Wartung", + HarmDE: "Kollision, Quetschung in unerwarteter Richtung, mechanische Zerstoerung", + AffectedDE: "Bedienpersonal, Einrichter bei Erstinbetriebnahme", + ZoneDE: "Gesamter Verfahrbereich des Aktors in beide Richtungen", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP811", NameDE: "Zeitstempel-Fehler fuehrt zu falscher Sequenz", NameEN: "Timestamp error causes wrong sequence", + RequiredComponentTags: []string{"has_software", "networked"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M114"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 70, + ScenarioDE: "Fehlerhafte Zeitstempel fuehren dazu, dass Prozessschritte in falscher Reihenfolge ausgefuehrt werden.", + TriggerDE: "Zeitsynchronisation verloren, NTP-Ausfall, Uhrendrift zwischen Steuerungen", + HarmDE: "Ablaufsequenz vertauscht, Werkzeugwechsel vor Spindelstopp, Presse schliesst vor Teileentnahme", + AffectedDE: "Bedienpersonal", + ZoneDE: "Alle sequenzgesteuerten Stationen und Achsen", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP812", NameDE: "Buffer Overflow in Steuerungssoftware", NameEN: "Buffer overflow in controller software", + RequiredComponentTags: []string{"has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M102"}, + SuggestedEvidenceIDs: []string{"E01", "E14", "E16"}, + Priority: 85, + ScenarioDE: "Pufferueberlauf in der Steuerungssoftware ueberschreibt angrenzende Speicherbereiche und fuehrt zu undefiniertem Verhalten.", + TriggerDE: "Zu langer Eingabestring, fehlende Laengenpruefung, manipulierte Kommunikation", + HarmDE: "Absturz der Steuerung, Ausfuehrung von Schadcode, Verlust der Sicherheitslogik", + AffectedDE: "Bedienpersonal, IT-Sicherheitsverantwortliche", + ZoneDE: "Steuerungshardware, Sicherheits-SPS, Kommunikationsschnittstellen", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP813", NameDE: "Unbehandelte Exception stoppt Steuerung", NameEN: "Unhandled exception stops controller", + RequiredComponentTags: []string{"has_software", "programmable"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M103"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 80, + ScenarioDE: "Nicht abgefangene Programmausnahme fuehrt zum Absturz der Steuerung ohne geordnete Abschaltung.", + TriggerDE: "Unerwarteter Eingabewert, Null-Pointer-Zugriff, Stack-Overflow in Rekursion", + HarmDE: "Sofortiger Steuerungsstillstand, Aktor bleibt in letzter Position, kein sicherer Zustand", + AffectedDE: "Bedienpersonal", + ZoneDE: "Gesamte Maschine (alle Funktionen fallen gleichzeitig aus)", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP814", NameDE: "Sicherheitsfunktion durch Software-Update deaktiviert", NameEN: "Safety function disabled by software update", + RequiredComponentTags: []string{"has_software", "safety_device"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"safety_function_failure", "update_failure"}, + SuggestedMeasureIDs: []string{"M104", "M138", "M146"}, + SuggestedEvidenceIDs: []string{"E01", "E07", "E08", "E14"}, + Priority: 95, + RequiresExpertCalculation: true, + ExpertHintDE: "Validierung aller Sicherheitsfunktionen nach jedem Software-Update gemaess IEC 62443 und EN ISO 13849 durchfuehren.", + ScenarioDE: "Software-Update deaktiviert versehentlich eine Sicherheitsfunktion oder aendert Sicherheitsparameter.", + TriggerDE: "Regression im Update, Sicherheitsmodul nicht im Testplan enthalten, Parameterueberschreibung", + HarmDE: "Sicherheitsfunktion fehlt unbemerkt, voller Zugang zum Gefahrenbereich bei laufender Maschine", + AffectedDE: "Bedienpersonal, alle Personen im Gefahrenbereich", + ZoneDE: "Alle Schutzbereiche, die von der betroffenen Sicherheitsfunktion abgedeckt werden", + DefaultSeverity: 5, DefaultExposure: 1, + }, + + // ================================================================ + // Cyber-Security (HP815-HP829) + // ================================================================ + { + ID: "HP815", NameDE: "Ransomware stoppt Produktionsanlage", NameEN: "Ransomware stops production plant", + RequiredComponentTags: []string{"networked", "has_software"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M111", "M116", "M140"}, + SuggestedEvidenceIDs: []string{"E01", "E16", "E19"}, + Priority: 90, + ScenarioDE: "Ransomware verschluesselt Steuerungsdaten und HMI-Systeme; Produktion steht still, Notbetrieb erforderlich.", + TriggerDE: "Phishing-Email an Leitstand-PC, USB-Stick mit Malware, fehlende Netzwerksegmentierung", + HarmDE: "Produktionsausfall, bei fehlender Notsteuerung unkontrollierter Prozesszustand, wirtschaftlicher Schaden", + AffectedDE: "Bedienpersonal (Blindflug ohne HMI), IT-Verantwortliche, Produktionsleitung", + ZoneDE: "Gesamte Produktionsanlage, HMI-Stationen, Leitstand", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP816", NameDE: "Unbefugter Fernzugriff auf Steuerung", NameEN: "Unauthorized remote access to controller", + RequiredComponentTags: []string{"networked", "has_software"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M111", "M112", "M113"}, + SuggestedEvidenceIDs: []string{"E01", "E16", "E17"}, + Priority: 95, + ScenarioDE: "Angreifer erlangt Fernzugriff auf die SPS und kann Maschinenparameter und Sicherheitsgrenzen veraendern.", + TriggerDE: "VPN-Schwachstelle, offener Fernwartungszugang, gestohlene Zugangsdaten", + HarmDE: "Manipulation von Sicherheitsgrenzen, unkontrollierte Maschinenbewegung, Sabotage", + AffectedDE: "Bedienpersonal, gesamte Produktionsumgebung", + ZoneDE: "Fernzugangspunkte, VPN-Gateways, Remote-Desktop-Verbindungen zur Steuerung", + DefaultSeverity: 5, DefaultExposure: 2, + }, + { + ID: "HP817", NameDE: "Man-in-the-Middle auf PROFINET", NameEN: "Man-in-the-middle on PROFINET", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access", "communication_failure"}, + SuggestedMeasureIDs: []string{"M111", "M113", "M114"}, + SuggestedEvidenceIDs: []string{"E01", "E16", "E17"}, + Priority: 85, + ScenarioDE: "Angreifer schaltet sich in die PROFINET-Kommunikation zwischen SPS und Antrieb ein und manipuliert Sollwerte.", + TriggerDE: "Physischer Zugang zum Netzwerk, ARP-Spoofing, unverschluesselte Feldbus-Kommunikation", + HarmDE: "Falsche Sollwerte an Antriebe, manipulierte Istwerte an SPS, verdeckte Sabotage", + AffectedDE: "Bedienpersonal (bemerkt Manipulation nicht), IT-Sicherheitsverantwortliche", + ZoneDE: "PROFINET-Netzwerk, Switches, Patchpanels, Netzwerkdosen in der Produktion", + DefaultSeverity: 5, DefaultExposure: 1, + }, + { + ID: "HP818", NameDE: "USB-Stick mit Malware an HMI", NameEN: "USB stick with malware on HMI", + RequiredComponentTags: []string{"has_software", "user_interface"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M111", "M116"}, + SuggestedEvidenceIDs: []string{"E01", "E16"}, + Priority: 80, + ScenarioDE: "Kompromittierter USB-Stick wird an das HMI oder den Leitstand-PC angeschlossen und infiziert das OT-Netzwerk.", + TriggerDE: "Bediener nutzt privaten USB-Stick, Servicetechniker bringt infizierten Stick mit", + HarmDE: "Malware-Infektion des Steuerungsnetzwerks, Datenexfiltration, Produktionsstoerung", + AffectedDE: "Bedienpersonal, IT/OT-Verantwortliche", + ZoneDE: "HMI-Terminals, Leitstand-PC, alle USB-Schnittstellen in der Produktion", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP819", NameDE: "Denial-of-Service auf OPC-UA Server", NameEN: "Denial-of-service on OPC-UA server", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M111", "M114", "M115"}, + SuggestedEvidenceIDs: []string{"E01", "E16", "E17"}, + Priority: 80, + ScenarioDE: "Gezielte Ueberlastung des OPC-UA Servers fuehrt zum Verlust der Prozessvisualisierung und -steuerung.", + TriggerDE: "Flut von Anfragen an den OPC-UA Endpoint, ungesicherte Discovery-Schnittstelle", + HarmDE: "Verlust der Prozessueberwachung, Bediener kann nicht eingreifen, Blindflug", + AffectedDE: "Bedienpersonal am Leitstand, SCADA-Betreiber", + ZoneDE: "OPC-UA Server, SCADA-System, Leitstand", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP820", NameDE: "Default-Passwort nicht geaendert", NameEN: "Default password not changed", + RequiredComponentTags: []string{"networked"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M111", "M112"}, + SuggestedEvidenceIDs: []string{"E01", "E16"}, + Priority: 85, + ScenarioDE: "Steuerungskomponente wird mit Werks-Standardpasswort betrieben; Angreifer erlangt mit oeffentlich bekanntem Passwort Zugriff.", + TriggerDE: "Inbetriebnahme ohne Passwortwechsel, Handbuch online verfuegbar, Shodan-Suche", + HarmDE: "Vollzugriff auf Steuerung, Manipulation von Parametern und Sicherheitsfunktionen", + AffectedDE: "Bedienpersonal, gesamte Anlage", + ZoneDE: "Login-Seite des Controllers, Web-Interface, Telnet/SSH-Zugang", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP821", NameDE: "Unverschluesselte Kommunikation SPS-HMI", NameEN: "Unencrypted communication PLC-HMI", + RequiredComponentTags: []string{"networked", "has_software"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M111", "M113"}, + SuggestedEvidenceIDs: []string{"E01", "E16", "E17"}, + Priority: 75, + ScenarioDE: "Kommunikation zwischen SPS und HMI erfolgt im Klartext; Angreifer kann Daten mitlesen und manipulieren.", + TriggerDE: "Legacy-Protokoll ohne Verschluesselung, fehlende TLS-Konfiguration, Modbus/TCP ohne Security", + HarmDE: "Abfangen von Prozessdaten, Einschleusung falscher Sollwerte, Industriespionage", + AffectedDE: "Bedienpersonal, Betriebsgeheimnisse", + ZoneDE: "Netzwerkstrecke SPS-HMI, Switches, Patchfelder", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP822", NameDE: "Firmware-Manipulation ueber Netzwerk", NameEN: "Firmware manipulation via network", + RequiredComponentTags: []string{"has_software", "networked"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"firmware_corruption"}, + SuggestedMeasureIDs: []string{"M116", "M138", "M146"}, + SuggestedEvidenceIDs: []string{"E01", "E16", "E18"}, + Priority: 90, + ScenarioDE: "Angreifer laedt manipulierte Firmware ueber das Netzwerk auf Steuerungskomponente und deaktiviert Sicherheitsgrenzen.", + TriggerDE: "Fehlende Firmware-Signierung, offener Update-Port, kein Authentifizierungsmechanismus", + HarmDE: "Verdeckte Deaktivierung von Sicherheitsfunktionen, langfristige Kompromittierung", + AffectedDE: "Bedienpersonal, gesamte Anlage", + ZoneDE: "Steuerungshardware, Antriebsregler, Sicherheits-SPS, IoT-Gateways", + DefaultSeverity: 5, DefaultExposure: 1, + }, + { + ID: "HP823", NameDE: "Insider-Bedrohung durch verargerten Mitarbeiter", NameEN: "Insider threat by disgruntled employee", + RequiredComponentTags: []string{"has_software", "programmable"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M111", "M112", "M142"}, + SuggestedEvidenceIDs: []string{"E01", "E16"}, + Priority: 80, + ScenarioDE: "Mitarbeiter mit privilegiertem Zugang manipuliert absichtlich Steuerungsparameter oder Sicherheitsgrenzen.", + TriggerDE: "Kuendigung, Konflikt, fehlende Zugriffsrechte-Entzug, kein Four-Eyes-Prinzip", + HarmDE: "Gezielte Sabotage, Deaktivierung von Schutzfunktionen, Gefaehrdung von Kollegen", + AffectedDE: "Bedienpersonal, Kollegen des Insiders", + ZoneDE: "Alle Steuerungszugaenge, HMI, Engineering-Station", + DefaultSeverity: 5, DefaultExposure: 1, + }, + { + ID: "HP824", NameDE: "Supply-Chain-Angriff auf Steuerungskomponente", NameEN: "Supply chain attack on control component", + RequiredComponentTags: []string{"it_component", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"unauthorized_access", "firmware_corruption"}, + SuggestedMeasureIDs: []string{"M116", "M118"}, + SuggestedEvidenceIDs: []string{"E01", "E18", "E19"}, + Priority: 75, + ScenarioDE: "Kompromittierte Hardware oder Software wird ueber die Lieferkette in die Anlage eingebracht.", + TriggerDE: "Manipuliertes Ersatzteil, kompromittierter Open-Source-Baustein, gefaelschte Firmware vom Zulieferer", + HarmDE: "Verdeckte Hintertuer, langfristige Kompromittierung, schwer detektierbar", + AffectedDE: "Gesamte Anlage, alle Nutzer der kompromittierten Komponente", + ZoneDE: "Alle IT-Komponenten in der Anlage (SPS, IPC, Switches, Sensoren)", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP825", NameDE: "Social Engineering verschafft Zugang zur Steuerung", NameEN: "Social engineering gains access to control system", + RequiredComponentTags: []string{"networked"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M111", "M112"}, + SuggestedEvidenceIDs: []string{"E01", "E16", "E24"}, + Priority: 75, + ScenarioDE: "Angreifer taeuscht Identitaet eines Servicetechnikers vor und erhaelt physischen oder logischen Zugang zur Steuerung.", + TriggerDE: "Fehlende Identitaetspruefung, Servicetechniker-Ausweis nicht verifiziert, Phishing-Anruf", + HarmDE: "Einschleusung von Malware, Manipulation der Steuerung, Datendiebstahl", + AffectedDE: "Bedienpersonal, IT-Sicherheitsverantwortliche", + ZoneDE: "Produktionshalle, Leitstand, Serverraum, VPN-Zugaenge", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP826", NameDE: "Fehlende Netzwerksegmentierung OT/IT", NameEN: "Missing network segmentation OT/IT", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M111", "M113", "M140"}, + SuggestedEvidenceIDs: []string{"E01", "E16", "E17"}, + Priority: 85, + ScenarioDE: "OT-Netzwerk (Maschinensteuerung) und IT-Netzwerk (Buero) sind nicht getrennt; Angriff aus dem Bueonetz erreicht SPS.", + TriggerDE: "Flache Netzwerktopologie, fehlende Firewall zwischen IT und OT, gemeinsames VLAN", + HarmDE: "Laterale Bewegung von Malware in die Produktion, Ransomware erreicht SPS", + AffectedDE: "Bedienpersonal, gesamte Produktion", + ZoneDE: "Netzwerk-Uebergangspunkte IT/OT, gemeinsame Switches, SCADA-DMZ", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP827", NameDE: "Veraltete Software mit bekannten Schwachstellen", NameEN: "Outdated software with known vulnerabilities", + RequiredComponentTags: []string{"has_software"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M116", "M138"}, + SuggestedEvidenceIDs: []string{"E01", "E18", "E19"}, + Priority: 80, + ScenarioDE: "Steuerungssoftware oder Betriebssystem wird nicht gepatcht; bekannte CVEs sind ausnutzbar.", + TriggerDE: "Kein Patch-Management fuer OT, Hersteller liefert keine Updates, Angst vor Produktionsstoerung", + HarmDE: "Ausnutzung bekannter Schwachstellen, Uebernahme der Steuerung durch Exploit", + AffectedDE: "Bedienpersonal, IT-Sicherheitsverantwortliche, gesamte Anlage", + ZoneDE: "Alle ungepatchten Systeme (HMI-PCs, SPS-Firmware, SCADA-Server)", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP828", NameDE: "Backup-Manipulation verfaelscht Wiederherstellung", NameEN: "Backup manipulation falsifies recovery", + RequiredComponentTags: []string{"has_software", "it_component"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"firmware_corruption"}, + SuggestedMeasureIDs: []string{"M116", "M142"}, + SuggestedEvidenceIDs: []string{"E01", "E16"}, + Priority: 70, + ScenarioDE: "Angreifer manipuliert Backup-Daten; bei Wiederherstellung wird kompromittierte Konfiguration eingespielt.", + TriggerDE: "Zugriff auf Backup-Server, fehlende Integritaetspruefung, Backup auf unsicherem Medium", + HarmDE: "Manipulierte Steuerungsparameter nach Restore, verdeckte Hintertuer in Backup", + AffectedDE: "Wartungspersonal bei Restore, anschliessend Bedienpersonal", + ZoneDE: "Backup-Server, Engineering-Station, Restore-Prozedur", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP829", NameDE: "Ungesicherte WLAN-Verbindung zur Maschinensteuerung", NameEN: "Unsecured WiFi connection to machine control", + RequiredComponentTags: []string{"wireless", "networked"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access"}, + SuggestedMeasureIDs: []string{"M111", "M113", "M140"}, + SuggestedEvidenceIDs: []string{"E01", "E16"}, + Priority: 85, + ScenarioDE: "WLAN-Zugangspunkt zur Maschinensteuerung ist unverschluesselt oder nutzt schwache Verschluesselung (WEP/WPA).", + TriggerDE: "Standard-WLAN-Konfiguration nicht geaendert, WPA2-Passwort weitergegeben, Rogue Access Point", + HarmDE: "Uebernahme der Steuerung aus der Ferne, Man-in-the-Middle auf WLAN-Strecke", + AffectedDE: "Bedienpersonal, gesamte Anlage im WLAN-Bereich", + ZoneDE: "WLAN-Abdeckungsbereich, HMI-Tablets, IoT-Sensoren", + DefaultSeverity: 4, DefaultExposure: 2, + }, + + // ================================================================ + // KI/ML spezifisch (HP830-HP844) + // ================================================================ + { + ID: "HP830", NameDE: "KI-Modell erkennt Werkstueck nicht — Kollision", NameEN: "AI model fails to detect workpiece — collision", + RequiredComponentTags: []string{"has_ai", "sensor_part", "moving_part"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"false_classification", "mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M101", "M102", "M003"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 90, + ScenarioDE: "KI-basierte Objekterkennung erkennt Werkstueck oder Hindernis nicht; Roboter oder Maschine kollidiert.", + TriggerDE: "Unbekanntes Objekt, ungelernte Beleuchtung, Sensorverschmutzung, Gegenstand ausserhalb Trainingsdaten", + HarmDE: "Kollision mit Werkstueck oder Person, mechanische Beschaedigung, Verletzung", + AffectedDE: "Bedienpersonal im Arbeitsraum des KI-Systems", + ZoneDE: "Arbeitsraum des Roboters, Kamerasichtfeld, Greiferbereich", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP831", NameDE: "Trainingsdaten-Bias fuehrt zu falscher Klassifikation", NameEN: "Training data bias leads to wrong classification", + RequiredComponentTags: []string{"has_ai"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"unintended_bias", "false_classification"}, + SuggestedMeasureIDs: []string{"M101"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 80, + ScenarioDE: "Einseitige Trainingsdaten fuehren dazu, dass das KI-Modell bestimmte Varianten systematisch falsch klassifiziert.", + TriggerDE: "Underrepresentation bestimmter Werkstuecktypen, Chargen oder Umgebungsbedingungen im Trainingsdatensatz", + HarmDE: "Fehlerhafte Qualitaetsentscheidung, fehlerhafte Teile gelangen in Umlauf", + AffectedDE: "Endkunden (fehlerhafte Produkte), Qualitaetsverantwortliche", + ZoneDE: "Alle KI-Entscheidungspunkte in der Qualitaetskontrolle", + DefaultSeverity: 3, DefaultExposure: 4, + }, + { + ID: "HP832", NameDE: "Adversarial Input taeuscht Bilderkennungssystem", NameEN: "Adversarial input deceives image recognition", + RequiredComponentTags: []string{"has_ai", "sensor_part"}, + RequiredEnergyTags: []string{"ai_model", "cyber"}, + GeneratedHazardCats: []string{"data_poisoning", "sensor_spoofing"}, + SuggestedMeasureIDs: []string{"M101", "M116"}, + SuggestedEvidenceIDs: []string{"E01", "E15", "E16"}, + Priority: 85, + ScenarioDE: "Gezielt veraenderte Eingabedaten (Adversarial Patches) taeuschen das Bilderkennungssystem und erzwingen Fehlklassifikation.", + TriggerDE: "Aufkleben eines Adversarial Patches auf Werkstueck, Manipulation der Kamera-Eingangssignale", + HarmDE: "Falsche Klassifikation, defektes Teil als gut erkannt, Sicherheitspruefung umgangen", + AffectedDE: "Endnutzer der Produkte, Bedienpersonal", + ZoneDE: "Kamerasichtfeld, Bildverarbeitungssystem, Qualitaetskontrollstation", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP833", NameDE: "Model Drift verschlechtert Qualitaet schleichend", NameEN: "Model drift gradually degrades quality", + RequiredComponentTags: []string{"has_ai"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"model_drift"}, + SuggestedMeasureIDs: []string{"M103"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 75, + ScenarioDE: "KI-Modell verliert durch veraenderte Prozessbedingungen ueber Wochen schleichend an Genauigkeit.", + TriggerDE: "Materialwechsel, Werkzeugverschleiss, saisonale Schwankungen, kein Monitoring der Modellleistung", + HarmDE: "Zunehmende Fehlentscheidungen, nicht erkannte Defekte, verzoegerte Erkennung", + AffectedDE: "Qualitaetsverantwortliche, Endkunden", + ZoneDE: "Alle Entscheidungspunkte des driftenden KI-Modells", + DefaultSeverity: 3, DefaultExposure: 4, + }, + { + ID: "HP834", NameDE: "KI ueberschreibt Sicherheitsparameter", NameEN: "AI overwrites safety parameters", + RequiredComponentTags: []string{"has_ai", "programmable"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"software_fault", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M101", "M104"}, + SuggestedEvidenceIDs: []string{"E01", "E07", "E15"}, + Priority: 95, + RequiresExpertCalculation: true, + ExpertHintDE: "KI-System darf keine schreibenden Zugriffe auf Sicherheitsparameter haben; Validierung nach EN ISO 13849 und IEC 61508.", + ScenarioDE: "KI-Optimierungsalgorithmus aendert Sicherheitsgrenzen (Geschwindigkeit, Kraft, Druck) ohne menschliche Freigabe.", + TriggerDE: "Keine Write-Protection fuer Sicherheitsparameter, fehlende Parameterverriegelung, RL-Agent optimiert Durchsatz", + HarmDE: "Ueberschreiten der Sicherheitsgrenzen, gefaehrliche Geschwindigkeit/Kraft, Verletzung oder Tod", + AffectedDE: "Bedienpersonal, alle Personen im Maschinenbereich", + ZoneDE: "Alle sicherheitsrelevanten Achsen und Funktionen", + DefaultSeverity: 5, DefaultExposure: 1, + }, + { + ID: "HP835", NameDE: "Fehlende Erklaerbarkeit — Bediener vertraut falsch", NameEN: "Lack of explainability — operator misplaces trust", + RequiredComponentTags: []string{"has_ai", "user_interface"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"false_classification"}, + SuggestedMeasureIDs: []string{"M101"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 70, + ScenarioDE: "KI-System gibt Empfehlung ohne Begruendung; Bediener folgt blindlings einer fehlerhaften Empfehlung.", + TriggerDE: "Fehlende Explainability, keine Konfidenzanzeige, Automation Bias des Bedieners", + HarmDE: "Fehlentscheidung auf Basis falscher KI-Empfehlung, Qualitaetsmangel, Sicherheitsrisiko", + AffectedDE: "Bedienpersonal, Qualitaetsverantwortliche", + ZoneDE: "HMI des KI-Systems, Entscheidungs-Dashboard", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP836", NameDE: "KI-Entscheidung im Grenzbereich (Edge Case)", NameEN: "AI decision in edge case", + RequiredComponentTags: []string{"has_ai"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"false_classification"}, + SuggestedMeasureIDs: []string{"M101", "M102"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 80, + ScenarioDE: "KI trifft bei Eingabedaten nahe der Entscheidungsgrenze unzuverlaessige Entscheidungen mit schwankender Konfidenz.", + TriggerDE: "Werkstueck exakt an der Gut/Schlecht-Grenze, unbekannte Kombination von Merkmalen", + HarmDE: "Instabile Entscheidungen, abwechselnd gut/schlecht bei identischem Teil, falsche Sortierung", + AffectedDE: "Qualitaetsverantwortliche, Endkunden", + ZoneDE: "Entscheidungspunkte des KI-Klassifikators", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP837", NameDE: "Reinforcement Learning fuehrt zu unerwartetem Verhalten", NameEN: "Reinforcement learning causes unexpected behavior", + RequiredComponentTags: []string{"has_ai", "programmable"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M102", "M103"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 85, + ScenarioDE: "RL-Agent entdeckt unbeabsichtigte Strategie zur Reward-Maximierung, die gefaehrliches Verhalten einschliesst.", + TriggerDE: "Unvollstaendige Reward-Funktion, fehlende Safety Constraints, Agent findet Exploit in Simulation", + HarmDE: "Unerwartete Maschinenbewegung, Reward Hacking fuehrt zu gefaehrlicher Aktion", + AffectedDE: "Bedienpersonal, Personen im Wirkbereich des RL-gesteuerten Systems", + ZoneDE: "Gesamter Aktionsraum des RL-Agenten", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP838", NameDE: "KI verarbeitet personenbezogene Daten (DSGVO-Verstoss)", NameEN: "AI processes personal data (GDPR violation)", + RequiredComponentTags: []string{"has_ai"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"unintended_bias"}, + SuggestedMeasureIDs: []string{"M101"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 70, + ScenarioDE: "KI-System verarbeitet Kamerabilder mit erkennbaren Personen ohne Einwilligung oder Rechtsgrundlage.", + TriggerDE: "Kamera erfasst Gesichter, Kennzeichen oder biometrische Daten; fehlende Anonymisierung", + HarmDE: "DSGVO-Bussgeld, Persoenlichkeitsrechtsverletzung, Vertrauensverlust", + AffectedDE: "Betroffene Personen (Mitarbeiter, Besucher), Datenschutzbeauftragter", + ZoneDE: "Kameraerfassungsbereich, Datenverarbeitungssystem", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP839", NameDE: "KI-System nicht validiert fuer Sicherheitsfunktion", NameEN: "AI system not validated for safety function", + RequiredComponentTags: []string{"has_ai", "safety_device"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M101", "M104"}, + SuggestedEvidenceIDs: []string{"E01", "E07", "E15"}, + Priority: 95, + RequiresExpertCalculation: true, + ExpertHintDE: "KI in Sicherheitsfunktionen erfordert Validierung nach IEC 61508 SIL-Anforderungen und EN ISO 13849 PL-Nachweis.", + ScenarioDE: "KI-basierte Sicherheitsfunktion (z. B. Personenerkennung fuer Stopp) wurde nicht nach Sicherheitsnorm validiert.", + TriggerDE: "KI als Sicherheitskomponente ohne SIL/PL-Berechnung eingesetzt, fehlende Verifikation", + HarmDE: "Sicherheitsfunktion versagt im Anforderungsfall, Person wird nicht erkannt, kein Stopp", + AffectedDE: "Bedienpersonal, alle Personen im Schutzbereich", + ZoneDE: "Ueberwachungsbereich der KI-Sicherheitsfunktion", + DefaultSeverity: 5, DefaultExposure: 2, + }, + { + ID: "HP840", NameDE: "Concept Drift bei veraendertem Prozess", NameEN: "Concept drift from changed process", + RequiredComponentTags: []string{"has_ai"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"model_drift"}, + SuggestedMeasureIDs: []string{"M103"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 75, + ScenarioDE: "Grundlegende Aenderung des Produktionsprozesses macht das KI-Modell ungueltig, da es auf alten Zusammenhaengen basiert.", + TriggerDE: "Neues Material, neue Maschine, geaenderter Prozessablauf ohne Re-Training des Modells", + HarmDE: "Systematische Fehlentscheidungen, alle Teile falsch bewertet, Qualitaetseinbruch", + AffectedDE: "Qualitaetsverantwortliche, Endkunden", + ZoneDE: "Alle vom KI-Modell ueberwachten Prozessschritte", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP841", NameDE: "KI-Halluzination meldet falschen Zustand", NameEN: "AI hallucination reports false state", + RequiredComponentTags: []string{"has_ai", "user_interface"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"false_classification"}, + SuggestedMeasureIDs: []string{"M101", "M102"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 80, + ScenarioDE: "KI-System meldet einen Zustand mit hoher Konfidenz, der in Wirklichkeit nicht vorliegt (Halluzination).", + TriggerDE: "Eingangsdaten ausserhalb des Trainingsbereichs, Ueberanpassung (Overfitting), Sensorrauschen", + HarmDE: "Fehlalarm fuehrt zu unnoetigem Stopp oder — schlimmer — falsche Entwarnung bei realem Problem", + AffectedDE: "Bedienpersonal, das auf Basis der KI-Meldung handelt", + ZoneDE: "HMI-Anzeige, Alarm-Management-System", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP842", NameDE: "Abhaengigkeit von Cloud-Service fuer Sicherheitsfunktion", NameEN: "Dependency on cloud service for safety function", + RequiredComponentTags: []string{"has_ai", "networked"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"communication_failure", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M101", "M104", "M115"}, + SuggestedEvidenceIDs: []string{"E01", "E15", "E17"}, + Priority: 90, + ScenarioDE: "Sicherheitsrelevante KI-Funktion benoetigt Cloud-Verbindung; bei Netzwerkausfall ist die Sicherheit nicht gewaehrleistet.", + TriggerDE: "Internet-Ausfall, Cloud-Provider-Stoerung, DNS-Fehler, Latenz ueberschreitet Zeitlimit", + HarmDE: "Sicherheitsfunktion faellt aus, kein Fallback, Maschine laeuft ohne KI-Ueberwachung weiter", + AffectedDE: "Bedienpersonal, Personen im Ueberwachungsbereich", + ZoneDE: "Gesamter Schutzbereich der KI-Sicherheitsfunktion, Netzwerkverbindung", + DefaultSeverity: 5, DefaultExposure: 2, + }, + { + ID: "HP843", NameDE: "Fehlende Redundanz bei KI-basierter Qualitaetskontrolle", NameEN: "Missing redundancy in AI-based quality control", + RequiredComponentTags: []string{"has_ai"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"false_classification"}, + SuggestedMeasureIDs: []string{"M101", "M102"}, + SuggestedEvidenceIDs: []string{"E01", "E15"}, + Priority: 75, + ScenarioDE: "KI-System ist alleiniger Qualitaetsgate ohne Backup-Pruefung; bei KI-Ausfall passieren alle Teile unkontrolliert.", + TriggerDE: "KI-System faellt aus, kein manueller Rueckfallprozess definiert, Bypass im Stoerfall", + HarmDE: "Fehlerhafte Produkte gelangen zum Kunden, Rueckrufaktion, Sicherheitsrisiko bei Sicherheitsteilen", + AffectedDE: "Endkunden, Qualitaetsverantwortliche", + ZoneDE: "Qualitaetskontrollstation, Auslaufbereich der Produktion", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP844", NameDE: "Bias in Predictive Maintenance — Wartung zu spaet", NameEN: "Bias in predictive maintenance — maintenance too late", + RequiredComponentTags: []string{"has_ai"}, + RequiredEnergyTags: []string{"ai_model"}, + GeneratedHazardCats: []string{"model_drift"}, + SuggestedMeasureIDs: []string{"M103"}, + SuggestedEvidenceIDs: []string{"E01", "E15", "E21"}, + Priority: 80, + ScenarioDE: "KI-basierte Wartungsvorhersage unterschaetzt Verschleiss und empfiehlt Wartung zu spaet.", + TriggerDE: "Einseitige Trainingsdaten (nur Neuzustand), kein Monitoring der Vorhersagequalitaet, Betriebsbedingungen geaendert", + HarmDE: "Unerwarteter Maschinenausfall, Bauteilversagen waehrend Betrieb, Folgeschaeden", + AffectedDE: "Bedienpersonal bei ploetzlichem Ausfall, Wartungspersonal", + ZoneDE: "Alle ueberwachten Verschleissteile und Lager", + DefaultSeverity: 4, DefaultExposure: 2, + }, + + // ================================================================ + // Netzwerk / Kommunikation (HP845-HP854) + // ================================================================ + { + ID: "HP845", NameDE: "Feldbusausfall (PROFINET/EtherCAT/Modbus)", NameEN: "Fieldbus failure (PROFINET/EtherCAT/Modbus)", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M114", "M115"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 85, + ScenarioDE: "Kompletter Feldbusausfall trennt SPS von allen Antrieben und Sensoren; Maschine verliert Kontrolle.", + TriggerDE: "Kabelbruch, Switch-Ausfall, EMV-Stoerung, Stecker oxidiert, Master-Ausfall", + HarmDE: "Unkontrollierter Maschinenstillstand, Antriebe im letzten Zustand, Last faellt herab", + AffectedDE: "Bedienpersonal, Personen im Maschinenbereich", + ZoneDE: "Gesamte Maschine (alle Feldbus-Teilnehmer betroffen)", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP846", NameDE: "Telegrammverlust in Echtzeit-Kommunikation", NameEN: "Telegram loss in real-time communication", + RequiredComponentTags: []string{"networked"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M114", "M115"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 80, + ScenarioDE: "Einzelne Telegramme im Echtzeit-Bussystem gehen verloren; Antrieb erhaelt keinen neuen Sollwert und behlt den alten.", + TriggerDE: "EMV-Stoerung, Kabelknicke, Switch-Ueberlast, defekter Busteilnehmer stoert Zyklus", + HarmDE: "Antrieb faehrt mit veraltetem Sollwert weiter, Position stimmt nicht mehr, Kollision", + AffectedDE: "Bedienpersonal bei Mehrachssystemen", + ZoneDE: "Bewegungsbereich der betroffenen Achse, Synchron-Verfahrbereiche", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP847", NameDE: "Jitter in Synchronisation von Achssystem", NameEN: "Jitter in multi-axis synchronization", + RequiredComponentTags: []string{"networked", "moving_part"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure", "mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M114"}, + SuggestedEvidenceIDs: []string{"E01", "E14", "E17"}, + Priority: 75, + ScenarioDE: "Zeitschwankungen (Jitter) in der Echtzeit-Kommunikation fuehren zu Synchronisationsverlust in Mehrachssystemen.", + TriggerDE: "Ungeeigneter Switch (nicht echtzeitfaehig), Cross-Traffic, falsches VLAN-Setup", + HarmDE: "Achsen laufen auseinander, mechanische Verspannung, Kollision zwischen Achsen", + AffectedDE: "Bedienpersonal an synchronisierten Mehrachssystemen", + ZoneDE: "Gesamter Verfahrbereich der synchronisierten Achsen", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP848", NameDE: "Gateway-Ausfall zwischen Feld- und Leitebene", NameEN: "Gateway failure between field and control level", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M115"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 70, + ScenarioDE: "Gateway zwischen Feldbus und Leitebene faellt aus; SCADA verliert Sicht auf Prozess, Alarme kommen nicht durch.", + TriggerDE: "Hardware-Defekt, Software-Absturz, Speicherueberlauf im Gateway, Firmware-Fehler", + HarmDE: "Verlust der Prozessueberwachung, Alarme werden nicht weitergeleitet, Blindflug am Leitstand", + AffectedDE: "Leitstand-Personal, SCADA-Betreiber", + ZoneDE: "Gateway, Uebergabepunkt Feldbus/Ethernet, SCADA-Server", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP849", NameDE: "Firmware-Inkompatibilitaet nach Update", NameEN: "Firmware incompatibility after update", + RequiredComponentTags: []string{"has_software", "networked"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"update_failure", "communication_failure"}, + SuggestedMeasureIDs: []string{"M138", "M146"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 75, + ScenarioDE: "Firmware-Update eines Busteilnehmers ist inkompatibel mit der SPS-Version; Kommunikation bricht zusammen.", + TriggerDE: "Teilnehmer einzeln aktualisiert ohne Kompatibilitaetspruefung, Breaking Change in neuer Version", + HarmDE: "Busausfall, Antrieb nicht erreichbar, unkontrollierter Zustand", + AffectedDE: "Wartungspersonal (Update-Vorgang), anschliessend Bedienpersonal", + ZoneDE: "Aktualisierter Busteilnehmer, gesamter Busstrang bei Master-Update", + DefaultSeverity: 3, DefaultExposure: 1, + }, + { + ID: "HP850", NameDE: "IP-Konflikt im Maschinennetzwerk", NameEN: "IP conflict in machine network", + RequiredComponentTags: []string{"networked"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M114"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 65, + ScenarioDE: "Zwei Geraete im Maschinennetzwerk haben dieselbe IP-Adresse; Kommunikation ist unzuverlaessig.", + TriggerDE: "Manuelles IP-Management ohne Dokumentation, Ersatzgeraet mit werksseitiger IP, DHCP-Fehler", + HarmDE: "Sporadische Kommunikationsausfaelle, Steuerungsbefehle an falsches Geraet, undeterministisches Verhalten", + AffectedDE: "Bedienpersonal (schwer erkennbare Stoerung)", + ZoneDE: "Maschinennetzwerk, betroffene IP-Teilnehmer", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP851", NameDE: "Zeitsynchronisation verloren — Sequenzfehler", NameEN: "Time synchronization lost — sequence error", + RequiredComponentTags: []string{"networked", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure", "software_fault"}, + SuggestedMeasureIDs: []string{"M114"}, + SuggestedEvidenceIDs: []string{"E01", "E14", "E17"}, + Priority: 75, + ScenarioDE: "PTP/NTP-Synchronisation im Netzwerk geht verloren; zeitgesteuerte Aktionen werden asynchron ausgefuehrt.", + TriggerDE: "Grand-Master-Clock faellt aus, Kabelbruch zum Zeitserver, Switch ohne PTP-Support", + HarmDE: "Achsen bewegen sich nicht mehr synchron, Sequenzen in falscher Reihenfolge", + AffectedDE: "Bedienpersonal bei synchronisierten Anlagen", + ZoneDE: "Alle zeitgesteuerten Stationen und Achsen", + DefaultSeverity: 4, DefaultExposure: 1, + }, + { + ID: "HP852", NameDE: "Bandbreite-Ueberlastung verzoegert Sicherheitsfunktion", NameEN: "Bandwidth overload delays safety function", + RequiredComponentTags: []string{"networked", "safety_device"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M114", "M115"}, + SuggestedEvidenceIDs: []string{"E01", "E07", "E17"}, + Priority: 85, + ScenarioDE: "Netzwerk-Ueberlastung verzoegert sicherheitsrelevante Telegramme ueber die maximale Reaktionszeit hinaus.", + TriggerDE: "Datenintensiver Prozess (Vision-System) auf gleichem Netzwerk, Broadcast-Storm, fehlende QoS-Konfiguration", + HarmDE: "Sicherheitsfunktion reagiert zu spaet, Nachlaufweg vergroessert sich, Schutzfunktion unwirksam", + AffectedDE: "Bedienpersonal im Schutzbereich der verzoegerten Sicherheitsfunktion", + ZoneDE: "Netzwerkstrecke zum Safety-Controller, gesamter Schutzbereich", + DefaultSeverity: 5, DefaultExposure: 1, + }, + { + ID: "HP853", NameDE: "Fehlerhafte Routing-Konfiguration", NameEN: "Faulty routing configuration", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M114"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 60, + ScenarioDE: "Falsche Routing-Konfiguration leitet Steuerbefehle an falsches Teilnetz oder laesst sie ins Leere laufen.", + TriggerDE: "Fehlkonfiguration nach Netzwerkaenderung, falsches Default-Gateway, Route Loop", + HarmDE: "Steuerbefehle kommen nicht an, Antriebe reagieren nicht, Fehlzuordnung von Befehlen", + AffectedDE: "Bedienpersonal, Netzwerkadministrator", + ZoneDE: "Router, Layer-3-Switches, Netzwerksegmentierung", + DefaultSeverity: 3, DefaultExposure: 1, + }, + { + ID: "HP854", NameDE: "Switch-Ausfall in Ring-Topologie", NameEN: "Switch failure in ring topology", + RequiredComponentTags: []string{"networked", "it_component"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"communication_failure"}, + SuggestedMeasureIDs: []string{"M115"}, + SuggestedEvidenceIDs: []string{"E01", "E17"}, + Priority: 75, + ScenarioDE: "Managed Switch in Ring-Topologie faellt aus; Ring-Redundanz uebernimmt, aber Umschaltzeit stoert Echtzeit-Kommunikation.", + TriggerDE: "Switch-Hardware-Defekt, Spannungsausfall am Switch, Ring-Rekonfiguration dauert zu lange (>Zykluszeit)", + HarmDE: "Kurzzeitiger Kommunikationsausfall, Antriebe verlieren Sollwerte, Synchronisationsverlust", + AffectedDE: "Bedienpersonal bei zeitkritischen Prozessen", + ZoneDE: "Ring-Netzwerk, alle Teilnehmer hinter dem ausgefallenen Switch", + DefaultSeverity: 3, DefaultExposure: 2, + }, + + // ================================================================ + // Mensch-Maschine-Interaktion / HMI (HP855-HP864) + // ================================================================ + { + ID: "HP855", NameDE: "HMI friert ein — Bediener handelt blind", NameEN: "HMI freezes — operator acts blind", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M103", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 80, + ScenarioDE: "HMI-Bildschirm friert ein und zeigt veraltete Prozesswerte; Bediener trifft Entscheidungen auf Basis falscher Anzeige.", + TriggerDE: "Software-Absturz der HMI-Anwendung, Speicherueberlauf, Grafiktreiber-Fehler", + HarmDE: "Fehlbedienung aufgrund veralteter Anzeige, Eingriff in falschen Prozess, verpasster Alarm", + AffectedDE: "Bedienpersonal am eingefrorenen HMI", + ZoneDE: "Leitstand, HMI-Terminal, alle ueberwachten Prozessbereiche", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP856", NameDE: "Alarmueberschwemmung (Alarm Flooding)", NameEN: "Alarm flooding", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141", "M149"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 80, + ScenarioDE: "Hunderte Alarme erscheinen gleichzeitig; Bediener kann kritischen Alarm nicht identifizieren.", + TriggerDE: "Kaskadenartige Stoerung, schlechtes Alarm-Design, keine Alarm-Priorisierung, zu niedrige Schwellwerte", + HarmDE: "Kritischer Alarm wird uebersehen, verzoegerte Reaktion, falsche Priorisierung", + AffectedDE: "Bedienpersonal am Leitstand", + ZoneDE: "Leitstand, Alarm-Management-System", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP857", NameDE: "Falscher Betriebsartenwahlschalter", NameEN: "Wrong operating mode selector", + RequiredComponentTags: []string{"user_interface", "programmable"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"configuration_error"}, + SuggestedMeasureIDs: []string{"M145", "M121"}, + SuggestedEvidenceIDs: []string{"E01", "E08"}, + Priority: 85, + ScenarioDE: "Bediener waehlt falsche Betriebsart (z. B. Automatik statt Einrichten); Maschine startet mit voller Geschwindigkeit.", + TriggerDE: "Verwechslung der Betriebsart, Schluesselschalter nicht verriegelt, fehlende Anzeige der aktiven Betriebsart", + HarmDE: "Unerwartete Maschinenbewegung bei voller Geschwindigkeit, Quetschung, Kollision", + AffectedDE: "Einrichter, Bedienpersonal im Maschinenbereich", + ZoneDE: "Gesamte Maschine, insbesondere Bereiche die bei Einrichten zugaenglich sind", + DefaultSeverity: 5, DefaultExposure: 2, + }, + { + ID: "HP858", NameDE: "Display zeigt falschen Prozesswert", NameEN: "Display shows wrong process value", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"software_fault"}, + SuggestedMeasureIDs: []string{"M101", "M103"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 75, + ScenarioDE: "HMI zeigt falschen Messwert (z. B. falsche Zuordnung von Sensor zu Anzeige) und Bediener reagiert falsch.", + TriggerDE: "Programmierfehler in der Visualisierung, falscher Tag zugeordnet, Skalierungsfehler", + HarmDE: "Fehlbedienung auf Basis falscher Information, Prozess laeuft aus dem Toleranzbereich", + AffectedDE: "Bedienpersonal, das sich auf die Anzeige verlaesst", + ZoneDE: "HMI-Display, Prozessabbild auf dem Leitstand", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP859", NameDE: "Bediener umgeht Safety-Login am HMI", NameEN: "Operator bypasses safety login on HMI", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{"cyber"}, + GeneratedHazardCats: []string{"unauthorized_access", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M111", "M112"}, + SuggestedEvidenceIDs: []string{"E01", "E16"}, + Priority: 80, + ScenarioDE: "Bediener umgeht Login-Bildschirm am HMI und erlangt Zugang zu sicherheitsrelevanten Parametern.", + TriggerDE: "Gemeinsames Passwort, Post-It mit Passwort am Monitor, Auto-Login konfiguriert", + HarmDE: "Unberechtigte Aenderung von Sicherheitsparametern, Deaktivierung von Schutzfunktionen", + AffectedDE: "Bedienpersonal, alle Personen im Maschinenbereich", + ZoneDE: "HMI-Terminal, Parameterseiten der Steuerung", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP860", NameDE: "Touch-Fehlbedienung (nasse Finger/Handschuhe)", NameEN: "Touch misoperation (wet fingers/gloves)", + RequiredComponentTags: []string{"user_interface"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E20"}, + Priority: 65, + ScenarioDE: "Touchscreen reagiert auf nasse Finger, Handschuhe oder Wassertropfen und loest unbeabsichtigte Funktion aus.", + TriggerDE: "Regen, Schwitzhaende, Oelfilm auf Handschuh, Wasserspritzer auf Display", + HarmDE: "Unbeabsichtigtes Starten einer Funktion, Parameterwechsel, Betriebsart-Umschaltung", + AffectedDE: "Bedienpersonal mit Handschuhen oder in nassem Umfeld", + ZoneDE: "Touch-HMI, Panel-PC, mobile Bediengeraete", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP861", NameDE: "Sprachbarriere bei mehrsprachiger Belegschaft", NameEN: "Language barrier in multilingual workforce", + RequiredComponentTags: []string{"user_interface"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E24", "E25"}, + Priority: 60, + ScenarioDE: "Alarmmeldungen und Sicherheitshinweise am HMI sind nur in einer Sprache; Bediener versteht Warnung nicht.", + TriggerDE: "Einsprachiges HMI, fremdsprachige Zeitarbeitskraefte, fehlende Piktogramme", + HarmDE: "Warnung nicht verstanden, falsche Reaktion auf Alarm, Sicherheitsunterweisung nicht begriffen", + AffectedDE: "Nicht-muttersprachliche Bediener, Zeitarbeitskraefte, Leiharbeiter", + ZoneDE: "HMI-Terminal, Sicherheitsbeschilderung, Alarmanzeigen", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP862", NameDE: "Nachtschicht-Muedigkeit fuehrt zu Fehlreaktion", NameEN: "Night shift fatigue leads to wrong reaction", + RequiredComponentTags: []string{"user_interface"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E25"}, + Priority: 60, + ScenarioDE: "Muedigkeit in der Nachtschicht verzoegert Reaktionszeit und erhoeht Wahrscheinlichkeit fuer Fehlbedienung.", + TriggerDE: "Lange Schichtdauer, monotone Ueberwachungsaufgabe, fehlende Pausenregelung", + HarmDE: "Verzoegerte Reaktion auf Alarm, Einschlafen am Leitstand, Fehlbedienung", + AffectedDE: "Nachtschicht-Personal, alle von der Ueberwachung abhaengigen Personen", + ZoneDE: "Leitstand, Ueberwachungsstationen", + DefaultSeverity: 3, DefaultExposure: 4, + }, + { + ID: "HP863", NameDE: "Informationsueberlastung am Bedienterminal", NameEN: "Information overload at operator terminal", + RequiredComponentTags: []string{"user_interface", "has_software"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 55, + ScenarioDE: "Zu viele Informationen, Trends und Werte auf einem Bildschirm ueberfordern den Bediener kognitiv.", + TriggerDE: "Schlechtes UI-Design, zu viele gleichzeitig angezeigte Werte, fehlende Informationshierarchie", + HarmDE: "Kritische Information wird uebersehen, verzoegerte Erkennung von Anomalien", + AffectedDE: "Bedienpersonal, Leitstand-Operatoren", + ZoneDE: "HMI-Bildschirme, SCADA-Oberflaeche, Leitstand", + DefaultSeverity: 2, DefaultExposure: 4, + }, + { + ID: "HP864", NameDE: "Fehlende Rueckmeldung — Bediener drueckt erneut", NameEN: "Missing feedback — operator presses again", + RequiredComponentTags: []string{"user_interface"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"ergonomic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E14"}, + Priority: 65, + ScenarioDE: "HMI gibt keine Rueckmeldung auf Tastendruck; Bediener drueckt erneut und loest unbeabsichtigte Doppelaktion aus.", + TriggerDE: "Fehlende akustische/visuelle Quittierung, langsame HMI-Reaktion, Netzwerk-Latenz", + HarmDE: "Doppelter Befehl (z. B. doppelter Zyklus-Start), Maschine startet erneut waehrend Entnahme", + AffectedDE: "Bedienpersonal", + ZoneDE: "HMI-Taster/Touchscreen, Gesamte Maschine bei Doppelausloesung", + DefaultSeverity: 3, DefaultExposure: 3, + }, + } +} diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_maintenance_ext.go b/ai-compliance-sdk/internal/iace/hazard_patterns_maintenance_ext.go new file mode 100644 index 0000000..1d868a5 --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_maintenance_ext.go @@ -0,0 +1,476 @@ +package iace + +// GetMaintenanceExtPatterns returns 65 maintenance/lifecycle-specific hazard patterns +// (HP700-HP764). All patterns have RequiredLifecycles set. +func GetMaintenanceExtPatterns() []HazardPattern { + return []HazardPattern{ + // — Wartung allgemein (HP700-HP709) — + {ID: "HP700", NameDE: "LOTO-Fehler: Maschine nicht freigeschaltet", NameEN: "LOTO failure: not locked out", + RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08", "E20"}, Priority: 95, + ScenarioDE: "Arbeit ohne Freischaltung der Maschine", TriggerDE: "Fehlende LOTO-Prozedur", + HarmDE: "Erfassen durch anlaufende Teile, Tod", AffectedDE: "Instandhalter", ZoneDE: "Gesamte Maschine", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP701", NameDE: "Restenergie trotz Abschaltung", NameEN: "Residual energy after shutdown", + RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 90, + ScenarioDE: "Gespeicherte Energie entlaedt sich bei Wartung", TriggerDE: "Nicht abgelassener Druckspeicher", + HarmDE: "Unkontrollierte Bewegung, Quetschung", AffectedDE: "Instandhalter", ZoneDE: "Antriebe, Speicher", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP702", NameDE: "Falsches Werkzeug bei Wartung", NameEN: "Wrong tool during maintenance", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Ungeeignetes oder defektes Werkzeug", TriggerDE: "Falscher Schraubenschluessel", + HarmDE: "Abrutschen, Quetschung", AffectedDE: "Instandhalter", ZoneDE: "Wartungszugang", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP703", NameDE: "Fehlende Qualifikation des Instandhalters", NameEN: "Insufficient maintainer qualification", + RequiredComponentTags: []string{"electrical_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"electrical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Unqualifiziertes Personal an Elektrik", TriggerDE: "Keine Elektrofachkraft", + HarmDE: "Stromschlag, Fehlverdrahtung", AffectedDE: "Instandhalter", ZoneDE: "Schaltschrank", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP704", NameDE: "Herabfallen schwerer Teile bei Demontage", NameEN: "Heavy parts falling during disassembly", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75, + ScenarioDE: "Schwere Teile fallen bei Demontage herab", TriggerDE: "Fehlende Abstuetzung", + HarmDE: "Quetschung, Frakturen, Tod", AffectedDE: "Instandhalter", ZoneDE: "Wartungsbereich", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP705", NameDE: "Vergessenes Werkzeug in Maschine", NameEN: "Forgotten tool in machine", + RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Zurueckgelassenes Werkzeug wird Geschoss", TriggerDE: "Keine Werkzeugkontrolle", + HarmDE: "Herausgeschleudertes Teil, Verletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Arbeitsraum", + DefaultSeverity: 4, DefaultExposure: 2}, + {ID: "HP706", NameDE: "Schnittwunden an scharfkantigen Teilen", NameEN: "Cuts on sharp-edged parts", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Scharfe Kanten und Grate verletzen", TriggerDE: "Fehlende Schutzhandschuhe", + HarmDE: "Schnittwunden, Abschuerfungen", AffectedDE: "Instandhalter", ZoneDE: "Blechverkleidungen", + DefaultSeverity: 2, DefaultExposure: 4}, + {ID: "HP707", NameDE: "Verbrennung an heissen Teilen bei Wartung", NameEN: "Burn on hot parts during maintenance", + RequiredComponentTags: []string{"high_temperature"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 60, + ScenarioDE: "Maschine nicht abgekuehlt vor Wartung", TriggerDE: "Zu kurze Abkuehlzeit", + HarmDE: "Kontaktverbrennungen", AffectedDE: "Instandhalter", ZoneDE: "Heizplatten, Motorgehaeuse", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP708", NameDE: "Fehlende Wartungsfreigabe", NameEN: "Missing maintenance permit", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Wartung ohne formale Freigabe", TriggerDE: "Fehlender Erlaubnisschein", + HarmDE: "Unerwarteter Maschinenbetrieb", AffectedDE: "Instandhalter", ZoneDE: "Gesamte Maschine", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP709", NameDE: "Biologische Gefaehrdung bei KSS-Wartung", NameEN: "Biological hazard MWF maintenance", + RequiredComponentTags: []string{"chemical_risk"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Verkeimter Kuehlschmierstoff bei Wartung", TriggerDE: "Altes KSS, Biofilme", + HarmDE: "Hautinfektionen, Atemwegsbeschwerden", AffectedDE: "Instandhalter", ZoneDE: "KSS-System", + DefaultSeverity: 2, DefaultExposure: 3}, + // — Einrichten / Umruesten (HP710-HP719) — + {ID: "HP710", NameDE: "Falsche Parameter nach Umruestung", NameEN: "Wrong parameters after changeover", + RequiredComponentTags: []string{"programmable"}, RequiredLifecycles: []string{"setup"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M106", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 75, + ScenarioDE: "Falsche Maschinenparameter nach Produktwechsel", TriggerDE: "Falsche Rezeptnummer", + HarmDE: "Uebergeschwindigkeit, Werkzeugbruch", AffectedDE: "Einrichter", ZoneDE: "Bedienterminal", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP711", NameDE: "Quetschung bei Werkzeugwechsel", NameEN: "Crushing during tool change", + RequiredComponentTags: []string{"moving_part", "high_force"}, RequiredLifecycles: []string{"setup"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M003", "M054"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80, + ScenarioDE: "Schwere Werkzeuge manuell gewechselt", TriggerDE: "Kein Hebezeug, Finger eingeklemmt", + HarmDE: "Quetschung, Amputation", AffectedDE: "Einrichter", ZoneDE: "Werkzeugaufnahme", + DefaultSeverity: 4, DefaultExposure: 4}, + {ID: "HP712", NameDE: "Unkontrollierte Bewegung bei Testlauf", NameEN: "Uncontrolled movement test run", + RequiredComponentTags: []string{"moving_part", "programmable"}, RequiredLifecycles: []string{"setup"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M106", "M054"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80, + ScenarioDE: "Testlauf mit Person im Gefahrenbereich", TriggerDE: "Volle Geschwindigkeit, kein Schutz", + HarmDE: "Erfassen, Quetschen", AffectedDE: "Einrichter", ZoneDE: "Arbeitsraum", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP713", NameDE: "Einrichtbetrieb ohne reduzierte Geschwindigkeit", NameEN: "Setup without reduced speed", + RequiredComponentTags: []string{"moving_part", "programmable"}, RequiredLifecycles: []string{"setup"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M106", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 85, + ScenarioDE: "Volle Geschwindigkeit im Einrichtmodus", TriggerDE: "Defekter Betriebsartschalter", + HarmDE: "Erfassen bei voller Geschwindigkeit", AffectedDE: "Einrichter", ZoneDE: "Werkzeugbereich", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP714", NameDE: "Werkstueck faellt bei Aufspannung", NameEN: "Workpiece falls during clamping", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"setup"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Werkstueck rutscht aus Spannvorrichtung", TriggerDE: "Ungenuegender Spanndruck", + HarmDE: "Quetschung der Fuesse", AffectedDE: "Einrichter", ZoneDE: "Spannbereich", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP715", NameDE: "Stromschlag bei Steckerwechsel", NameEN: "Shock during connector change", + RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"}, + RequiredLifecycles: []string{"setup"}, GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 65, + ScenarioDE: "Steckverbinder unter Spannung gewechselt", TriggerDE: "Nicht spannungsfrei", + HarmDE: "Stromschlag, Lichtbogen", AffectedDE: "Einrichter", ZoneDE: "Sensoranschluesse", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP716", NameDE: "Hydraulikdruck bei Werkzeugspannung", NameEN: "Hydraulic pressure tool clamping", + RequiredComponentTags: []string{"hydraulic_part", "high_pressure"}, RequiredLifecycles: []string{"setup"}, + GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M131", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 70, + ScenarioDE: "Hydraulische Spannung mit hohen Kraeften", TriggerDE: "Hand im Spannbereich", + HarmDE: "Quetschung, Amputation", AffectedDE: "Einrichter", ZoneDE: "Hydr. Spannbereich", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP717", NameDE: "Materialverwechslung bei Produktwechsel", NameEN: "Material mix-up product change", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"setup"}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Falsches Material nach Umruestung", TriggerDE: "Verwechslung, fehlende Kennzeichnung", + HarmDE: "Werkzeugbruch, Splitterflug", AffectedDE: "Bedienpersonal", ZoneDE: "Materialzufuhr", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP718", NameDE: "Absturz bei Einrichtung hoher Maschine", NameEN: "Fall during tall machine setup", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"setup"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Einrichtarbeiten in Hoehe ohne sicheren Zugang", TriggerDE: "Improvisierte Aufstiegshilfe", + HarmDE: "Absturz, Frakturen", AffectedDE: "Einrichter", ZoneDE: "Maschinenoberteil", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP719", NameDE: "Schutzeinrichtung nach Umruestung defekt", NameEN: "Faulty guard after changeover", + RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"setup"}, + GeneratedHazardCats: []string{"safety_function_failure", "mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80, + ScenarioDE: "Schutzeinrichtung nicht korrekt justiert", TriggerDE: "Vergessene Nachjustierung", + HarmDE: "Zugang zum Gefahrenbereich", AffectedDE: "Bedienpersonal", ZoneDE: "Schutztueren, Lichtgitter", + DefaultSeverity: 5, DefaultExposure: 3}, + // — Stoerungsbeseitigung (HP720-HP729) — + {ID: "HP720", NameDE: "Zeitdruck bei Stoerungsbeseitigung", NameEN: "Time pressure fault clearing", + RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80, + ScenarioDE: "Eingriff ohne Freischaltung wegen Produktionsdruck", TriggerDE: "Bandstillstand, Lieferdruck", + HarmDE: "Alle maschinentypischen Verletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine", + DefaultSeverity: 5, DefaultExposure: 4}, + {ID: "HP721", NameDE: "Verklemmtes Material loest sich schlagartig", NameEN: "Jammed material releases suddenly", + RequiredComponentTags: []string{"moving_part", "high_force"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 85, + ScenarioDE: "Gespanntes Material loest sich ploetzlich", TriggerDE: "Vorspannung, federndes Material", + HarmDE: "Peitscheneffekt, Quetschung", AffectedDE: "Bedienpersonal", ZoneDE: "Einzugsstelle", + DefaultSeverity: 4, DefaultExposure: 4}, + {ID: "HP722", NameDE: "Manipulation Schutzeinrichtung bei Stoerung", NameEN: "Guard manipulation for fault clearing", + RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M054", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E20"}, Priority: 90, + ScenarioDE: "Schutztuer offen gehalten fuer schnelleren Zugang", TriggerDE: "Magnet am Sicherheitsschalter", + HarmDE: "Zugang zu laufender Maschine", AffectedDE: "Bedienpersonal", ZoneDE: "Schutztueren", + DefaultSeverity: 5, DefaultExposure: 4}, + {ID: "HP723", NameDE: "Unerwarteter Wiederanlauf bei Stoerung", NameEN: "Unexpected restart fault clearing", + RequiredComponentTags: []string{"moving_part", "programmable"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M106", "M054"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 95, + ScenarioDE: "SPS startet Maschine automatisch nach Fehler", TriggerDE: "Fehlende Wiederanlaufsperre", + HarmDE: "Erfassen durch anlaufende Teile, Tod", AffectedDE: "Alle im Gefahrenbereich", ZoneDE: "Arbeitsraum", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP724", NameDE: "Kontakt mit heissen Medien bei Stoerung", NameEN: "Hot media contact during fault", + RequiredComponentTags: []string{"high_temperature", "high_pressure"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 70, + ScenarioDE: "Heisses Medium tritt bei Reparatur aus", TriggerDE: "Nicht druckentlastete Leitung", + HarmDE: "Verbruehungen, Dampfverbrennungen", AffectedDE: "Instandhalter", ZoneDE: "Medienleitungen", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP725", NameDE: "Absturz bei Stoerungsbeseitigung in Hoehe", NameEN: "Fall during fault clearing at height", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Eilige Stoerungsbeseitigung in Hoehe ohne Sicherung", TriggerDE: "Hektik, provisorischer Zugang", + HarmDE: "Absturz, Frakturen", AffectedDE: "Bedienpersonal", ZoneDE: "Erhoehte Maschinenteile", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP726", NameDE: "Giftige Daempfe bei Stoerung", NameEN: "Toxic fumes during fault", + RequiredComponentTags: []string{"chemical_risk"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Stoerung setzt giftige Daempfe frei", TriggerDE: "Ueberhitzung, Materialaustritt", + HarmDE: "Vergiftung, Atemwegsschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Stoerungsstelle", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP727", NameDE: "Fehlende Beleuchtung bei Nacht-Stoerung", NameEN: "Insufficient light night fault", + RequiredComponentTags: []string{"programmable"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40, + ScenarioDE: "Stoerungsbeseitigung nachts bei schlechtem Licht", TriggerDE: "Fehlendes Licht", + HarmDE: "Stolpern, Fehlgriff", AffectedDE: "Nachtschichtpersonal", ZoneDE: "Maschinenumgebung", + DefaultSeverity: 2, DefaultExposure: 3}, + {ID: "HP728", NameDE: "Druckluftschlag bei Ventilstoerung", NameEN: "Air blast during valve fault", + RequiredComponentTags: []string{"pneumatic_part", "high_pressure"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M131", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 65, + ScenarioDE: "Druckluft entweicht schlagartig bei Reparatur", TriggerDE: "Nicht entlueftetes System", + HarmDE: "Gehoerschaeden, Augenverletzung", AffectedDE: "Instandhalter", ZoneDE: "Pneumatikventile", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP729", NameDE: "Fehldiagnose fuehrt zu Folgestoerung", NameEN: "Misdiagnosis causes secondary fault", + RequiredComponentTags: []string{"programmable"}, RequiredLifecycles: []string{"fault_clearing"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Falsche Fehleranalyse fuehrt zu unsachgemaesser Reparatur", TriggerDE: "Fehlendes Diagnosetool", + HarmDE: "Folgestoerung mit groesserem Schaden", AffectedDE: "Bedienpersonal", ZoneDE: "Steuerung", + DefaultSeverity: 4, DefaultExposure: 2}, + // — Transport / Montage (HP730-HP737) — + {ID: "HP730", NameDE: "Kippen der Maschine beim Transport", NameEN: "Machine tipping during transport", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80, + ScenarioDE: "Maschine kippt wegen falschem Schwerpunkt", TriggerDE: "Falscher Anschlagpunkt", + HarmDE: "Quetschung unter Maschine, Tod", AffectedDE: "Transportpersonal", ZoneDE: "Transportweg", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP731", NameDE: "Herabfallen bei Kranverladung", NameEN: "Falling load crane loading", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85, + ScenarioDE: "Last loest sich aus Krananschlag", TriggerDE: "Falsches Anschlagmittel, Ueberlast", + HarmDE: "Erschlagen, Tod", AffectedDE: "Alle im Schwenkbereich", ZoneDE: "Unter der Last", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP732", NameDE: "Quetschung beim Absetzen schwerer Lasten", NameEN: "Crushing when lowering loads", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75, + ScenarioDE: "Finger/Fuesse zwischen Last und Unterlage", TriggerDE: "Zu nah an der Last", + HarmDE: "Quetschung, Amputation", AffectedDE: "Anschlaeger", ZoneDE: "Absetzbereich", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP733", NameDE: "Rueckenschaden durch manuelles Tragen", NameEN: "Back injury manual carrying", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"}, + GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Maschinenteile manuell statt mit Hebehilfe getragen", TriggerDE: "Fehlende Hebemittel", + HarmDE: "Bandscheibenvorfall", AffectedDE: "Montagepersonal", ZoneDE: "Transportwege", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP734", NameDE: "Pendelnde Last am Kran", NameEN: "Swinging load on crane", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Pendelnde Kranladung trifft Personen", TriggerDE: "Zu schnelles Schwenken, Wind", + HarmDE: "Aufprall, Frakturen", AffectedDE: "Alle im Schwenkbereich", ZoneDE: "Kranbahn", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP735", NameDE: "Maschine rutscht vom Transportfahrzeug", NameEN: "Machine slides off vehicle", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75, + ScenarioDE: "Unzureichende Ladungssicherung", TriggerDE: "Fehlende Zurrgurte, Vollbremsung", + HarmDE: "Herabfallende Maschine, Sachschaden", AffectedDE: "Fahrer", ZoneDE: "Ladeflaeche", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP736", NameDE: "Kollision bei innerbetrieblichem Transport", NameEN: "Collision internal transport", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60, + ScenarioDE: "Stapler kollidiert mit Personen", TriggerDE: "Eingeschraenkte Sicht, zu schnell", + HarmDE: "Anfahrunfall, Quetschung", AffectedDE: "Fussgaenger", ZoneDE: "Transportwege", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP737", NameDE: "Verankerungsfehler bei Montage", NameEN: "Anchoring error installation", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Maschine nicht korrekt verankert", TriggerDE: "Zu schwache Duebel, falscher Untergrund", + HarmDE: "Verschiebung, Kippen", AffectedDE: "Bedienpersonal", ZoneDE: "Fundament", + DefaultSeverity: 4, DefaultExposure: 2}, + // — Inbetriebnahme (HP738-HP742) — + {ID: "HP738", NameDE: "Erststart ohne komplette Schutzeinrichtungen", NameEN: "First start without guards", + RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"commissioning"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 90, + ScenarioDE: "Erststart vor Montage aller Schutzeinrichtungen", TriggerDE: "Termindruck, fehlende Abnahme", + HarmDE: "Offene Gefahrstellen", AffectedDE: "IBN-Personal", ZoneDE: "Gesamte Maschine", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP739", NameDE: "Kalibrierungsfehler verursacht Ueberfahrt", NameEN: "Calibration error overtravel", + RequiredComponentTags: []string{"moving_part", "programmable"}, RequiredLifecycles: []string{"commissioning"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M106", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 75, + ScenarioDE: "Falsche Achskalibrierung fuehrt zu Ueberfahrt", TriggerDE: "Vertauschte Achsen", + HarmDE: "Kollision, Maschinenbruch", AffectedDE: "IBN-Personal", ZoneDE: "Verfahrbereiche", + DefaultSeverity: 4, DefaultExposure: 2}, + {ID: "HP740", NameDE: "Unerwartetes Verhalten bei Probebetrieb", NameEN: "Unexpected behaviour trial run", + RequiredComponentTags: []string{"programmable"}, RequiredLifecycles: []string{"commissioning"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M106", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 70, + ScenarioDE: "Neues Programm zeigt unvorhergesehenes Verhalten", TriggerDE: "Softwarefehler", + HarmDE: "Unkontrollierte Bewegung", AffectedDE: "IBN-Personal", ZoneDE: "Arbeitsraum", + DefaultSeverity: 4, DefaultExposure: 2}, + {ID: "HP741", NameDE: "Not-Halt nicht geprueft bei IBN", NameEN: "E-stop not tested commissioning", + RequiredComponentTags: []string{"electrical_part"}, RequiredLifecycles: []string{"commissioning"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E09"}, Priority: 85, + ScenarioDE: "Not-Halt vor Erstbetrieb nicht geprueft", TriggerDE: "Uebergangene Checkliste", + HarmDE: "Kein Stopp im Notfall", AffectedDE: "Alle an Maschine", ZoneDE: "Not-Halt-Positionen", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP742", NameDE: "Medienanschluss vertauscht bei IBN", NameEN: "Media connection swapped", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"commissioning"}, + GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 60, + ScenarioDE: "Vertauschter Druckluft-/Hydraulikanschluss", TriggerDE: "Verwechslung, fehlende Kennzeichnung", + HarmDE: "Falsche Bewegungsrichtung, Berstgefahr", AffectedDE: "IBN-Personal", ZoneDE: "Anschluesse", + DefaultSeverity: 3, DefaultExposure: 2}, + // — Reinigung (HP743-HP747) — + {ID: "HP743", NameDE: "Nassreinigung nahe Elektrik", NameEN: "Wet cleaning near electrics", + RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"}, + RequiredLifecycles: []string{"cleaning"}, GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 75, + ScenarioDE: "Wasser gelangt in Schaltschrank", TriggerDE: "Hochdruckreiniger nahe Elektrik", + HarmDE: "Kurzschluss, Stromschlag", AffectedDE: "Reinigungspersonal", ZoneDE: "Schaltschrank", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP744", NameDE: "Giftige Reinigungsmittel-Daempfe", NameEN: "Toxic cleaner fumes", + RequiredComponentTags: []string{"chemical_risk"}, RequiredLifecycles: []string{"cleaning"}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Reinigungsmittel-Daempfe in geschlossenem Raum", TriggerDE: "Fehlende Lueftung", + HarmDE: "Atemwegsveraetzung, Vergiftung", AffectedDE: "Reinigungspersonal", ZoneDE: "Maschineninneres", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP745", NameDE: "Hochdruckreiniger-Verletzung", NameEN: "High-pressure cleaner injury", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"cleaning"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60, + ScenarioDE: "Hochdruckstrahl verletzt Haut", TriggerDE: "Zu geringer Abstand", + HarmDE: "Injektionsverletzung, Infektion", AffectedDE: "Reinigungspersonal", ZoneDE: "Reinigungsbereich", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP746", NameDE: "Reinigung bei laufender Maschine", NameEN: "Cleaning during operation", + RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"cleaning"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 85, + ScenarioDE: "Reinigung ohne Abschaltung der Maschine", TriggerDE: "Zeitdruck", + HarmDE: "Einzug, Quetschung, Aufwickeln", AffectedDE: "Reinigungspersonal", ZoneDE: "Rotierende Teile", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP747", NameDE: "Nassrutschiger Boden nach Reinigung", NameEN: "Wet slippery floor after cleaning", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"cleaning"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Nasser Boden nach Maschinenreinigung", TriggerDE: "Fehlende Absperrung", + HarmDE: "Sturz, Frakturen", AffectedDE: "Alle Personen", ZoneDE: "Werkstattboden", + DefaultSeverity: 2, DefaultExposure: 4}, + // — Demontage / Entsorgung (HP748-HP752) — + {ID: "HP748", NameDE: "Restmedien in demontierten Leitungen", NameEN: "Residual media dismantled piping", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"decommissioning"}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Oel/Chemikalien treten aus getrennten Leitungen", TriggerDE: "Nicht entleerte Leitungen", + HarmDE: "Veraetzung, Kontamination", AffectedDE: "Abbruchpersonal", ZoneDE: "Trennstellen", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP749", NameDE: "Asbestexposition bei Altmaschine", NameEN: "Asbestos old machine demolition", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"decommissioning"}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85, + RequiresExpertCalculation: true, ExpertHintDE: "Schadstoffgutachten gemaess TRGS 519 erforderlich.", + ScenarioDE: "Asbesthaltiges Material wird freigesetzt", TriggerDE: "Keine Vorab-Ermittlung", + HarmDE: "Asbestose, Lungenkrebs", AffectedDE: "Abbruchpersonal", ZoneDE: "Alte Dichtungen/Isolierungen", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP750", NameDE: "Kontaminierte Teile bei Entsorgung", NameEN: "Contaminated parts disposal", + RequiredComponentTags: []string{"chemical_risk"}, RequiredLifecycles: []string{"decommissioning"}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Kontaminierte Teile unsachgemaess entsorgt", TriggerDE: "Fehlende Trennung", + HarmDE: "Umweltverschmutzung, Hautkontakt", AffectedDE: "Entsorgungspersonal", ZoneDE: "Demontagebereich", + DefaultSeverity: 2, DefaultExposure: 3}, + {ID: "HP751", NameDE: "Scharfe Kanten bei Zerschneidung", NameEN: "Sharp edges cutting scrap", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"decommissioning"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Scharfe Kanten beim Zerteilen der Maschine", TriggerDE: "Trennschleifen, Brennschneiden", + HarmDE: "Schnittwunden, Splitterverletzungen", AffectedDE: "Abbruchpersonal", ZoneDE: "Schneidbereich", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP752", NameDE: "Instabilitaet bei stueckweisem Abbruch", NameEN: "Instability stepwise demolition", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"decommissioning"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Restbauwerk stuerzt unkontrolliert ein", TriggerDE: "Falsche Abbruchreihenfolge", + HarmDE: "Verschuettung, Tod", AffectedDE: "Abbruchpersonal", ZoneDE: "Restkonstruktion", + DefaultSeverity: 5, DefaultExposure: 2}, + // — Inspektion / Pruefung (HP753-HP757) — + {ID: "HP753", NameDE: "Pruefung unter Last (Belastungstest)", NameEN: "Test under load", + RequiredComponentTags: []string{"structural_part", "high_force"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E20"}, Priority: 80, + ScenarioDE: "Bauteilversagen bei Maximallast", TriggerDE: "Materialermuedung, Riss", + HarmDE: "Bruchstuecke, herabfallende Last", AffectedDE: "Pruefpersonal", ZoneDE: "Pruefstand", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP754", NameDE: "Druckpruefung mit Berstgefahr", NameEN: "Pressure test burst risk", + RequiredComponentTags: []string{"high_pressure"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M131", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 85, + RequiresExpertCalculation: true, ExpertHintDE: "Pruefung nur durch ZUeS gemaess BetrSichV.", + ScenarioDE: "Behaelter versagt bei Druckpruefung", TriggerDE: "Wandstaerkenunterschreitung", + HarmDE: "Bersten, Splitterflug, Tod", AffectedDE: "Pruefpersonal", ZoneDE: "Druckbehaelter", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP755", NameDE: "Funktionstest mit offener Schutzeinrichtung", NameEN: "Function test open guard", + RequiredComponentTags: []string{"moving_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M054", "M082"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80, + ScenarioDE: "Test erfordert offene Schutzeinrichtung", TriggerDE: "Sichtpruefung noetig", + HarmDE: "Erfassen, Quetschen", AffectedDE: "Pruefpersonal", ZoneDE: "Maschinenarbeitsraum", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP756", NameDE: "Messung an spannungsfuehrender Anlage", NameEN: "Measurement on energized system", + RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"}, + RequiredLifecycles: []string{"maintenance"}, GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 75, + ScenarioDE: "Messung unter Spannung bei Fehlersuche", TriggerDE: "Messgeraet rutscht ab", + HarmDE: "Stromschlag, Lichtbogen", AffectedDE: "Elektrofachkraft", ZoneDE: "Schaltschrank", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP757", NameDE: "ZfP mit Strahlenquelle", NameEN: "NDT with radiation source", + RequiredComponentTags: []string{"radiation_source"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"radiation_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80, + RequiresExpertCalculation: true, ExpertHintDE: "Strahlenschutzbeauftragter nach StrlSchV erforderlich.", + ScenarioDE: "Radiographische Pruefung mit Roentgen/Gamma", TriggerDE: "Sperrbereich nicht eingerichtet", + HarmDE: "Ionisierende Strahlung, Krebs", AffectedDE: "Pruefpersonal", ZoneDE: "Pruef-/Kontrollbereich", + DefaultSeverity: 5, DefaultExposure: 2}, + // — Fremdfirmen (HP758-HP761) — + {ID: "HP758", NameDE: "Fehlende Einweisung Fremdfirma", NameEN: "Missing contractor induction", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Fremdfirma kennt ortsspezifische Gefahren nicht", TriggerDE: "Keine Sicherheitsunterweisung", + HarmDE: "Alle Gefaehrdungen durch Unkenntnis", AffectedDE: "Fremdfirmenpersonal", ZoneDE: "Gesamter Betrieb", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP759", NameDE: "Sprachbarriere bei Sicherheitskommunikation", NameEN: "Language barrier safety communication", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Sicherheitsanweisungen nicht verstanden", TriggerDE: "Nur deutschsprachige Unterweisung", + HarmDE: "Fehlverhalten durch Missverstaendnis", AffectedDE: "Fremdfirmenpersonal", ZoneDE: "Einsatzbereich", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP760", NameDE: "Parallele Arbeiten ohne Koordination", NameEN: "Parallel work no coordination", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75, + ScenarioDE: "Mehrere Teams gleichzeitig an einer Anlage", TriggerDE: "Fehlende Koordination", + HarmDE: "Unerwarteter Anlauf, Gefaehrdung", AffectedDE: "Alle Teams", ZoneDE: "Gesamte Anlage", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP761", NameDE: "Schnittstellenproblem an Gewerkeuebergaengen", NameEN: "Interface problem trade boundaries", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60, + ScenarioDE: "Verantwortungsluecke zwischen Gewerken", TriggerDE: "Unklare Zustaendigkeiten", + HarmDE: "Vernachlaessigte Sicherheit", AffectedDE: "Alle Gewerke", ZoneDE: "Schnittstellen", + DefaultSeverity: 3, DefaultExposure: 3}, + // — Notfall (HP762-HP764) — + {ID: "HP762", NameDE: "Versperrte Fluchtwege bei Wartung", NameEN: "Blocked escape routes maintenance", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Material blockiert Flucht- und Rettungswege", TriggerDE: "Abgestelltes Material, Geruest", + HarmDE: "Verzoegerte Evakuierung", AffectedDE: "Alle im Gebaeude", ZoneDE: "Fluchtwege", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP763", NameDE: "Fehlende Erste-Hilfe am Wartungsort", NameEN: "Missing first aid maintenance site", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Kein Erste-Hilfe-Material am abgelegenen Ort", TriggerDE: "Entfernter Standort", + HarmDE: "Verzoegerte Erstversorgung", AffectedDE: "Instandhalter", ZoneDE: "Abgelegene Wartungsorte", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP764", NameDE: "Brandbekaempfung bei Wartung", NameEN: "Firefighting during maintenance", + RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 65, + ScenarioDE: "Feuerloescher nicht erreichbar bei Wartung", TriggerDE: "Verstellter Loescher", + HarmDE: "Brandausbreitung, Verbrennungen", AffectedDE: "Instandhalter", ZoneDE: "Wartungsbereich", + DefaultSeverity: 4, DefaultExposure: 2}, + } +} diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_specific_machines.go b/ai-compliance-sdk/internal/iace/hazard_patterns_specific_machines.go new file mode 100644 index 0000000..65373cf --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_specific_machines.go @@ -0,0 +1,422 @@ +package iace + +// GetSpecificMachinePatterns returns 26 hazard patterns (HP730-HP755) +// for pressure vessels/boilers, pumps/compressors, wind energy, +// solar installations, and battery storage systems. +func GetSpecificMachinePatterns() []HazardPattern { + return []HazardPattern{ + // ================================================================ + // Druckgeraete / Kessel (HP730-HP739) + // ================================================================ + { + ID: "HP730", NameDE: "Bersten eines Druckbehaelters", NameEN: "Pressure vessel burst", + RequiredComponentTags: []string{"high_pressure", "structural_part"}, + RequiredEnergyTags: []string{"pneumatic"}, + GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M003", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E11", "E20"}, + Priority: 100, + ScenarioDE: "Druckbehaelter versagt durch Materialermuedung, Korrosion oder Ueberdruck und birst explosionsartig.", + TriggerDE: "Ueberschreiten des zulaessigen Betriebsdrucks, Korrosionsschaeden, fehlende wiederkehrende Pruefung", + HarmDE: "Toedliche Verletzungen durch Druckwelle und Splitter, schwere Verbrennungen durch austretende Medien", + AffectedDE: "Bedienpersonal, alle Personen im Umkreis des Behaelters", + ZoneDE: "Druckbehaelter, angrenzende Bereiche im Splitterflugradius", + DefaultSeverity: 5, DefaultExposure: 2, + }, + { + ID: "HP731", NameDE: "Dampfaustritt an Flanschverbindung", NameEN: "Steam leak at flange connection", + RequiredComponentTags: []string{"high_pressure", "high_temperature"}, + RequiredEnergyTags: []string{"thermal", "pneumatic"}, + GeneratedHazardCats: []string{"thermal_hazard", "pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M005", "M141"}, + SuggestedEvidenceIDs: []string{"E10", "E11", "E20"}, + Priority: 85, + ScenarioDE: "Heisser Dampf tritt unkontrolliert an einer undichten Flanschverbindung aus und verbrueht Personen.", + TriggerDE: "Alterung der Flanschdichtung, ungleichmaessiges Anziehen der Schrauben, thermische Wechselbelastung", + HarmDE: "Schwere Verbruehungen, Atemwegsschaeden durch Heissdampf", + AffectedDE: "Wartungspersonal, Bedienpersonal in der Naehe der Rohrleitung", + ZoneDE: "Flanschverbindungen, Rohrboegen, Ventilstopfbuchsen", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP732", NameDE: "Sicherheitsventil klemmt unter Druck", NameEN: "Safety valve stuck under pressure", + RequiredComponentTags: []string{"high_pressure", "safety_device"}, + RequiredEnergyTags: []string{"pneumatic"}, + GeneratedHazardCats: []string{"safety_function_failure", "pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M104", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E08", "E11"}, + Priority: 95, + RequiresExpertCalculation: true, + ExpertHintDE: "Sicherheitsventilberechnung nach AD 2000-Merkblatt A2 und wiederkehrende Pruefung nach BetrSichV durchfuehren.", + ScenarioDE: "Das Sicherheitsventil oeffnet bei Ueberdruck nicht und der Behaelter wird ueber den zulaessigen Druck belastet.", + TriggerDE: "Korrosion am Ventilsitz, Verklebung durch Ablagerungen, fehlende Funktionspruefung", + HarmDE: "Bersten des Druckbehaelters, toedliche Verletzungen, Anlagenzersoerung", + AffectedDE: "Bedienpersonal, Wartungspersonal, Personen in der Umgebung", + ZoneDE: "Sicherheitsventil, Druckbehaelter, Dampfkessel", + DefaultSeverity: 5, DefaultExposure: 2, + }, + { + ID: "HP733", NameDE: "Wasserschlag in Rohrleitung", NameEN: "Water hammer in pipeline", + RequiredComponentTags: []string{"high_pressure", "structural_part"}, + RequiredEnergyTags: []string{"pneumatic"}, + GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M003", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E11"}, + Priority: 80, + ScenarioDE: "Plotzlicher Druckstoss (Wasserschlag) durch schnelles Schliessen eines Ventils zerstoert Rohrleitungen.", + TriggerDE: "Abruptes Ventilschliessen, Pumpenstoss, Kondensat in Dampfleitung", + HarmDE: "Rohrleitungsbruch, Austritt heisser Medien, Splitterverletzungen", + AffectedDE: "Personen entlang der Rohrleitung, Wartungspersonal", + ZoneDE: "Rohrleitungssystem, Ventilstationen, Pumpenauslass", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP734", NameDE: "Korrosion unter Isolierung (CUI)", NameEN: "Corrosion under insulation (CUI)", + RequiredComponentTags: []string{"high_pressure", "structural_part"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E20", "E21"}, + Priority: 75, + ScenarioDE: "Korrosion entwickelt sich unbemerkt unter der Waermeisolierung und schwaecht die Druckbehaelterwand.", + TriggerDE: "Feuchtigkeit dringt in Isolierung ein, keine regelmaessige Inspektionsroutine, Temperaturwechsel", + HarmDE: "Ploetzliches Versagen der Behaelterwand, Medienaustritt, Druckbehaelterbersten", + AffectedDE: "Bedienpersonal, Wartungspersonal", + ZoneDE: "Isolierte Rohrleitungen, Behaeltermantel, Waermetauscher-Gehaeuse", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP735", NameDE: "Ueberhitzung Waermetauscher", NameEN: "Heat exchanger overheating", + RequiredComponentTags: []string{"high_temperature", "structural_part"}, + RequiredEnergyTags: []string{"thermal"}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M141"}, + SuggestedEvidenceIDs: []string{"E10", "E20"}, + Priority: 75, + ScenarioDE: "Waermetauscher ueberhitzt durch fehlenden Kuehlmittelfluss und gibt uebermassige Waerme an die Umgebung ab.", + TriggerDE: "Pumpenausfall im Kuehlkreislauf, Verschmutzung der Austauschflaechen, Ventilstoeruung", + HarmDE: "Kontaktverbrennungen, Ueberhitzung nachgelagerter Prozesse, Medienaustritt", + AffectedDE: "Bedienpersonal, Wartungspersonal", + ZoneDE: "Waermetauschergehaeuse, Zu- und Ableitungen, Kuehlkreislauf", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP736", NameDE: "Druckstoss bei schnellem Ventilschluss", NameEN: "Pressure surge from rapid valve closure", + RequiredComponentTags: []string{"high_pressure"}, + RequiredEnergyTags: []string{"pneumatic"}, + GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M003", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E11"}, + Priority: 75, + ScenarioDE: "Schnelles Schliessen eines Absperrventils erzeugt einen Druckstoss, der Leitungen und Armaturen beschaedigt.", + TriggerDE: "Automatisches Schnellschluss-Ventil, Bedienfehler, Not-Abschaltung ohne Druckentlastung", + HarmDE: "Leitungsbruch, Medienaustritt, Splitterverletzungen", + AffectedDE: "Bedienpersonal entlang der Leitung", + ZoneDE: "Ventilstationen, Rohrleitungen, Armaturen", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP737", NameDE: "Langsame Undichtigkeit Druckbehaelter", NameEN: "Slow pressure vessel leak", + RequiredComponentTags: []string{"high_pressure"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"pneumatic_hydraulic", "material_environmental"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E11", "E21"}, + Priority: 65, + ScenarioDE: "Schleichende Undichtigkeit am Druckbehaelter fuehrt zu unkontrolliertem Medienaustritt ueber laengere Zeit.", + TriggerDE: "Haarriss im Material, undichter Mannlochdeckel, poroese Schweissnaht", + HarmDE: "Vergiftung durch austretendes Medium, Erstickungsgefahr, Korrosionsschaeden", + AffectedDE: "Bedienpersonal im Nahbereich", + ZoneDE: "Behaeltermantel, Schweissnaehte, Mannlochdichtungen, Stutzenbereiche", + DefaultSeverity: 3, DefaultExposure: 3, + }, + { + ID: "HP738", NameDE: "Bersten des Schauglases am Druckbehaelter", NameEN: "Sight glass burst on pressure vessel", + RequiredComponentTags: []string{"high_pressure"}, + RequiredEnergyTags: []string{"pneumatic"}, + GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M003", "M005", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E11", "E20"}, + Priority: 85, + ScenarioDE: "Schauglas am Druckbehaelter birst durch Druckueberlastung oder Temperaturschock und schleudert Splitter.", + TriggerDE: "Druckspitze, Temperaturwechsel, mechanische Beschaedigung des Glases", + HarmDE: "Glassplitterverletzungen im Gesicht, Verbruehung durch austretendes Medium", + AffectedDE: "Bedienpersonal, das den Fuellstand am Schauglas abliest", + ZoneDE: "Schauglasbereich, Frontseite des Druckbehaelters", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP739", NameDE: "Dampfkessel Trockenlauf", NameEN: "Boiler dry firing", + RequiredComponentTags: []string{"high_pressure", "high_temperature"}, + RequiredEnergyTags: []string{"thermal", "pneumatic"}, + GeneratedHazardCats: []string{"thermal_hazard", "pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M104", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E08", "E11"}, + Priority: 95, + RequiresExpertCalculation: true, + ExpertHintDE: "Wasserstandssicherungen nach TRD 604 pruefen; Rueckschlagventile und Speisepumpen validieren.", + ScenarioDE: "Dampfkessel wird bei zu niedrigem Wasserstand weiterbefeuert, Kesselwand glueet und versagt.", + TriggerDE: "Ausfall der Speisewasserpumpe, defekter Wasserstandsbegrenzer, Bedienfehler", + HarmDE: "Kesselexplosion, toedliche Verbrennungen, Gebaeudeschaeden", + AffectedDE: "Kesselwaerter, Bedienpersonal, Personen im Kesselhaus", + ZoneDE: "Kesselhaus, Brennkammer, Dampfdom", + DefaultSeverity: 5, DefaultExposure: 2, + }, + + // ================================================================ + // Pumpen / Kompressoren (HP740-HP744) + // ================================================================ + { + ID: "HP740", NameDE: "Kavitationsschaden an Pumpe", NameEN: "Cavitation damage to pump", + RequiredComponentTags: []string{"rotating_part", "high_pressure"}, + RequiredEnergyTags: []string{"kinetic"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E20", "E21"}, + Priority: 65, + ScenarioDE: "Kavitation zerstoert Pumpenrad und Gehaeuse; Bruchstuecke koennen austreten.", + TriggerDE: "Zu niedriger Zulaufdruck, Drosselung der Saugseite, Lufteinbruch in Saugleitung", + HarmDE: "Pumpenversagen mit Medienaustritt, Splitterwurf bei Gehaeusebruch", + AffectedDE: "Wartungspersonal, Bedienpersonal in Pumpennaehe", + ZoneDE: "Pumpengehaeuse, Laufrad, Saugleitung", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP741", NameDE: "Lagerversagen am Kompressor", NameEN: "Bearing failure on compressor", + RequiredComponentTags: []string{"rotating_part"}, + RequiredEnergyTags: []string{"kinetic"}, + GeneratedHazardCats: []string{"mechanical_hazard", "thermal_hazard"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E20", "E21"}, + Priority: 70, + ScenarioDE: "Lagerversagen am Kompressor fuehrt zu Heisslaeuer, Blockierung und moeglicherweise Gehaeusedurchbruch.", + TriggerDE: "Fehlende Schmierung, Ueberbelastung, Verschleiss ueber Lebensdauer", + HarmDE: "Heisse Metallteile, Schwingungsbruch, Brand durch Heisslaeuer", + AffectedDE: "Wartungspersonal, Bedienpersonal", + ZoneDE: "Kompressorgehaeuse, Lagerstellen, Antriebswelle", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP742", NameDE: "Oeluebertritt in Druckluftsystem", NameEN: "Oil carry-over into compressed air system", + RequiredComponentTags: []string{"high_pressure"}, + RequiredEnergyTags: []string{"pneumatic"}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E20"}, + Priority: 60, + ScenarioDE: "Kompressoroel gelangt in das Druckluftsystem und kontaminiert nachgelagerte Verbraucher.", + TriggerDE: "Defekter Oelabscheider, ueberfuellter Oeltank, falsches Oel", + HarmDE: "Brand/Explosion in Druckluftleitung (Oelkohleablagerung), Vergiftung bei Atemluft", + AffectedDE: "Bedienpersonal an Druckluftverbrauchern, Personen bei Atemluftsystemen", + ZoneDE: "Druckluftnetz, Verbraucher, Atemluftstationen", + DefaultSeverity: 3, DefaultExposure: 2, + }, + { + ID: "HP743", NameDE: "Druckluftschlauch reisst und peitscht", NameEN: "Compressed air hose rupture and whiplash", + RequiredComponentTags: []string{"high_pressure"}, + RequiredEnergyTags: []string{"pneumatic"}, + GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M003", "M005", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E11", "E20"}, + Priority: 80, + ScenarioDE: "Druckluftschlauch reisst unter Betriebsdruck und peitscht unkontrolliert umher.", + TriggerDE: "Alterung des Schlauchs, Ueberfahren mit Gabelstapler, fehlende Schlauchbruchsicherung", + HarmDE: "Peitschenschlag-Verletzungen, Augenverletzung durch Druckluftstoss, Gehoerschaden durch Knall", + AffectedDE: "Bedienpersonal, Personen im Arbeitsbereich", + ZoneDE: "Druckluftschlauch-Verlauf, Kupplungsstellen, Arbeitsplatz", + DefaultSeverity: 4, DefaultExposure: 3, + }, + { + ID: "HP744", NameDE: "Pulsation in Druckleitung", NameEN: "Pulsation in pressure line", + RequiredComponentTags: []string{"high_pressure", "structural_part"}, + RequiredEnergyTags: []string{"pneumatic"}, + GeneratedHazardCats: []string{"pneumatic_hydraulic"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E11"}, + Priority: 60, + ScenarioDE: "Druckpulsationen von Kolbenkompressoren fuehren zu Ermuedungsbruechen an Rohrleitungen und Armaturen.", + TriggerDE: "Fehlende Pulsationsdaempfer, Resonanzfrequenz der Rohrleitung angeregt", + HarmDE: "Rohrleitungsbruch, Medienaustritt unter Druck, Splitterverletzungen", + AffectedDE: "Bedienpersonal entlang der Druckleitung", + ZoneDE: "Druckleitung, T-Stuecke, Pulsationsdaempfer-Bereich", + DefaultSeverity: 3, DefaultExposure: 2, + }, + + // ================================================================ + // Windenergie (HP745-HP749) + // ================================================================ + { + ID: "HP745", NameDE: "Blattbruch an Windturbine", NameEN: "Blade failure on wind turbine", + RequiredComponentTags: []string{"rotating_part", "structural_part"}, + RequiredEnergyTags: []string{"kinetic"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M003", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E20"}, + Priority: 90, + ScenarioDE: "Rotorblatt einer Windturbine bricht durch Materialermuedung oder Blitzschlag und wird Hunderte Meter weit geschleudert.", + TriggerDE: "Materialermuedung, Blitzschaden, Vereisung mit Unwucht, fehlende Inspektionen", + HarmDE: "Toedliche Verletzung durch Blattstuecke, Sachschaeden im weiten Umkreis", + AffectedDE: "Wartungspersonal, Anwohner, Passanten auf Wegen", + ZoneDE: "Rotorkreisflaeche, Absturzzone bis 1,5 x Nabenhoehe Radius", + DefaultSeverity: 5, DefaultExposure: 1, + }, + { + ID: "HP746", NameDE: "Absturz bei Wartung der Gondel", NameEN: "Fall during nacelle maintenance", + RequiredComponentTags: []string{"structural_part", "gravity_risk"}, + RequiredEnergyTags: []string{"gravitational"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M141"}, + SuggestedEvidenceIDs: []string{"E20", "E24", "E25"}, + Priority: 95, + ScenarioDE: "Wartungspersonal stuerzt bei Arbeiten an der Gondel oder beim Besteigen des Turms in die Tiefe.", + TriggerDE: "Fehlende Absturzsicherung, defektes Steigschutzsystem, Windboee, Erschoepfung", + HarmDE: "Toedlicher Absturz, Knochenbrueche, schwere Mehrfachverletzungen", + AffectedDE: "Wartungstechniker, Servicepersonal", + ZoneDE: "Turminneres, Gondelplattform, Rotornabe", + DefaultSeverity: 5, DefaultExposure: 2, + }, + { + ID: "HP747", NameDE: "Brand in Gondel einer Windenergieanlage", NameEN: "Fire in wind turbine nacelle", + RequiredComponentTags: []string{"high_temperature", "electrical_part"}, + RequiredEnergyTags: []string{"electrical", "thermal"}, + GeneratedHazardCats: []string{"thermal_hazard", "electrical_hazard"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E10", "E20"}, + Priority: 90, + ScenarioDE: "Brand in der Gondel durch Generatorueberhitzung, Oelleckage auf heisse Bauteile oder elektrischen Kurzschluss.", + TriggerDE: "Lagerschaden am Generator, Oelleckage, Kabelbrand, Blitzeinschlag", + HarmDE: "Totalverlust der Anlage, brennende Truemmer fallen herab, Verletzung/Tod bei Wartung", + AffectedDE: "Wartungspersonal in der Gondel, Personen am Turmfuss", + ZoneDE: "Gondel, Maschinenhaus, Turmfussbereich (Absturzzone brennender Teile)", + DefaultSeverity: 5, DefaultExposure: 1, + }, + { + ID: "HP748", NameDE: "Eiswurf von Rotorblaettern", NameEN: "Ice throw from rotor blades", + RequiredComponentTags: []string{"rotating_part"}, + RequiredEnergyTags: []string{"kinetic"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M141"}, + SuggestedEvidenceIDs: []string{"E01", "E20"}, + Priority: 80, + ScenarioDE: "Bei Vereisung loesen sich Eisstuecke von den Rotorblaettern und werden durch die Fliehkraft weit geschleudert.", + TriggerDE: "Vereisung im Winter, fehlende Eiserkennungssysteme, Weiterbetrieb bei Eisansatz", + HarmDE: "Verletzung durch Eisschlag, Sachschaeden an Fahrzeugen und Gebaeuden", + AffectedDE: "Passanten, Anwohner, Wartungspersonal", + ZoneDE: "Eiswurfradius (bis 1,5 x Gesamthoehe), Wege und Strassen in Anlagennaehe", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP749", NameDE: "Blitzschlag an Windturbine", NameEN: "Lightning strike on wind turbine", + RequiredComponentTags: []string{"structural_part", "electrical_part"}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E10", "E20"}, + Priority: 75, + ScenarioDE: "Blitzeinschlag in Rotorblatt oder Turm beschaedigt Steuerung und kann Brand ausloesen.", + TriggerDE: "Blitzeinschlag bei Gewitter, fehlender oder beschaedigter Blitzschutz", + HarmDE: "Brand, Zerstoerung der Steuerung, Herabfallen brennender Teile", + AffectedDE: "Wartungspersonal bei Gewitter, Personen am Turmfuss", + ZoneDE: "Rotorblattspitze, Blitzableitersystem, Gondel", + DefaultSeverity: 4, DefaultExposure: 1, + }, + + // ================================================================ + // Solaranlagen (HP750-HP752) + // ================================================================ + { + ID: "HP750", NameDE: "Lichtbogen an DC-Steckverbindung", NameEN: "Arc fault at DC connector", + RequiredComponentTags: []string{"electrical_part"}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard", "thermal_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E10", "E20"}, + Priority: 85, + ScenarioDE: "Korrodierte oder lose DC-Steckverbindung erzeugt Lichtbogen, der den Brand der PV-Anlage ausloest.", + TriggerDE: "Korrosion, lose Kontakte, ungeeignete Stecker, mechanische Belastung am Kabel", + HarmDE: "Dachbrand, Verletzung durch Stromschlag, Erstickung durch Rauch", + AffectedDE: "Gebaeudebewohner, Feuerwehr, Wartungspersonal", + ZoneDE: "DC-Steckverbinder am Modul, Stringleitungen, Wechselrichtereingaenge", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP751", NameDE: "Dachsturz bei PV-Montage", NameEN: "Roof fall during PV installation", + RequiredComponentTags: []string{"structural_part", "gravity_risk"}, + RequiredEnergyTags: []string{"gravitational"}, + GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M141"}, + SuggestedEvidenceIDs: []string{"E20", "E24", "E25"}, + Priority: 95, + ScenarioDE: "Monteur stuerzt bei der Installation oder Wartung von PV-Modulen vom Dach.", + TriggerDE: "Fehlende Absturzsicherung, rutschige Dachflaeche, Windlast auf Modul, Durchbruch durch Dachflaeche", + HarmDE: "Toedlicher Absturz, Knochenbrueche, Wirbelsaeulenverletzung", + AffectedDE: "Montage- und Wartungspersonal", + ZoneDE: "Dachflaeche, Dachkante, Durchsturzbereiche (Lichtkuppeln)", + DefaultSeverity: 5, DefaultExposure: 3, + }, + { + ID: "HP752", NameDE: "Elektrischer Schlag DC-Seite (Spannung bei Abschaltung)", NameEN: "DC shock (voltage present even when isolated)", + RequiredComponentTags: []string{"electrical_part", "stored_energy"}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E10", "E20"}, + Priority: 90, + ScenarioDE: "PV-Module erzeugen bei Lichteinfall Spannung, auch wenn die Anlage abgeschaltet ist. DC-Spannung bis 1000 V.", + TriggerDE: "Arbeiten an DC-Leitungen bei Tageslicht, fehlende Abdeckung der Module, beschaedigte Isolation", + HarmDE: "Toedlicher Stromschlag, Verbrennungen durch Lichtbogen, Herzkammerflimmern", + AffectedDE: "Elektroinstallateure, Feuerwehr bei Loescheinsatz, Wartungspersonal", + ZoneDE: "DC-Leitungen, Modulrueckseite, Generatoranschlusskasten", + DefaultSeverity: 5, DefaultExposure: 2, + }, + + // ================================================================ + // Batteriespeicher (HP753-HP755) + // ================================================================ + { + ID: "HP753", NameDE: "Thermal Runaway bei Lithium-Batterie", NameEN: "Thermal runaway of lithium battery", + RequiredComponentTags: []string{"stored_energy", "high_temperature"}, + RequiredEnergyTags: []string{"electrical", "thermal"}, + GeneratedHazardCats: []string{"thermal_hazard", "electrical_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E10", "E20"}, + Priority: 95, + ScenarioDE: "Exotherme Kettenreaktion in einer Lithium-Batteriezelle fuehrt zu unkontrolliertem Temperaturanstieg und Brand.", + TriggerDE: "Ueberladung, mechanische Beschaedigung, Kurzschluss, Zelldefekt, Uebertemperatur", + HarmDE: "Brand, Explosion, giftige Daempfe (HF, CO, Phosphor), schwere Verbrennungen", + AffectedDE: "Bedienpersonal, Gebaeudebewohner, Feuerwehr", + ZoneDE: "Batterieschrank, Batterieraum, angrenzende Raeume", + DefaultSeverity: 5, DefaultExposure: 2, + }, + { + ID: "HP754", NameDE: "Ausgasung giftiger Daempfe aus Batterie", NameEN: "Toxic gas emission from battery", + RequiredComponentTags: []string{"stored_energy", "chemical_risk"}, + RequiredEnergyTags: []string{}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E20"}, + Priority: 85, + ScenarioDE: "Bei Zelldefekt oder Thermal Runaway gasen Batteriezellen giftige Daempfe (HF, CO, Elektrolytdaempfe) aus.", + TriggerDE: "Defekte Zelle, Ueberladung, mechanische Beschaedigung, thermische Ueberlastung", + HarmDE: "Flusssaeurevergiftung (HF), CO-Vergiftung, Veraetzung der Atemwege", + AffectedDE: "Bedienpersonal, Feuerwehr, Personen in geschlossenen Raeumen", + ZoneDE: "Batterieraum, Lueftungskanaele, angrenzende Raeume", + DefaultSeverity: 4, DefaultExposure: 2, + }, + { + ID: "HP755", NameDE: "Elektrischer Schlag an Hochvolt-Batteriespeicher", NameEN: "Electric shock from high-voltage battery storage", + RequiredComponentTags: []string{"stored_energy", "electrical_part"}, + RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, + SuggestedEvidenceIDs: []string{"E01", "E10", "E20"}, + Priority: 90, + ScenarioDE: "Beruehrung spannungsfuehrender Teile eines Hochvolt-Batteriespeichers (400-800 VDC) fuehrt zu toedlichem Stromschlag.", + TriggerDE: "Oeffnen des Batterieschranks ohne Freischaltung, beschaedigte Isolation, Feuchteeintritt", + HarmDE: "Toedlicher Stromschlag, Herzkammerflimmern, schwere Verbrennungen", + AffectedDE: "Elektrofachkraefte, Wartungspersonal, Ersthelfer", + ZoneDE: "Batterieschrank, DC-Sammelschienen, Batteriemanagementsystem-Anschluesse", + DefaultSeverity: 5, DefaultExposure: 2, + }, + } +} diff --git a/ai-compliance-sdk/internal/iace/hazard_patterns_workshop.go b/ai-compliance-sdk/internal/iace/hazard_patterns_workshop.go new file mode 100644 index 0000000..8a67155 --- /dev/null +++ b/ai-compliance-sdk/internal/iace/hazard_patterns_workshop.go @@ -0,0 +1,435 @@ +package iace + +// GetWorkshopPatterns returns 65 cross-machine workshop hazard patterns (HP600-HP664). +// These use broad tags so they fire for many machine types. +func GetWorkshopPatterns() []HazardPattern { + return []HazardPattern{ + // — Stolpern / Ausrutschen (HP600-HP604) — + {ID: "HP600", NameDE: "Ausrutschen auf Oelverschmutzung", NameEN: "Slip on oil contamination", + RequiredComponentTags: []string{"moving_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Oel bildet rutschigen Film am Boden", TriggerDE: "Leckage, fehlende Auffangwanne", + HarmDE: "Sturz, Prellungen, Frakturen", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenumgebung", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP601", NameDE: "Stolpern ueber Kabel und Schlaeuche", NameEN: "Trip over cables and hoses", + RequiredComponentTags: []string{"electrical_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Lose Kabel auf dem Boden bilden Stolperfallen", TriggerDE: "Fehlende Kabelfuehrung", + HarmDE: "Sturz, Verstauchungen", AffectedDE: "Alle Personen", ZoneDE: "Verkehrswege", + DefaultSeverity: 2, DefaultExposure: 4}, + {ID: "HP602", NameDE: "Ausrutschen auf Kuehlmittel am Boden", NameEN: "Slip on coolant on floor", + RequiredComponentTags: []string{"moving_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "KSS oder Wasser bildet glatte Flaeche", TriggerDE: "Undichte Leitungen, Spritzwasser", + HarmDE: "Sturz, Frakturen, Kopfverletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenboden", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP603", NameDE: "Stolpern ueber Metallspaene", NameEN: "Trip on metal chips", + RequiredComponentTags: []string{"cutting_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Spaene auf dem Boden bilden Rutschgefahr", TriggerDE: "Fehlende Spaeneraeumung", + HarmDE: "Sturz, Schnittwunden", AffectedDE: "Bedienpersonal", ZoneDE: "Spaeneauswurfbereich", + DefaultSeverity: 2, DefaultExposure: 4}, + {ID: "HP604", NameDE: "Ausrutschen bei Nassreinigung", NameEN: "Slip during wet cleaning", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Nassreinigung hinterlaesst glatte Bodenflaeche", TriggerDE: "Fehlende Absperrung", + HarmDE: "Sturz, Prellungen, Frakturen", AffectedDE: "Alle Personen", ZoneDE: "Werkstattboden", + DefaultSeverity: 2, DefaultExposure: 3}, + // — Absturz (HP605-HP609) — + {ID: "HP605", NameDE: "Absturz von Leiter", NameEN: "Fall from ladder", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Leiter fuer erhoehte Maschinenposition", TriggerDE: "Leiter rutscht, Ueberrecken", + HarmDE: "Sturz, Frakturen, Kopfverletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenoberteil", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP606", NameDE: "Absturz von Podest ohne Gelaender", NameEN: "Fall from platform without railing", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75, + ScenarioDE: "Wartungspodest ohne Absturzsicherung", TriggerDE: "Fehlendes Gelaender", + HarmDE: "Absturz, schwere Frakturen, Tod", AffectedDE: "Instandhalter", ZoneDE: "Wartungspodeste", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP607", NameDE: "Durchbruch durch defekte Bodenroste", NameEN: "Fall through defective floor grates", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Lose Bodenroste geben unter Belastung nach", TriggerDE: "Korrosion, fehlende Befestigung", + HarmDE: "Durchbruch, Beinverletzungen", AffectedDE: "Alle Personen", ZoneDE: "Laufstege, Bodenroste", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP608", NameDE: "Absturz von Maschinendach", NameEN: "Fall from machine roof", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Inspektion auf Maschinendach ohne Sicherung", TriggerDE: "Fehlende Anschlagpunkte", + HarmDE: "Absturz, schwere Verletzungen, Tod", AffectedDE: "Instandhalter", ZoneDE: "Maschinendach", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP609", NameDE: "Absturz in offene Maschinengrube", NameEN: "Fall into open machine pit", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Ungesicherte Bodenoeffnung", TriggerDE: "Abdeckung entfernt, fehlende Absperrung", + HarmDE: "Sturz in Grube, Frakturen", AffectedDE: "Alle Personen", ZoneDE: "Maschinengruben", + DefaultSeverity: 4, DefaultExposure: 3}, + // — Ergonomie (HP610-HP614) — + {ID: "HP610", NameDE: "Rueckenschaden durch schweres Heben", NameEN: "Back injury from heavy lifting", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Manuelles Heben ueber 25 kg", TriggerDE: "Fehlende Hebehilfe", + HarmDE: "Bandscheibenvorfall, Rueckenschmerzen", AffectedDE: "Bedienpersonal", ZoneDE: "Werkstueckzufuhr", + DefaultSeverity: 3, DefaultExposure: 5}, + {ID: "HP611", NameDE: "Zwangshaltung bei Maschinenarbeit", NameEN: "Forced posture during machine work", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Buecken, Ueberkopfarbeit, Knien", TriggerDE: "Schlechte Arbeitsplatzgestaltung", + HarmDE: "Muskel-Skelett-Erkrankungen", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenarbeitsplatz", + DefaultSeverity: 3, DefaultExposure: 5}, + {ID: "HP612", NameDE: "Ermuedung durch Steharbeit", NameEN: "Fatigue from standing work", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40, + ScenarioDE: "Dauerhafte Steharbeit ohne Stuetzmoeglichkeit", TriggerDE: "Fehlende Stehhilfe", + HarmDE: "Venenprobleme, Gelenkbeschwerden", AffectedDE: "Bedienpersonal", ZoneDE: "Bedienposition", + DefaultSeverity: 2, DefaultExposure: 5}, + {ID: "HP613", NameDE: "Repetitive Bewegung (RSI)", NameEN: "Repetitive motion (RSI)", + RequiredComponentTags: []string{"moving_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Gleiche Handbewegungen bei Beschickung/Entnahme", TriggerDE: "Hohe Taktfrequenz", + HarmDE: "Karpaltunnelsyndrom, Sehnenscheidenentzuendung", AffectedDE: "Bedienpersonal", ZoneDE: "Beschickungsbereich", + DefaultSeverity: 3, DefaultExposure: 5}, + {ID: "HP614", NameDE: "Bildschirmarbeit mit schlechter Ergonomie", NameEN: "Screen work poor ergonomics", + RequiredComponentTags: []string{"programmable"}, GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40, + ScenarioDE: "HMI-Arbeit mit unguenstiger Blickhoehe", TriggerDE: "Falsche Bildschirmhoehe, Blendung", + HarmDE: "Augenbelastung, Nackenschmerzen", AffectedDE: "Bedienpersonal", ZoneDE: "Bedienterminal", + DefaultSeverity: 2, DefaultExposure: 5}, + // — Psychische Belastung (HP615-HP617) — + {ID: "HP615", NameDE: "Belastung durch Schichtarbeit", NameEN: "Strain from shift work", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40, + ScenarioDE: "Schichtarbeit stoert Biorhythmus", TriggerDE: "Fehlende Schichtrotation", + HarmDE: "Erhoehte Unfallgefahr, Herz-Kreislauf-Risiko", AffectedDE: "Schichtpersonal", ZoneDE: "Produktionsstaette", + DefaultSeverity: 3, DefaultExposure: 5}, + {ID: "HP616", NameDE: "Laermbedingte psychische Belastung", NameEN: "Noise-induced psychological stress", + RequiredComponentTags: []string{"noise_source"}, GeneratedHazardCats: []string{"ergonomic_hazard", "noise_vibration"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Dauerlerm erschwert Konzentration", TriggerDE: "Laerm >80 dB(A)", + HarmDE: "Stress, Konzentrationsstoerung", AffectedDE: "Alle im Laermbereich", ZoneDE: "Produktionshalle", + DefaultSeverity: 3, DefaultExposure: 5}, + {ID: "HP617", NameDE: "Zeitdruck und Monotonie", NameEN: "Time pressure and monotony", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"ergonomic_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 42, + ScenarioDE: "Hohe Taktbindung fuehrt zu Konzentrationsverlust", TriggerDE: "Enge Taktzeiten", + HarmDE: "Fehlbedienungen, Unfallrisiko", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinenarbeitsplatz", + DefaultSeverity: 3, DefaultExposure: 4}, + // — Elektrische Gefaehrdungen erweitert (HP618-HP622) — + {ID: "HP618", NameDE: "Lichtbogenbildung bei Kurzschluss", NameEN: "Arc flash from short circuit", + RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard", "thermal_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09", "E20"}, Priority: 85, + ScenarioDE: "Kurzschluss erzeugt Lichtbogen mit Hitze und Druckwelle", TriggerDE: "Beschaedigte Isolation", + HarmDE: "Schwere Verbrennungen, Augenschaeden", AffectedDE: "Elektrofachkraefte", ZoneDE: "Schaltschrank", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP619", NameDE: "Kriechstrom durch Feuchtigkeit", NameEN: "Leakage current from humidity", + RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 60, + ScenarioDE: "Feuchtigkeit erzeugt Kriechstroeme", TriggerDE: "Kondenswasser, fehlender IP-Schutz", + HarmDE: "Stromschlag, Muskelverkrampfung", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinengehaeuse", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP620", NameDE: "Elektrostatische Entladung (ESD)", NameEN: "Electrostatic discharge", + RequiredComponentTags: []string{"electrical_part"}, GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 50, + ScenarioDE: "Elektrostatische Aufladung an Maschinenteilen", TriggerDE: "Trockene Luft, fehlende Erdung", + HarmDE: "Funkenbildung, Zuendquelle im Ex-Bereich", AffectedDE: "Bedienpersonal", ZoneDE: "Foerderbaender", + DefaultSeverity: 2, DefaultExposure: 4}, + {ID: "HP621", NameDE: "Fehlender Potentialausgleich", NameEN: "Missing equipotential bonding", + RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 65, + ScenarioDE: "Unterbrochener Schutzleiter am Gehaeuse", TriggerDE: "Korrodierte Erdung, defekter Schutzleiter", + HarmDE: "Beruehrungsspannung, Stromschlag", AffectedDE: "Bedienpersonal", ZoneDE: "Maschinengehaeuse", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP622", NameDE: "Blitzeinschlag bei Aussenaufstellung", NameEN: "Lightning strike outdoor installation", + RequiredComponentTags: []string{"electrical_part", "structural_part"}, RequiredEnergyTags: []string{"electrical"}, + GeneratedHazardCats: []string{"electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E09"}, Priority: 55, + ScenarioDE: "Maschine im Freien ohne Blitzschutz", TriggerDE: "Fehlender Ueberspannungsableiter", + HarmDE: "Blitzschlag, Brand, Steuerungszerstoerung", AffectedDE: "Aussenpersonal", ZoneDE: "Aussenmaschinen", + DefaultSeverity: 5, DefaultExposure: 1}, + // — Thermische Gefaehrdungen erweitert (HP623-HP627) — + {ID: "HP623", NameDE: "Kaelteverletzung bei Tieftemperaturprozess", NameEN: "Cold injury cryogenic process", + RequiredComponentTags: []string{"high_temperature"}, GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 65, + ScenarioDE: "Hautkontakt mit Kryogasen (LN2, CO2)", TriggerDE: "Fehlende Schutzhandschuhe", + HarmDE: "Erfrierungen, Kaelteverbrennungen", AffectedDE: "Bedienpersonal", ZoneDE: "Kuehlanlage", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP624", NameDE: "Hitzschlag bei hoher Umgebungstemperatur", NameEN: "Heatstroke from high temperature", + RequiredComponentTags: []string{"high_temperature"}, RequiredEnergyTags: []string{"thermal"}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Arbeit bei >35 degC ohne Kuehlung", TriggerDE: "Fehlende Lueftung, kein Trinkwasser", + HarmDE: "Hitzschlag, Kreislaufkollaps", AffectedDE: "Alle Personen", ZoneDE: "Oefen, Giesshalle", + DefaultSeverity: 4, DefaultExposure: 4}, + {ID: "HP625", NameDE: "Verbruehung durch austretenden Dampf", NameEN: "Scald from escaping steam", + RequiredComponentTags: []string{"high_temperature", "high_pressure"}, RequiredEnergyTags: []string{"thermal"}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 75, + ScenarioDE: "Heissdampf aus undichter Leitung", TriggerDE: "Defekte Dichtungen, fehlende Isolierung", + HarmDE: "Verbruehungen 2.-3. Grades", AffectedDE: "Bedienpersonal", ZoneDE: "Dampfleitungen, Ventile", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP626", NameDE: "Verbrennung an heisser Oberflaeche", NameEN: "Burn on hot surface", + RequiredComponentTags: []string{"high_temperature"}, RequiredEnergyTags: []string{"thermal"}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 60, + ScenarioDE: "Beruehrung heisser Maschinenteile ohne Markierung", TriggerDE: "Fehlende Isolierung/Warnung", + HarmDE: "Kontaktverbrennungen", AffectedDE: "Bedienpersonal", ZoneDE: "Motorgehaeuse, Heizplatten", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP627", NameDE: "Strahlungswaerme von Oefen", NameEN: "Radiant heat from furnaces", + RequiredComponentTags: []string{"high_temperature"}, RequiredEnergyTags: []string{"thermal"}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 55, + ScenarioDE: "IR-Strahlung von offenen Oefen belastet Personal", TriggerDE: "Fehlender Strahlungsschutz", + HarmDE: "Hautverbrennungen, Augenschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Ofenbereich", + DefaultSeverity: 3, DefaultExposure: 4}, + // — Chemische Gefaehrdungen erweitert (HP628-HP635) — + {ID: "HP628", NameDE: "Einatmen von Loesemitteldaempfen", NameEN: "Inhalation of solvent vapours", + RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Loesemitteldaempfe in schlecht beluefteten Raeumen", TriggerDE: "Fehlende Absaugung", + HarmDE: "Schwindel, Bewusstlosigkeit, Organschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Reinigungsarbeitsplatz", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP629", NameDE: "Veraetzung durch Saeuren/Laugen", NameEN: "Chemical burn from acids/alkalis", + RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 75, + ScenarioDE: "Hautkontakt mit Saeuren/Laugen bei Befuellung", TriggerDE: "Spritzer, gerissener Schlauch", + HarmDE: "Veraetzungen, Augenschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Chemikalienlager, Dosieranlage", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP630", NameDE: "Exposition gegenueber CMR-Stoffen", NameEN: "Exposure to CMR substances", + RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85, + RequiresExpertCalculation: true, ExpertHintDE: "Substitutionspruefung gemaess GefStoffV erforderlich.", + ScenarioDE: "Kontakt mit CMR-Stoffen", TriggerDE: "Fehlende Substitution, kein Atemschutz", + HarmDE: "Krebserkrankungen, Fruchtbarkeitsschaeden", AffectedDE: "Exponierte Personen", ZoneDE: "CMR-Arbeitsbereich", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP631", NameDE: "Staubexposition bei Bearbeitung", NameEN: "Dust exposure during machining", + RequiredComponentTags: []string{"cutting_part"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Feinstaub beim Schleifen/Fraesen/Saegen", TriggerDE: "Fehlende Absaugung, trockene Bearbeitung", + HarmDE: "Atemwegserkrankung, Silikose", AffectedDE: "Bedienpersonal", ZoneDE: "Bearbeitungsmaschine", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP632", NameDE: "Nanopartikel-Exposition", NameEN: "Nanoparticle exposure", + RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + RequiresExpertCalculation: true, ExpertHintDE: "Expositionsmessung gemaess TRGS 527 erforderlich.", + ScenarioDE: "Freisetzung von Nanopartikeln bei Beschichtung", TriggerDE: "Fehlende Einhausung", + HarmDE: "Lungengaengige Partikel, Langzeitfolgen", AffectedDE: "Bedienpersonal", ZoneDE: "Beschichtungskabine", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP633", NameDE: "Hautresorption giftiger Substanzen", NameEN: "Dermal absorption toxic substances", + RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60, + ScenarioDE: "Giftaufnahme ueber Haut (Isocyanate, Epoxide)", TriggerDE: "Fehlende Schutzhandschuhe", + HarmDE: "Sensibilisierung, Dermatitis", AffectedDE: "Bedienpersonal", ZoneDE: "Harzverarbeitung", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP634", NameDE: "CO-Vergiftung in geschlossenem Raum", NameEN: "CO poisoning in enclosed space", + RequiredComponentTags: []string{"chemical_risk"}, RequiredEnergyTags: []string{"thermal"}, + GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80, + ScenarioDE: "CO-Anreicherung durch Verbrennungsprozesse", TriggerDE: "Fehlende Belueftung", + HarmDE: "CO-Vergiftung, Tod", AffectedDE: "Alle Personen", ZoneDE: "Geschlossene Hallen, Gruben", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP635", NameDE: "Sensibilisierung durch Kuehlschmierstoffe", NameEN: "Sensitization from MWF", + RequiredComponentTags: []string{"chemical_risk", "cutting_part"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Langzeitkontakt mit KSS-Nebel", TriggerDE: "Hautkontakt, verkeimte KSS", + HarmDE: "Kontaktekzem, Asthma", AffectedDE: "Maschinenbediener", ZoneDE: "Bearbeitungsraum", + DefaultSeverity: 3, DefaultExposure: 5}, + // — Brand / Explosion erweitert (HP636-HP640) — + {ID: "HP636", NameDE: "Staubexplosion in Absauganlage", NameEN: "Dust explosion in extraction system", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental", "thermal_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80, + RequiresExpertCalculation: true, ExpertHintDE: "Ex-Schutz-Dokument gemaess BetrSichV Anh. 3 erforderlich.", + ScenarioDE: "Brennbarer Staub bildet explosionsfaehiges Gemisch", TriggerDE: "Zuendquelle, kritische Konzentration", + HarmDE: "Explosion, Verbrennungen, Tod", AffectedDE: "Alle Personen", ZoneDE: "Absauganlage, Filter", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP637", NameDE: "Gasexplosion bei Leckage", NameEN: "Gas explosion from leak", + RequiredComponentTags: []string{"chemical_risk"}, RequiredEnergyTags: []string{"thermal"}, + GeneratedHazardCats: []string{"material_environmental", "thermal_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85, + ScenarioDE: "Gasaustritt bildet explosionsfaehiges Gemisch", TriggerDE: "Undichte Verschraubung", + HarmDE: "Explosion, Tod", AffectedDE: "Alle im Gebaeude", ZoneDE: "Gasversorgung, Brenneranlage", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP638", NameDE: "Metallbrand bei Mg/Al-Bearbeitung", NameEN: "Metal fire during Mg/Al machining", + RequiredComponentTags: []string{"cutting_part", "high_temperature"}, + GeneratedHazardCats: []string{"thermal_hazard", "material_environmental"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 80, + ScenarioDE: "Feine Mg/Al-Spaene entzuenden sich", TriggerDE: "Trockene Bearbeitung, Funken", + HarmDE: "Metallbrand, giftige Rauchgase", AffectedDE: "Bedienpersonal", ZoneDE: "Bearbeitungsmaschine", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP639", NameDE: "Fettbrand in Lebensmittelanlage", NameEN: "Fat fire in food processing", + RequiredComponentTags: []string{"high_temperature", "chemical_risk"}, RequiredEnergyTags: []string{"thermal"}, + GeneratedHazardCats: []string{"thermal_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E10"}, Priority: 70, + ScenarioDE: "Ueberhitztes Fett entzuendet sich", TriggerDE: "Defekter Thermostat, Wasser im Fett", + HarmDE: "Fettexplosion, Verbrennungen", AffectedDE: "Bedienpersonal", ZoneDE: "Friteuse, Bratanlage", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP640", NameDE: "Selbstentzuendung oelgetraenkter Lappen", NameEN: "Spontaneous combustion oily rags", + RequiredComponentTags: []string{"chemical_risk"}, GeneratedHazardCats: []string{"thermal_hazard", "material_environmental"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Oelgetraenkte Tuecher entzuenden sich", TriggerDE: "Zusammengeknuellte Lappen", + HarmDE: "Brand, Rauchentwicklung", AffectedDE: "Alle Personen", ZoneDE: "Werkstatt, Abfallbehaelter", + DefaultSeverity: 3, DefaultExposure: 3}, + // — Biologische Gefaehrdungen (HP641-HP644) — + {ID: "HP641", NameDE: "Legionellen im Kuehlwassersystem", NameEN: "Legionella in cooling water", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60, + ScenarioDE: "Legionellen im Kuehlturm/KSS-Kreislauf", TriggerDE: "Stagnation, 25-50 degC", + HarmDE: "Legionaerskrankheit", AffectedDE: "Alle im Aerosolbereich", ZoneDE: "Kuehlturm, KSS-Anlage", + DefaultSeverity: 4, DefaultExposure: 3}, + {ID: "HP642", NameDE: "Schimmel in feuchten Raeumen", NameEN: "Mould in damp rooms", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Dauerfeuchtigkeit foerdert Schimmelwachstum", TriggerDE: "Ungenuegender Luftwechsel", + HarmDE: "Atemwegsbeschwerden, Allergien", AffectedDE: "Alle im Raum", ZoneDE: "Kellerraeume, Feuchtzonen", + DefaultSeverity: 2, DefaultExposure: 5}, + {ID: "HP643", NameDE: "Zeckenstich bei Aussenarbeit", NameEN: "Tick bite outdoor work", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 40, + ScenarioDE: "Zecken uebertragen FSME/Borreliose", TriggerDE: "Arbeit im Gestruepp", + HarmDE: "FSME, Borreliose", AffectedDE: "Aussendienstpersonal", ZoneDE: "Aussengelaende", + DefaultSeverity: 4, DefaultExposure: 2}, + {ID: "HP644", NameDE: "Hantavirus durch Nagetierkontakt", NameEN: "Hantavirus from rodent contact", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Staub mit Nagerkot in selten gereinigten Raeumen", TriggerDE: "Aufwirbeln von Staub", + HarmDE: "Hantavirus, Nierenschaeden", AffectedDE: "Lagerpersonal", ZoneDE: "Lager, Keller", + DefaultSeverity: 4, DefaultExposure: 2}, + // — Strahlung erweitert (HP645-HP649) — + {ID: "HP645", NameDE: "Roentgenstrahlung bei Materialpruefung", NameEN: "X-ray during material testing", + RequiredComponentTags: []string{"radiation_source"}, GeneratedHazardCats: []string{"radiation_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 80, + RequiresExpertCalculation: true, ExpertHintDE: "Genehmigung nach StrlSchG erforderlich.", + ScenarioDE: "Ionisierende Strahlung bei Materialpruefung", TriggerDE: "Fehlende Abschirmung", + HarmDE: "Strahlenschaeden, Krebsrisiko", AffectedDE: "Pruefpersonal", ZoneDE: "Pruefkabine", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP646", NameDE: "UV-Strahlung bei Haertung/Desinfektion", NameEN: "UV radiation curing/disinfection", + RequiredComponentTags: []string{"radiation_source"}, GeneratedHazardCats: []string{"radiation_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60, + ScenarioDE: "Offener UV-Strahler exponiert Personal", TriggerDE: "Defekter Schutzschirm", + HarmDE: "Hautkrebs, Augenentzuendung", AffectedDE: "Bedienpersonal", ZoneDE: "UV-Haertungsanlage", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP647", NameDE: "Infrarotstrahlung am Schmelzofen", NameEN: "IR radiation at melting furnace", + RequiredComponentTags: []string{"high_temperature", "radiation_source"}, RequiredEnergyTags: []string{"thermal"}, + GeneratedHazardCats: []string{"radiation_hazard", "thermal_hazard"}, + SuggestedMeasureIDs: []string{"M005", "M082"}, SuggestedEvidenceIDs: []string{"E10", "E20"}, Priority: 60, + ScenarioDE: "IR-Strahlung von offenen Oefen", TriggerDE: "Fehlende IR-Schutzbrille", + HarmDE: "Katarakt, Hautverbrennung", AffectedDE: "Ofenpersonal", ZoneDE: "Schmelzofen", + DefaultSeverity: 3, DefaultExposure: 4}, + {ID: "HP648", NameDE: "Mikrowellenstrahlung bei HF-Erwaermung", NameEN: "Microwave radiation HF heating", + RequiredComponentTags: []string{"radiation_source"}, GeneratedHazardCats: []string{"radiation_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65, + ScenarioDE: "Leckstrahlung aus defektem Magnetron", TriggerDE: "Beschaedigte Abschirmung", + HarmDE: "Gewebeerwaermung, Augenschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "HF-Trockner", + DefaultSeverity: 3, DefaultExposure: 3}, + {ID: "HP649", NameDE: "Radonexposition in Kellerraeumen", NameEN: "Radon in underground rooms", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"radiation_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Radon in schlecht beluefteten Kellern", TriggerDE: "Risse im Fundament, keine Lueftung", + HarmDE: "Lungenkrebs bei Langzeitexposition", AffectedDE: "Kellerpersonal", ZoneDE: "Keller", + DefaultSeverity: 4, DefaultExposure: 3}, + // — Laerm erweitert (HP650-HP653) — + {ID: "HP650", NameDE: "Impulslaerm (Stanzen/Pressen)", NameEN: "Impulse noise stamping/pressing", + RequiredComponentTags: []string{"noise_source", "moving_part"}, GeneratedHazardCats: []string{"noise_vibration"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Laermspitzen >137 dB(C) schaedigen sofort", TriggerDE: "Stanzhub, fehlender Gehoerschutz", + HarmDE: "Knalltrauma, Tinnitus, Hoerverlust", AffectedDE: "Bedienpersonal", ZoneDE: "Stanzmaschine", + DefaultSeverity: 4, DefaultExposure: 4}, + {ID: "HP651", NameDE: "Ultraschallemission", NameEN: "Ultrasound emission", + RequiredComponentTags: []string{"noise_source"}, GeneratedHazardCats: []string{"noise_vibration"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50, + ScenarioDE: "Ultraschallgeraete emittieren unhorbaren Schall", TriggerDE: "Offener Betrieb ohne Kapselung", + HarmDE: "Kopfschmerzen, Uebelkeit", AffectedDE: "Bedienpersonal", ZoneDE: "US-Reinigungsbad", + DefaultSeverity: 2, DefaultExposure: 4}, + {ID: "HP652", NameDE: "Infraschall durch Grossmaschinen", NameEN: "Infrasound from large machines", + RequiredComponentTags: []string{"noise_source", "structural_part"}, GeneratedHazardCats: []string{"noise_vibration"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Tieffrequenter Schall <20 Hz", TriggerDE: "Ungedaempfte Aufstellung, Resonanz", + HarmDE: "Schwindel, Konzentrationsstoerung", AffectedDE: "Alle im Gebaeude", ZoneDE: "Kompressorraum", + DefaultSeverity: 2, DefaultExposure: 4}, + {ID: "HP653", NameDE: "Koerperschall ins Gebaeude", NameEN: "Structure-borne sound", + RequiredComponentTags: []string{"noise_source", "structural_part"}, GeneratedHazardCats: []string{"noise_vibration"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 45, + ScenarioDE: "Vibrationen uebertragen sich ueber Fundamente", TriggerDE: "Fehlende Schwingungsisolation", + HarmDE: "Laermbelaestigung in Nachbarraeumen", AffectedDE: "Bueropersonal", ZoneDE: "Angrenzende Raeume", + DefaultSeverity: 2, DefaultExposure: 5}, + // — Vibration erweitert (HP654-HP656) — + {ID: "HP654", NameDE: "Hand-Arm-Vibration durch Handmaschinen", NameEN: "Hand-arm vibration handheld tools", + RequiredComponentTags: []string{"vibration_source"}, GeneratedHazardCats: []string{"noise_vibration"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60, + RequiresExpertCalculation: true, ExpertHintDE: "A(8)-Bewertung nach LaeVibr erforderlich.", + ScenarioDE: "Vibrierende Handmaschinen (Schleifer, Bohrer)", TriggerDE: ">2h taegl. Exposition", + HarmDE: "Weissfingerkrankheit, Nervenschaeden", AffectedDE: "Bedienpersonal", ZoneDE: "Handarbeitsplatz", + DefaultSeverity: 3, DefaultExposure: 5}, + {ID: "HP655", NameDE: "Ganzkoerpervibration auf Fahrersitz", NameEN: "Whole-body vibration driver seat", + RequiredComponentTags: []string{"vibration_source", "structural_part"}, GeneratedHazardCats: []string{"noise_vibration"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Vibration uebertraegt sich auf Koerper", TriggerDE: "Defekte Sitzfederung, Unebenheiten", + HarmDE: "Bandscheibenschaeden, LWS-Beschwerden", AffectedDE: "Fahrerpersonal", ZoneDE: "Fahrersitz", + DefaultSeverity: 3, DefaultExposure: 5}, + {ID: "HP656", NameDE: "Resonanzverstaerkung bei Drehzahl", NameEN: "Resonance amplification at RPM", + RequiredComponentTags: []string{"rotating_part", "vibration_source"}, + GeneratedHazardCats: []string{"noise_vibration", "mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Resonanzfrequenz mit starker Vibration", TriggerDE: "Kritische Drehzahl", + HarmDE: "Bauteilbruch, Ermattungsrisse", AffectedDE: "Bedienpersonal", ZoneDE: "Rotierende Baugruppen", + DefaultSeverity: 4, DefaultExposure: 2}, + // — Enge Raeume (HP657-HP659) — + {ID: "HP657", NameDE: "Sauerstoffmangel in engem Raum", NameEN: "Oxygen deficiency confined space", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85, + RequiresExpertCalculation: true, ExpertHintDE: "Befahrerlaubnis gemaess DGUV Regel 113-004.", + ScenarioDE: "O2 <17% in Behaeltern/Silos/Schaechten", TriggerDE: "Inertgas-Verdraengung", + HarmDE: "Bewusstlosigkeit, Erstickung", AffectedDE: "Einsteigpersonal", ZoneDE: "Behaelter, Silos", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP658", NameDE: "Gasvergiftung in engem Raum", NameEN: "Gas poisoning confined space", + RequiredComponentTags: []string{"chemical_risk", "structural_part"}, GeneratedHazardCats: []string{"material_environmental"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 85, + ScenarioDE: "H2S/CO/CH4 in geschlossenen Raeumen", TriggerDE: "Ausgasung, fehlende Gaswarnung", + HarmDE: "Vergiftung, Tod", AffectedDE: "Einsteigpersonal", ZoneDE: "Behaelter, Kanalisationen", + DefaultSeverity: 5, DefaultExposure: 2}, + {ID: "HP659", NameDE: "Rettung aus engem Raum erschwert", NameEN: "Impaired rescue confined space", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70, + ScenarioDE: "Enge Zugaenge verhindern schnelle Rettung", TriggerDE: "Zu enge Mannloecher", + HarmDE: "Verzoegerte Rettung, Tod", AffectedDE: "Verunfallte, Retter", ZoneDE: "Behaelter", + DefaultSeverity: 5, DefaultExposure: 2}, + // — Alleinarbeit (HP660-HP661) — + {ID: "HP660", NameDE: "Alleinarbeit ohne Notrufmoeglichkeit", NameEN: "Lone work no emergency call", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 60, + ScenarioDE: "Alleinarbeiter kann keinen Notruf absetzen", TriggerDE: "Kein PNG-Geraet, Funkloch", + HarmDE: "Verzoegerte Rettung, Tod", AffectedDE: "Alleinarbeitende", ZoneDE: "Abgelegene Arbeitsplaetze", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP661", NameDE: "Kommunikationsausfall bei Alleinarbeit", NameEN: "Communication failure lone work", + RequiredComponentTags: []string{"structural_part"}, GeneratedHazardCats: []string{"mechanical_hazard"}, + SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 55, + ScenarioDE: "Funkverbindung faellt aus, Person isoliert", TriggerDE: "Funkschatten, leerer Akku", + HarmDE: "Keine Hilfe bei Unfall", AffectedDE: "Alleinarbeitende", ZoneDE: "Abgelegene Bereiche", + DefaultSeverity: 4, DefaultExposure: 3}, + // — Manipulation von Schutzeinrichtungen (HP662-HP664) — + {ID: "HP662", NameDE: "Umgehung von Schutzeinrichtungen", NameEN: "Bypassing safety devices", + RequiredComponentTags: []string{"moving_part"}, GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E20"}, Priority: 85, + ScenarioDE: "Schutzeinrichtung wegen Produktionsdruck umgangen", TriggerDE: "Magnete an Tuerschaltern", + HarmDE: "Alle maschinentypischen Verletzungen", AffectedDE: "Bedienpersonal", ZoneDE: "Gefahrenstellen", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP663", NameDE: "Ueberbrueckung von Sicherheitsschaltern", NameEN: "Bridging safety switches", + RequiredComponentTags: []string{"electrical_part", "programmable"}, + GeneratedHazardCats: []string{"safety_function_failure", "electrical_hazard"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08", "E09"}, Priority: 85, + ScenarioDE: "Sicherheitsschalter elektrisch ueberbrueckt", TriggerDE: "Kurzschlussbruecke", + HarmDE: "Unerkannter Gefahrenzustand", AffectedDE: "Bedienpersonal", ZoneDE: "Sicherheitssteuerung", + DefaultSeverity: 5, DefaultExposure: 3}, + {ID: "HP664", NameDE: "Demontage von Schutzverkleidungen", NameEN: "Removal of safety guards", + RequiredComponentTags: []string{"moving_part", "structural_part"}, + GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"}, + SuggestedMeasureIDs: []string{"M082", "M141"}, SuggestedEvidenceIDs: []string{"E08"}, Priority: 80, + ScenarioDE: "Verkleidungen entfernt und nicht remontiert", TriggerDE: "Fehlende Spezialschrauben", + HarmDE: "Zugang zu laufenden Teilen, Quetschung", AffectedDE: "Bedienpersonal", ZoneDE: "Schutzverkleidungen", + DefaultSeverity: 4, DefaultExposure: 3}, + } +} diff --git a/ai-compliance-sdk/internal/iace/pattern_engine.go b/ai-compliance-sdk/internal/iace/pattern_engine.go index 3bc0e11..300b43c 100644 --- a/ai-compliance-sdk/internal/iace/pattern_engine.go +++ b/ai-compliance-sdk/internal/iace/pattern_engine.go @@ -75,12 +75,19 @@ func NewPatternEngine() *PatternEngine { patterns = append(patterns, GetExtendedHazardPatterns2()...) // HP134-HP173 additional hazards patterns = append(patterns, GetElevatorPatterns()...) // HP174-HP198 elevator/lift patterns = append(patterns, GetAGVAgriPatterns()...) // HP199-HP228 AGV + agricultural - patterns = append(patterns, GetFoodPkgPatterns()...) // HP300-HP334 food + packaging - patterns = append(patterns, GetLaserMedicalPatterns()...) // HP335-HP374 laser + medical + pressure + patterns = append(patterns, GetFoodProcessingPatterns()...) // HP300-HP319 food processing + patterns = append(patterns, GetPackagingPatterns()...) // HP320-HP334 packaging machines + patterns = append(patterns, GetLaserPatterns()...) // HP335-HP349 laser machines + patterns = append(patterns, GetMedicalDevicePatterns()...) // HP350-HP364 medical devices (IEC 60601) + patterns = append(patterns, GetPressureEquipmentPatterns()...) // HP365-HP374 pressure equipment patterns = append(patterns, GetConstructionPatterns()...) // HP400-HP419 construction/crane patterns = append(patterns, GetForestryConveyorPatterns()...) // HP420-HP450 forestry/conveyor patterns = append(patterns, GetPlasticsMetalPatterns()...) // HP500-HP529 plastics + metalworking patterns = append(patterns, GetWeldingGlassTextilePatterns()...) // HP530-HP559 welding + glass + textile + patterns = append(patterns, GetSpecificMachinePatterns()...) // HP730-HP784 pressure/wind/solar/battery/escalator/pool/playground/fitness/laundry/glass + patterns = append(patterns, GetCyberExtendedPatterns()...) // HP800-HP864 software faults/cyber/AI-ML/network/HMI + patterns = append(patterns, GetWorkshopPatterns()...) // HP600-HP664 cross-machine workshop + patterns = append(patterns, GetMaintenanceExtPatterns()...) // HP700-HP764 maintenance lifecycle return &PatternEngine{ resolver: NewTagResolver(), patterns: patterns,