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:
@@ -25,6 +25,17 @@ type PatternMatch struct {
|
||||
PatternName string `json:"pattern_name"`
|
||||
Priority int `json:"priority"`
|
||||
MatchedTags []string `json:"matched_tags"`
|
||||
// Detail fields from the pattern definition
|
||||
ScenarioDE string `json:"scenario_de,omitempty"`
|
||||
TriggerDE string `json:"trigger_de,omitempty"`
|
||||
HarmDE string `json:"harm_de,omitempty"`
|
||||
AffectedDE string `json:"affected_de,omitempty"`
|
||||
ZoneDE string `json:"zone_de,omitempty"`
|
||||
DefaultSeverity int `json:"default_severity,omitempty"`
|
||||
DefaultExposure int `json:"default_exposure,omitempty"`
|
||||
HazardCats []string `json:"hazard_categories,omitempty"`
|
||||
ExpertHintDE string `json:"expert_hint_de,omitempty"`
|
||||
RequiresExpert bool `json:"requires_expert,omitempty"`
|
||||
}
|
||||
|
||||
// HazardSuggestion is a suggested hazard from pattern matching.
|
||||
@@ -61,6 +72,7 @@ func NewPatternEngine() *PatternEngine {
|
||||
patterns = append(patterns, GetCobotHazardPatterns()...) // HP059-HP065 cobot-specific
|
||||
patterns = append(patterns, GetOperationalHazardPatterns()...) // HP066-HP093 operational states
|
||||
patterns = append(patterns, GetDGUVExtendedPatterns()...) // HP094-HP133 DGUV themes
|
||||
patterns = append(patterns, GetExtendedHazardPatterns2()...) // HP134-HP173 additional hazards
|
||||
return &PatternEngine{
|
||||
resolver: NewTagResolver(),
|
||||
patterns: patterns,
|
||||
@@ -116,10 +128,20 @@ func (e *PatternEngine) Match(input MatchInput) *MatchOutput {
|
||||
}
|
||||
|
||||
matchedPatterns = append(matchedPatterns, PatternMatch{
|
||||
PatternID: p.ID,
|
||||
PatternName: p.NameDE,
|
||||
Priority: p.Priority,
|
||||
MatchedTags: matchedTags,
|
||||
PatternID: p.ID,
|
||||
PatternName: p.NameDE,
|
||||
Priority: p.Priority,
|
||||
MatchedTags: matchedTags,
|
||||
ScenarioDE: p.ScenarioDE,
|
||||
TriggerDE: p.TriggerDE,
|
||||
HarmDE: p.HarmDE,
|
||||
AffectedDE: p.AffectedDE,
|
||||
ZoneDE: p.ZoneDE,
|
||||
DefaultSeverity: p.DefaultSeverity,
|
||||
DefaultExposure: p.DefaultExposure,
|
||||
HazardCats: p.GeneratedHazardCats,
|
||||
ExpertHintDE: p.ExpertHintDE,
|
||||
RequiresExpert: p.RequiresExpertCalculation,
|
||||
})
|
||||
|
||||
for _, cat := range p.GeneratedHazardCats {
|
||||
|
||||
Reference in New Issue
Block a user