feat: IACE CE-Compliance Module — Normen, Risikobewertung, Production Lines

Major features:
- 215 norms library with section references + Beuth URLs (A/B1/B2/C norms)
- 173 hazard patterns with detail fields (scenario, trigger, harm, zone)
- Deterministic pattern matching: Component × Lifecycle × Pattern cross-product
- SIL/PL auto-calculation from S×E×P risk graph
- Risk assessment table with editable S/E/P dropdowns
- Production Line Dashboard with animated station flow (Running Dots)
- IACE process flow + norms coverage on start page
- Non-blocking cookie banner, ProcessFlow SSR fix
- 104 Playwright E2E tests passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-07 10:53:26 +02:00
parent 3853a0838a
commit e7f2f98da3
59 changed files with 8326 additions and 525 deletions
@@ -0,0 +1,67 @@
package iace
// builtinFluidPatterns returns HP019-HP022: hydraulic and pneumatic hazard patterns.
func builtinFluidPatterns() []HazardPattern {
return []HazardPattern{
{
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,
ScenarioDE: "Unter Druck stehendes Hydraulikoel tritt durch undichte Verschraubungen oder geplatzte Leitungen aus.",
TriggerDE: "Schlauchbruch, Dichtungsversagen oder Loesen einer Verschraubung unter Betriebsdruck.",
HarmDE: "Hochdruckinjektion durch die Haut (Notfall!), Augen-/Hautkontakt mit heissem Oel, Rutschgefahr.",
AffectedDE: "Wartungspersonal, Bedienpersonal",
ZoneDE: "Schlauchleitungen, Verschraubungen, Zylinderanschluesse, Aggregat",
DefaultSeverity: 4, DefaultExposure: 3,
},
{
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,
ScenarioDE: "Druckluft entweicht unkontrolliert aus Leitungen, Zylindern oder Ventilen und trifft Personen.",
TriggerDE: "Schlauch loest sich, Ventil versagt oder Zylinderdichtung bricht unter Betriebsdruck.",
HarmDE: "Druckluftverletzung (Augen, Ohren), peitschender Schlauch, Verletzung durch unkontrollierten Aktor.",
AffectedDE: "Bedienpersonal, Wartungspersonal",
ZoneDE: "Druckluftleitungen, Zylinderanschluesse, Ventilinseln, Wartungseinheiten",
DefaultSeverity: 3, DefaultExposure: 3,
},
{
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,
ScenarioDE: "Druckspeicher oder gesperrte Zylinder halten nach Abschalten gefaehrlichen Restdruck.",
TriggerDE: "Oeffnen einer Verschraubung oder Demontage eines Zylinders ohne vorherige Druckentlastung.",
HarmDE: "Hochdruckinjektion, unkontrollierte Zylinderbewegung, Oel-Austritt unter Druck.",
AffectedDE: "Wartungspersonal, Elektrofachkraefte",
ZoneDE: "Druckspeicher, gesperrte Zylinder, Sperrventile, Hydraulikaggregate",
DefaultSeverity: 4, DefaultExposure: 2,
},
{
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,
ScenarioDE: "Druckluftbehaelter oder gesperrte Zylinder halten nach Abschalten gefaehrliche Restenergie.",
TriggerDE: "Loesung einer Verschraubung oder Ventilbetaetigung ohne vollstaendige Druckentlastung.",
HarmDE: "Schlagartige Druckfreisetzung, unkontrollierte Aktorbewegung, Gehoeerschaeden durch Druckknall.",
AffectedDE: "Wartungspersonal",
ZoneDE: "Druckluftbehaelter, Zylinderräume, Schlauchkupplungen",
DefaultSeverity: 3, DefaultExposure: 2,
},
}
}