feat(iace): manufacturer safety feature library (Stufe A — 50+ entries)
Adds a curated database of safety-relevant features for the major
manufacturers across mechanical/plant engineering, written entirely in
own words with norm anchors. No verbatim manufacturer texts — therefore
no copyright issue:
- Markennennung (§ 23 MarkenG nominative use) is permitted.
- Fakten ueber Produkt-Sicherheitsfunktionen are not protected by § 2
UrhG (only Werke, not facts).
- NormReferences contain only the identifiers (e.g. "EN ISO 13849-1
PLd Kat.3"), never the norm text itself.
Coverage (52 entries across 12 categories):
Industrieroboter (10): FANUC DCS, KUKA SafeOperation, ABB SafeMove,
Yaskawa FSU, Staeubli CS9, Kawasaki Cubic-S, Mitsubishi MELFA,
Universal Robots PolyScope, Doosan PRS, Comau SafeNet
CNC/WZM (8): DMG MORI, Mazak, TRUMPF, Okuma, Hermle, Heidenhain
SPLC, GROB, Heller
Pneumatik (4): Festo, SMC, AVENTICS, Parker
Hydraulik (3): Bosch Rexroth, HAWE, HYDAC
Safety-PLC / Sicherheitstechnik (8): PILZ, SICK, Schmersal, Euchner,
Leuze, Phoenix Contact, Banner, Wieland
Standard-PLC (5): Siemens, Beckhoff, Rockwell, Schneider, B&R
Pressen (3): Schuler, Bruderer, AIDA
Spritzguss (3): Arburg, KraussMaffei, ENGEL
Verpackung (2): Krones, Bosch Packaging/Syntegon
Laser/Schweissen (3): Bystronic, Amada, Fronius
Foerdertechnik (2): Interroll, SEW EURODRIVE
Engine integration:
- LookupManufacturerFeaturesInText() scans the project narrative for
any of the manufacturer aliases (case-insensitive, umlaut-tolerant).
- Init-Handler appends matched feature clarifications to the relevant
hazard's "Mit Anlagenbauer zu klaeren:" block — for the right
HazardCategory only (e.g. FANUC DCS only on mechanical_hazard).
- For a Bremse project narrative mentioning "Fanuc Robodrill", the
engine now adds clarification questions like "Ist DCS am Roboter
konfiguriert?" to relevant mechanical hazards automatically.
Tests: 7 new pin tests — manufacturer count, norm prefixes, FANUC/KUKA
detection in narrative, umlaut robustness (Staeubli vs Staubli).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -219,9 +219,32 @@ func (h *IACEHandler) InitializeProject(c *gin.Context) {
|
||||
// onto the hazard so the operator knows what to verify
|
||||
// with the Anlagenbauer.
|
||||
desc := mp.ScenarioDE
|
||||
if len(mp.ClarificationQuestionsDE) > 0 {
|
||||
clarBuckets := mp.ClarificationQuestionsDE
|
||||
// Manufacturer-specific clarifications: if the narrative
|
||||
// mentions a known manufacturer (FANUC/KUKA/Siemens/...),
|
||||
// append its feature-specific questions to the matching
|
||||
// hazard categories. Markennennung ist nominative use
|
||||
// (§ 23 MarkenG), Fakten ueber Safety-Features sind nicht
|
||||
// urheberrechtlich geschuetzt.
|
||||
for _, mf := range iace.LookupManufacturerFeaturesInText(narrativeText) {
|
||||
applies := len(mf.AppliesToHazardCats) == 0
|
||||
for _, hc := range mf.AppliesToHazardCats {
|
||||
if hc == cat {
|
||||
applies = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !applies {
|
||||
continue
|
||||
}
|
||||
prefix := mf.Manufacturer + " (" + mf.FeatureName + "): "
|
||||
for _, q := range mf.Clarifications {
|
||||
clarBuckets = append(clarBuckets, prefix+q)
|
||||
}
|
||||
}
|
||||
if len(clarBuckets) > 0 {
|
||||
desc += "\n\nMit Anlagenbauer zu klaeren:"
|
||||
for _, q := range mp.ClarificationQuestionsDE {
|
||||
for _, q := range clarBuckets {
|
||||
desc += "\n- " + q
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user