All checks were successful
CI/CD / go-lint (push) Has been skipped
CI/CD / python-lint (push) Has been skipped
CI/CD / nodejs-lint (push) Has been skipped
CI/CD / test-go-ai-compliance (push) Successful in 44s
CI/CD / test-python-backend-compliance (push) Successful in 33s
CI/CD / test-python-document-crawler (push) Successful in 22s
CI/CD / test-python-dsms-gateway (push) Successful in 19s
CI/CD / validate-canonical-controls (push) Successful in 13s
CI/CD / Deploy (push) Successful in 4s
Implements Phases 1-4 of the IACE Hazard-Matching-Engine: - 120 machine components (C001-C120) in 11 categories - 20 energy sources (EN01-EN20) - ~85 tag taxonomy across 5 domains - 44 hazard patterns with AND/NOT matching logic - Pattern engine with tag resolution and confidence scoring - 8 new API endpoints (component-library, energy-sources, tags, patterns, match/apply) - Completeness gate G09 for pattern matching - 320 tests passing (36 new) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
459 lines
20 KiB
Go
459 lines
20 KiB
Go
package iace
|
|
|
|
// HazardPattern defines a rule that matches component/energy tags to
|
|
// hazards, measures, and evidence. When a pattern's required tags are all
|
|
// present (AND) and none of its excluded tags are present (NOT), it fires.
|
|
type HazardPattern struct {
|
|
ID string `json:"id"`
|
|
NameDE string `json:"name_de"`
|
|
NameEN string `json:"name_en"`
|
|
RequiredComponentTags []string `json:"required_component_tags"`
|
|
RequiredEnergyTags []string `json:"required_energy_tags"`
|
|
RequiredLifecycles []string `json:"required_lifecycle_phases"`
|
|
ExcludedComponentTags []string `json:"excluded_component_tags"`
|
|
GeneratedHazardCats []string `json:"generated_hazard_categories"`
|
|
SuggestedMeasureIDs []string `json:"suggested_measure_ids"`
|
|
SuggestedEvidenceIDs []string `json:"suggested_evidence_ids"`
|
|
Priority int `json:"priority"`
|
|
}
|
|
|
|
// GetBuiltinHazardPatterns returns ~44 built-in hazard patterns organized
|
|
// by domain (mechanical, electrical, thermal, hydraulic/pneumatic,
|
|
// noise/vibration, ergonomic, software/control, cyber/network, AI-specific).
|
|
func GetBuiltinHazardPatterns() []HazardPattern {
|
|
return []HazardPattern{
|
|
// ====================================================================
|
|
// Mechanical Patterns (HP001-HP010)
|
|
// ====================================================================
|
|
{
|
|
ID: "HP001", NameDE: "Quetschgefahr durch bewegte Teile", NameEN: "Crush risk from moving parts",
|
|
RequiredComponentTags: []string{"moving_part"},
|
|
RequiredEnergyTags: []string{"kinetic"},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M001", "M005", "M051", "M054"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E08", "E20"},
|
|
Priority: 95,
|
|
},
|
|
{
|
|
ID: "HP002", NameDE: "Einzugsgefahr durch rotierende Teile", NameEN: "Entanglement risk from rotating parts",
|
|
RequiredComponentTags: []string{"rotating_part"},
|
|
RequiredEnergyTags: []string{"rotational"},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M002", "M051", "M053", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
|
Priority: 95,
|
|
},
|
|
{
|
|
ID: "HP003", NameDE: "Schnittgefahr durch Schneidwerkzeuge", NameEN: "Cut risk from cutting tools",
|
|
RequiredComponentTags: []string{"cutting_part"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M003", "M051", "M054", "M131"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
|
Priority: 90,
|
|
},
|
|
{
|
|
ID: "HP004", NameDE: "Klemmgefahr an Quetsch-/Klemmstellen", NameEN: "Pinch risk at clamping points",
|
|
RequiredComponentTags: []string{"pinch_point"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M001", "M004", "M051", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP005", NameDE: "Quetschgefahr an Quetschstellen", NameEN: "Crush risk at crush points",
|
|
RequiredComponentTags: []string{"crush_point"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M001", "M005", "M054"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
|
Priority: 90,
|
|
},
|
|
{
|
|
ID: "HP006", NameDE: "Gefahr durch hohe Kraefte", NameEN: "Risk from high forces",
|
|
RequiredComponentTags: []string{"high_force"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M001", "M005", "M051", "M106"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E07", "E08"},
|
|
Priority: 90,
|
|
},
|
|
{
|
|
ID: "HP007", NameDE: "Gefahr durch hohe Geschwindigkeit", NameEN: "Risk from high speed",
|
|
RequiredComponentTags: []string{"high_speed"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M002", "M051", "M053", "M054"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP008", NameDE: "Absturzgefahr / Herabfallende Teile", NameEN: "Fall/drop risk",
|
|
RequiredComponentTags: []string{"gravity_risk"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M009", "M121", "M131"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E20"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP009", NameDE: "Gefahr durch Spannvorrichtungen", NameEN: "Clamping device risk",
|
|
RequiredComponentTags: []string{"clamping_part"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M004", "M051", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
|
Priority: 80,
|
|
},
|
|
{
|
|
ID: "HP010", NameDE: "Gefahr durch gespeicherte mechanische Energie", NameEN: "Stored mechanical energy risk",
|
|
RequiredComponentTags: []string{"stored_energy"},
|
|
RequiredEnergyTags: []string{"mechanical"},
|
|
GeneratedHazardCats: []string{"mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M010", "M121", "M123"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E20"},
|
|
Priority: 80,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Electrical Patterns (HP011-HP015)
|
|
// ====================================================================
|
|
{
|
|
ID: "HP011", NameDE: "Stromschlaggefahr durch Hochspannung", NameEN: "Electric shock risk from high voltage",
|
|
RequiredComponentTags: []string{"high_voltage"},
|
|
RequiredEnergyTags: []string{"electrical_energy"},
|
|
GeneratedHazardCats: []string{"electrical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M061", "M062", "M063", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E04", "E10"},
|
|
Priority: 95,
|
|
},
|
|
{
|
|
ID: "HP012", NameDE: "Gefahr durch elektrische Komponenten", NameEN: "Risk from electrical components",
|
|
RequiredComponentTags: []string{"electrical_part"},
|
|
RequiredEnergyTags: []string{"electrical_energy"},
|
|
GeneratedHazardCats: []string{"electrical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M061", "M064", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E04", "E10"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP013", NameDE: "Gefahr durch gespeicherte elektrische Energie", NameEN: "Stored electrical energy risk",
|
|
RequiredComponentTags: []string{"stored_energy"},
|
|
RequiredEnergyTags: []string{"electrical_energy"},
|
|
GeneratedHazardCats: []string{"electrical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M062", "M063", "M121", "M123"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E10"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP014", NameDE: "Kurzschluss-/Lichtbogengefahr", NameEN: "Short circuit / arc flash risk",
|
|
RequiredComponentTags: []string{"high_voltage", "electrical_part"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"electrical_hazard", "thermal_hazard"},
|
|
SuggestedMeasureIDs: []string{"M061", "M065", "M131"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E04", "E10"},
|
|
Priority: 90,
|
|
},
|
|
{
|
|
ID: "HP015", NameDE: "EMV-Stoerungsgefahr", NameEN: "EMC interference risk",
|
|
RequiredComponentTags: []string{"electrical_part"},
|
|
RequiredEnergyTags: []string{"electromagnetic"},
|
|
GeneratedHazardCats: []string{"emc_hazard"},
|
|
SuggestedMeasureIDs: []string{"M066", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E10"},
|
|
Priority: 70,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Thermal Patterns (HP016-HP018)
|
|
// ====================================================================
|
|
{
|
|
ID: "HP016", NameDE: "Verbrennungsgefahr durch heisse Oberflaechen", NameEN: "Burn risk from hot surfaces",
|
|
RequiredComponentTags: []string{"high_temperature"},
|
|
RequiredEnergyTags: []string{"thermal"},
|
|
GeneratedHazardCats: []string{"thermal_hazard"},
|
|
SuggestedMeasureIDs: []string{"M071", "M121", "M131"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E20"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP017", NameDE: "Strahlungsgefahr (Laser/optisch)", NameEN: "Radiation risk (laser/optical)",
|
|
RequiredComponentTags: []string{"radiation_risk"},
|
|
RequiredEnergyTags: []string{"radiation"},
|
|
GeneratedHazardCats: []string{"thermal_hazard"},
|
|
SuggestedMeasureIDs: []string{"M072", "M051", "M131"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E20"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP018", NameDE: "Verbrennungsgefahr durch Aktuatoren", NameEN: "Burn risk from actuators",
|
|
RequiredComponentTags: []string{"actuator_part", "high_temperature"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"thermal_hazard"},
|
|
SuggestedMeasureIDs: []string{"M071", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01"},
|
|
Priority: 75,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Hydraulic / Pneumatic Patterns (HP019-HP022)
|
|
// ====================================================================
|
|
{
|
|
ID: "HP019", NameDE: "Hydraulikdruck-Gefahr", NameEN: "Hydraulic pressure hazard",
|
|
RequiredComponentTags: []string{"hydraulic_part"},
|
|
RequiredEnergyTags: []string{"hydraulic_pressure"},
|
|
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
|
|
SuggestedMeasureIDs: []string{"M081", "M082", "M121", "M123"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E05", "E11"},
|
|
Priority: 90,
|
|
},
|
|
{
|
|
ID: "HP020", NameDE: "Pneumatikdruck-Gefahr", NameEN: "Pneumatic pressure hazard",
|
|
RequiredComponentTags: []string{"pneumatic_part"},
|
|
RequiredEnergyTags: []string{"pneumatic_pressure"},
|
|
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
|
|
SuggestedMeasureIDs: []string{"M083", "M084", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E06", "E11"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP021", NameDE: "Gefahr durch gespeicherten Hydraulikdruck", NameEN: "Stored hydraulic pressure risk",
|
|
RequiredComponentTags: []string{"hydraulic_part", "stored_energy"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
|
|
SuggestedMeasureIDs: []string{"M081", "M082", "M123"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E05", "E11"},
|
|
Priority: 90,
|
|
},
|
|
{
|
|
ID: "HP022", NameDE: "Gefahr durch Druckluftspeicher", NameEN: "Stored pneumatic pressure risk",
|
|
RequiredComponentTags: []string{"pneumatic_part", "stored_energy"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
|
|
SuggestedMeasureIDs: []string{"M083", "M084", "M123"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E06", "E11"},
|
|
Priority: 85,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Noise / Vibration Patterns (HP023-HP025)
|
|
// ====================================================================
|
|
{
|
|
ID: "HP023", NameDE: "Laermgefahr", NameEN: "Noise hazard",
|
|
RequiredComponentTags: []string{"noise_source"},
|
|
RequiredEnergyTags: []string{"acoustic"},
|
|
GeneratedHazardCats: []string{"noise_vibration"},
|
|
SuggestedMeasureIDs: []string{"M091", "M131"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E12"},
|
|
Priority: 70,
|
|
},
|
|
{
|
|
ID: "HP024", NameDE: "Vibrationsgefahr", NameEN: "Vibration hazard",
|
|
RequiredComponentTags: []string{"vibration_source"},
|
|
RequiredEnergyTags: []string{"vibration"},
|
|
GeneratedHazardCats: []string{"noise_vibration"},
|
|
SuggestedMeasureIDs: []string{"M092", "M131"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E13"},
|
|
Priority: 65,
|
|
},
|
|
{
|
|
ID: "HP025", NameDE: "Laerm durch rotierende Hochgeschwindigkeitsteile", NameEN: "Noise from high-speed rotating parts",
|
|
RequiredComponentTags: []string{"rotating_part", "high_speed"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"noise_vibration"},
|
|
SuggestedMeasureIDs: []string{"M091", "M092", "M131"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E12", "E13"},
|
|
Priority: 70,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Ergonomic Patterns (HP026-HP028)
|
|
// ====================================================================
|
|
{
|
|
ID: "HP026", NameDE: "Ergonomische Belastung an Bedienstationen", NameEN: "Ergonomic risk at operator stations",
|
|
RequiredComponentTags: []string{"user_interface"},
|
|
RequiredEnergyTags: []string{"ergonomic"},
|
|
GeneratedHazardCats: []string{"ergonomic"},
|
|
SuggestedMeasureIDs: []string{"M126", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E24"},
|
|
Priority: 50,
|
|
},
|
|
{
|
|
ID: "HP027", NameDE: "Ergonomische Belastung bei Wartung in der Hoehe", NameEN: "Ergonomic risk for work at height",
|
|
RequiredComponentTags: []string{"structural_part", "gravity_risk"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"ergonomic", "mechanical_hazard"},
|
|
SuggestedMeasureIDs: []string{"M121", "M131"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E20"},
|
|
Priority: 60,
|
|
},
|
|
{
|
|
ID: "HP028", NameDE: "Fehlbedienungsgefahr", NameEN: "Mode confusion / misoperation risk",
|
|
RequiredComponentTags: []string{"user_interface", "programmable"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"hmi_error", "mode_confusion"},
|
|
SuggestedMeasureIDs: []string{"M126", "M127", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E14", "E24"},
|
|
Priority: 70,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Software / Control Patterns (HP029-HP034)
|
|
// ====================================================================
|
|
{
|
|
ID: "HP029", NameDE: "Software-Fehler in Steuerung", NameEN: "Software fault in controller",
|
|
RequiredComponentTags: []string{"has_software", "programmable"},
|
|
RequiredEnergyTags: []string{},
|
|
ExcludedComponentTags: []string{"has_ai"},
|
|
GeneratedHazardCats: []string{"software_fault"},
|
|
SuggestedMeasureIDs: []string{"M101", "M102", "M103"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP030", NameDE: "Sicherheitsfunktionsversagen", NameEN: "Safety function failure",
|
|
RequiredComponentTags: []string{"safety_device"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"safety_function_failure"},
|
|
SuggestedMeasureIDs: []string{"M104", "M105", "M051"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E07", "E08", "E09"},
|
|
Priority: 95,
|
|
},
|
|
{
|
|
ID: "HP031", NameDE: "Konfigurationsfehler", NameEN: "Configuration error",
|
|
RequiredComponentTags: []string{"programmable"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"configuration_error"},
|
|
SuggestedMeasureIDs: []string{"M145", "M146", "M121"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
|
Priority: 70,
|
|
},
|
|
{
|
|
ID: "HP032", NameDE: "Fehlende Protokollierung / Audit", NameEN: "Missing logging / audit",
|
|
RequiredComponentTags: []string{"has_software"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"logging_audit_failure"},
|
|
SuggestedMeasureIDs: []string{"M142", "M149"},
|
|
SuggestedEvidenceIDs: []string{"E01"},
|
|
Priority: 50,
|
|
},
|
|
{
|
|
ID: "HP033", NameDE: "Update-Fehler / Rollback-Problem", NameEN: "Update failure / rollback problem",
|
|
RequiredComponentTags: []string{"has_software", "programmable"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"update_failure"},
|
|
SuggestedMeasureIDs: []string{"M138", "M141", "M146"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
|
Priority: 65,
|
|
},
|
|
{
|
|
ID: "HP034", NameDE: "Verriegelungs-Umgehungsgefahr", NameEN: "Interlock bypass risk",
|
|
RequiredComponentTags: []string{"interlocked"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"safety_function_failure"},
|
|
SuggestedMeasureIDs: []string{"M051", "M104", "M107"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
|
Priority: 85,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Cyber / Network Patterns (HP035-HP039)
|
|
// ====================================================================
|
|
{
|
|
ID: "HP035", NameDE: "Unbefugter Netzwerkzugriff", NameEN: "Unauthorized network access",
|
|
RequiredComponentTags: []string{"networked"},
|
|
RequiredEnergyTags: []string{"cyber"},
|
|
GeneratedHazardCats: []string{"unauthorized_access"},
|
|
SuggestedMeasureIDs: []string{"M111", "M112", "M113", "M140"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E16", "E17"},
|
|
Priority: 90,
|
|
},
|
|
{
|
|
ID: "HP036", NameDE: "Kommunikationsausfall", NameEN: "Communication failure",
|
|
RequiredComponentTags: []string{"networked", "it_component"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"communication_failure"},
|
|
SuggestedMeasureIDs: []string{"M114", "M115"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E17"},
|
|
Priority: 80,
|
|
},
|
|
{
|
|
ID: "HP037", NameDE: "Firmware-Manipulation", NameEN: "Firmware manipulation",
|
|
RequiredComponentTags: []string{"has_software", "networked"},
|
|
RequiredEnergyTags: []string{"cyber"},
|
|
GeneratedHazardCats: []string{"firmware_corruption"},
|
|
SuggestedMeasureIDs: []string{"M116", "M138", "M146"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E16", "E18"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP038", NameDE: "Drahtlos-Angriff (WiFi/Bluetooth)", NameEN: "Wireless attack (WiFi/Bluetooth)",
|
|
RequiredComponentTags: []string{"wireless"},
|
|
RequiredEnergyTags: []string{"cyber"},
|
|
GeneratedHazardCats: []string{"unauthorized_access"},
|
|
SuggestedMeasureIDs: []string{"M111", "M113", "M140"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E16"},
|
|
Priority: 80,
|
|
},
|
|
{
|
|
ID: "HP039", NameDE: "Supply-Chain-Angriff auf IT-Komponenten", NameEN: "Supply chain attack on IT components",
|
|
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,
|
|
},
|
|
|
|
// ====================================================================
|
|
// AI-Specific Patterns (HP040-HP044)
|
|
// ====================================================================
|
|
{
|
|
ID: "HP040", NameDE: "KI-Fehlklassifikation", NameEN: "AI misclassification",
|
|
RequiredComponentTags: []string{"has_ai"},
|
|
RequiredEnergyTags: []string{"ai_model"},
|
|
GeneratedHazardCats: []string{"false_classification"},
|
|
SuggestedMeasureIDs: []string{"M101", "M102"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
|
Priority: 90,
|
|
},
|
|
{
|
|
ID: "HP041", NameDE: "Model Drift / Concept Drift", NameEN: "Model drift / concept drift",
|
|
RequiredComponentTags: []string{"has_ai"},
|
|
RequiredEnergyTags: []string{"ai_model"},
|
|
GeneratedHazardCats: []string{"model_drift"},
|
|
SuggestedMeasureIDs: []string{"M103"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP042", NameDE: "Data Poisoning / Adversarial Attack", NameEN: "Data poisoning / adversarial attack",
|
|
RequiredComponentTags: []string{"has_ai"},
|
|
RequiredEnergyTags: []string{"cyber", "ai_model"},
|
|
GeneratedHazardCats: []string{"data_poisoning"},
|
|
SuggestedMeasureIDs: []string{"M101", "M116"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E15", "E16"},
|
|
Priority: 85,
|
|
},
|
|
{
|
|
ID: "HP043", NameDE: "Unbeabsichtigte KI-Diskriminierung", NameEN: "Unintended AI bias",
|
|
RequiredComponentTags: []string{"has_ai"},
|
|
RequiredEnergyTags: []string{"ai_model"},
|
|
GeneratedHazardCats: []string{"unintended_bias"},
|
|
SuggestedMeasureIDs: []string{"M101"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
|
Priority: 75,
|
|
},
|
|
{
|
|
ID: "HP044", NameDE: "KI-Sensormanipulation", NameEN: "AI sensor spoofing",
|
|
RequiredComponentTags: []string{"has_ai", "sensor_part"},
|
|
RequiredEnergyTags: []string{},
|
|
GeneratedHazardCats: []string{"sensor_spoofing"},
|
|
SuggestedMeasureIDs: []string{"M101", "M102"},
|
|
SuggestedEvidenceIDs: []string{"E01", "E15"},
|
|
Priority: 80,
|
|
},
|
|
}
|
|
}
|