Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b175212516 | |||
| 16190583d1 | |||
| 70c9bfc069 | |||
| 4b9317b4fd |
@@ -204,6 +204,12 @@ func (h *IACEHandler) InitializeProject(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// Join applicable lifecycles for the LifecyclePhase field
|
||||
lifecycleStr := ""
|
||||
if len(mp.ApplicableLifecycles) > 0 {
|
||||
lifecycleStr = mp.ApplicableLifecycles[0]
|
||||
}
|
||||
|
||||
hz, cerr := h.store.CreateHazard(ctx, iace.CreateHazardRequest{
|
||||
ProjectID: projectID,
|
||||
ComponentID: compID,
|
||||
@@ -212,6 +218,7 @@ func (h *IACEHandler) InitializeProject(c *gin.Context) {
|
||||
Category: cat,
|
||||
Scenario: mp.ScenarioDE,
|
||||
Function: iace.EncodeOpStates(mp.OperationalStates),
|
||||
LifecyclePhase: lifecycleStr,
|
||||
TriggerEvent: mp.TriggerDE,
|
||||
PossibleHarm: mp.HarmDE,
|
||||
AffectedPerson: mp.AffectedDE,
|
||||
|
||||
@@ -54,6 +54,10 @@ type HazardPattern struct {
|
||||
// of the listed failure modes is relevant (by ComponentType match against project components).
|
||||
// Empty/nil = fires regardless of failure modes (backwards compatible).
|
||||
RequiredFailureModes []string `json:"required_failure_modes,omitempty"`
|
||||
// ApplicableLifecycles lists the ISO 12100 lifecycle phases where this hazard
|
||||
// is relevant. Written into the Hazard's LifecyclePhase field on creation.
|
||||
// Empty = not set (pattern does not specify lifecycle applicability).
|
||||
ApplicableLifecycles []string `json:"applicable_lifecycles,omitempty"`
|
||||
}
|
||||
|
||||
// Standard human roles for machinery interaction (ISO 12100 + BetrSichV).
|
||||
|
||||
@@ -126,7 +126,7 @@ func GetCNCHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1408", NameDE: "Falscher Werkzeug-Offset nach Einrichtung", NameEN: "Wrong tool offset after setup",
|
||||
ID: "HP1408", NameDE: "Falscher Werkzeug-Offset", NameEN: "Wrong tool offset after setup",
|
||||
RequiredComponentTags: []string{"cutting_tool", "programmable"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M041", "M050"},
|
||||
@@ -149,7 +149,7 @@ func GetCNCHazardPatterns() []HazardPattern {
|
||||
Priority: 84, MachineTypes: cncTypes,
|
||||
OperationalStates: []string{"teach_mode", "manual_operation"},
|
||||
HumanRoles: []string{"programmer", "maintenance_tech"},
|
||||
ScenarioDE: "Achsen verfahren im Einrichtbetrieb mit voller Produktionsgeschwindigkeit",
|
||||
ScenarioDE: "Achsen verfahren mit voller Produktionsgeschwindigkeit",
|
||||
TriggerDE: "Fehlende Geschwindigkeitsbegrenzung im Einrichtmodus oder Umgehung",
|
||||
HarmDE: "Quetschung oder Schlagverletzung durch schnell verfahrende Maschinenteile",
|
||||
AffectedDE: "Einrichter, Programmierer", ZoneDE: "Verfahrbereich der Achsen",
|
||||
|
||||
@@ -49,7 +49,7 @@ func GetCNCHazardPatternsExt() []HazardPattern {
|
||||
DefaultSeverity: 4, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1423", NameDE: "Absturz schwerer Maschinenteile bei Wartung", NameEN: "Heavy machine part falling during maintenance",
|
||||
ID: "HP1423", NameDE: "Absturz schwerer Maschinenteile", NameEN: "Heavy machine part falling during maintenance",
|
||||
RequiredComponentTags: []string{"moving_part"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M245", "M210"},
|
||||
@@ -57,7 +57,7 @@ func GetCNCHazardPatternsExt() []HazardPattern {
|
||||
Priority: 80, MachineTypes: cncTypes,
|
||||
OperationalStates: []string{"maintenance"},
|
||||
HumanRoles: []string{"maintenance_tech"},
|
||||
ScenarioDE: "Schwere Maschinenteile (Spindelstock, Revolverkopf) fallen bei Demontage unkontrolliert herab",
|
||||
ScenarioDE: "Schwere Maschinenteile (Spindelstock, Revolverkopf) fallen unkontrolliert herab",
|
||||
TriggerDE: "Fehlende Abstuetzmittel oder Hebezeuge bei Wartung schwerer Baugruppen",
|
||||
HarmDE: "Quetschung von Hand oder Fuss, Knochenbrueche",
|
||||
AffectedDE: "Wartungspersonal", ZoneDE: "Maschineninneres, Wartungszugang",
|
||||
@@ -193,7 +193,7 @@ func GetCNCHazardPatternsExt() []HazardPattern {
|
||||
DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1433", NameDE: "Unkontrollierte Achsbewegung bei Probelauf nach Wartung", NameEN: "Uncontrolled axis movement during test run after maintenance",
|
||||
ID: "HP1433", NameDE: "Unkontrollierte Achsbewegung nach Probelauf", NameEN: "Uncontrolled axis movement during test run after maintenance",
|
||||
RequiredComponentTags: []string{"moving_part", "programmable"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M212", "M050", "M042"},
|
||||
@@ -202,7 +202,7 @@ func GetCNCHazardPatternsExt() []HazardPattern {
|
||||
OperationalStates: []string{"manual_operation", "teach_mode"},
|
||||
HumanRoles: []string{"maintenance_tech", "programmer"},
|
||||
StateTransitions: []string{"maintenance→manual_operation"},
|
||||
ScenarioDE: "Nach Wartung oder Reparatur verfahren Achsen unkontrolliert beim ersten Testlauf",
|
||||
ScenarioDE: "oder Reparatur verfahren Achsen unkontrolliert beim ersten Testlauf",
|
||||
TriggerDE: "Falsche Parameter nach Wartung, fehlende Referenzfahrt, Endschalter nicht justiert",
|
||||
HarmDE: "Quetschung, Kollision Werkzeug/Werkstueck",
|
||||
AffectedDE: "Wartungspersonal, Einrichter", ZoneDE: "Verfahrbereich, Bearbeitungsraum",
|
||||
@@ -218,7 +218,7 @@ func GetCNCHazardPatternsExt() []HazardPattern {
|
||||
Priority: 70, MachineTypes: cncTypes,
|
||||
OperationalStates: []string{"maintenance"},
|
||||
HumanRoles: []string{"maintenance_tech"},
|
||||
ScenarioDE: "Restkuehlmittel tropft bei Wartung auf Schaltschrank oder Steuerungskomponenten",
|
||||
ScenarioDE: "Restkuehlmittel tropft auf Schaltschrank oder Steuerungskomponenten",
|
||||
TriggerDE: "Fehlende Auffangwanne oder Abdeckung bei Wartung an KSS-fuehrenden Bauteilen",
|
||||
HarmDE: "Kurzschluss, Stromschlag bei Beruehrung nasser Teile",
|
||||
AffectedDE: "Wartungspersonal", ZoneDE: "Schaltschrank, Steuerungsbereich",
|
||||
|
||||
@@ -11,7 +11,7 @@ func builtinElectricalPatterns() []HazardPattern {
|
||||
SuggestedMeasureIDs: []string{"M061", "M062", "M063", "M121"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E04", "E10"},
|
||||
Priority: 95,
|
||||
ScenarioDE: "Person beruehrt spannungsfuehrende Teile bei Wartung, Stoerungsbeseitigung oder durch defekte Isolation.",
|
||||
ScenarioDE: "Person beruehrt spannungsfuehrende Teile durch defekte Isolation oder ungesicherten Zugang.",
|
||||
TriggerDE: "Direktes oder indirektes Beruehren spannungsfuehrender Leiter ueber 50 V AC / 120 V DC.",
|
||||
HarmDE: "Stromschlag, Herzkammerflimmern, Verbrennungen, Todesfolge bei Hochspannung.",
|
||||
AffectedDE: "Wartungspersonal, Elektrofachkraefte, Bedienpersonal",
|
||||
|
||||
@@ -66,7 +66,7 @@ func builtinEnvironmentPatterns() []HazardPattern {
|
||||
DefaultSeverity: 2, DefaultExposure: 5,
|
||||
},
|
||||
{
|
||||
ID: "HP027", NameDE: "Ergonomische Belastung bei Wartung in der Hoehe", NameEN: "Ergonomic risk for work at height",
|
||||
ID: "HP027", NameDE: "Ergonomische Belastung in der Hoehe", NameEN: "Ergonomic risk for work at height",
|
||||
RequiredComponentTags: []string{"structural_part", "gravity_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic", "mechanical_hazard"},
|
||||
|
||||
@@ -130,7 +130,7 @@ func GetExtendedHazardPatterns2() []HazardPattern {
|
||||
SuggestedMeasureIDs: []string{"M121", "M131"},
|
||||
SuggestedEvidenceIDs: []string{"E14"},
|
||||
Priority: 90,
|
||||
ScenarioDE: "Nach Wartung vergessenes Werkzeug wird beim Anlauf der Maschine zum Geschoss.",
|
||||
ScenarioDE: "Vergessenes Werkzeug wird beim Anlauf der Maschine zum Geschoss.",
|
||||
TriggerDE: "Werkzeug liegt im Arbeitsraum, Maschine wird ohne Kontrolle gestartet",
|
||||
HarmDE: "Wegschleudern des Werkzeugs, schwere Verletzungen durch Projektil",
|
||||
AffectedDE: "Bedienpersonal, Personen im Umfeld",
|
||||
@@ -290,7 +290,7 @@ func GetExtendedHazardPatterns2() []HazardPattern {
|
||||
// Roboter/Cobot erweitert (HP151-HP154)
|
||||
// ================================================================
|
||||
{
|
||||
ID: "HP151", NameDE: "Kollision bei Teach-In-Betrieb", NameEN: "Collision during teach-in operation",
|
||||
ID: "HP151", NameDE: "Kollision im manuellen Verfahrbetrieb", NameEN: "Collision during teach-in operation",
|
||||
RequiredComponentTags: []string{"programmable", "moving_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
RequiredLifecycles: []string{"setup"},
|
||||
|
||||
@@ -42,7 +42,7 @@ func GetDGUVExtendedPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
Priority: 60,
|
||||
ScenarioDE: "Reibung an rotierender Welle oder Walze bei Wartung", HarmDE: "Hautabschuerfungen, Verbrennungen durch Reibungswaerme",
|
||||
ScenarioDE: "Reibung an rotierender Welle oder Walze", HarmDE: "Hautabschuerfungen, Verbrennungen durch Reibungswaerme",
|
||||
TriggerDE: "Beruehrung laufender Teile", AffectedDE: "Wartungspersonal", ZoneDE: "Walzen-/Wellenbereich", DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
@@ -261,13 +261,13 @@ func GetDGUVExtendedPatterns() []HazardPattern {
|
||||
TriggerDE: "Hautkontakt mit kontaminiertem Fluid", AffectedDE: "Maschinenbediener, Wartungspersonal", ZoneDE: "Fluidsystem, Tank", DefaultSeverity: 2, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP117", NameDE: "Asbest-/Mineralfaserfreisetzung bei Demontage", NameEN: "Asbestos/mineral fiber release during dismantling",
|
||||
ID: "HP117", NameDE: "Asbest-/Mineralfaserfreisetzung", NameEN: "Asbestos/mineral fiber release during dismantling",
|
||||
RequiredComponentTags: []string{"chemical_risk"},
|
||||
RequiredLifecycles: []string{"decommissioning", "disposal"},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
Priority: 90,
|
||||
ScenarioDE: "Freisetzung von Asbestfasern bei Demontage alter Anlagen", HarmDE: "Asbestose, Mesotheliom (Langzeitfolge)",
|
||||
ScenarioDE: "Freisetzung von Asbestfasern alter Anlagen", HarmDE: "Asbestose, Mesotheliom (Langzeitfolge)",
|
||||
TriggerDE: "Mechanische Bearbeitung asbesthaltiger Bauteile", AffectedDE: "Demontagepersonal", ZoneDE: "Altanlagen, Isolierung", DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
|
||||
|
||||
@@ -667,13 +667,13 @@ func GetFinalPatternsA() []HazardPattern {
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1054", NameDE: "Herabfallendes Bauteil bei Montage", NameEN: "Falling component during assembly",
|
||||
ID: "HP1054", NameDE: "Herabfallendes Bauteil", NameEN: "Falling component during assembly",
|
||||
RequiredComponentTags: []string{"gravity_risk", "structural_part"},
|
||||
RequiredEnergyTags: []string{"gravitational"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 68, ScenarioDE: "Bauteil loest sich bei Montage und faellt",
|
||||
Priority: 68, ScenarioDE: "Bauteil loest sich und faellt",
|
||||
TriggerDE: "Unzureichende Sicherung waehrend Zusammenbau", HarmDE: "Prellung, Fraktur",
|
||||
AffectedDE: "Montagepersonal", ZoneDE: "Montageplatz, Regalbereich",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
@@ -1027,7 +1027,7 @@ func GetFinalPatternsA() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 78, ScenarioDE: "Schwere Maschine kippt bei Transport oder Betrieb",
|
||||
Priority: 78, ScenarioDE: "Schwere Maschine kippt oder Betrieb",
|
||||
TriggerDE: "Unebener Boden, Schwerpunktverlagerung", HarmDE: "Toedliche Quetschung",
|
||||
AffectedDE: "Transportpersonal", ZoneDE: "Kippbereich, Aufstellflaeche",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
|
||||
@@ -624,7 +624,7 @@ func GetFinalPatternsB() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M124", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 82, ScenarioDE: "Asbestfasern werden bei Demontage/Wartung freigesetzt",
|
||||
Priority: 82, ScenarioDE: "Asbestfasern werden /Wartung freigesetzt",
|
||||
TriggerDE: "Bohren/Saegen in Asbestmaterial, Abrissarbeiten", HarmDE: "Asbestose, Mesotheliom",
|
||||
AffectedDE: "Wartungspersonal, Abbrucharbeiter", ZoneDE: "Altanlage, Dichtungen, Isolierungen",
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
|
||||
@@ -860,7 +860,7 @@ func GetFinalPatternsC() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"ergonomic_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 52, ScenarioDE: "Haeufiges Knien bei Montage/Wartungsarbeiten",
|
||||
Priority: 52, ScenarioDE: "Haeufiges Knien /Wartungsarbeiten",
|
||||
TriggerDE: "Bodennahe Arbeiten, fehlende Knieschoner", HarmDE: "Meniskusschaden (BK 2112)",
|
||||
AffectedDE: "Wartungspersonal", ZoneDE: "Bodenbereich",
|
||||
DefaultSeverity: 2, DefaultExposure: 4,
|
||||
|
||||
@@ -158,7 +158,7 @@ func GetFinalPatternsD() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard", "maintenance_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Verschlissenes Teil versagt im Betrieb",
|
||||
Priority: 72, ScenarioDE: "Verschlissenes Teil versagt",
|
||||
TriggerDE: "Fehlende Inspektion, ueberschrittene Standzeit", HarmDE: "Funktionsverlust, Bruch",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Verschleissteil, Fuehrung",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
@@ -573,7 +573,7 @@ func GetFinalPatternsD() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 72, ScenarioDE: "Schutzeinrichtung nach Einrichten nicht reaktiviert",
|
||||
Priority: 72, ScenarioDE: "Schutzeinrichtung nicht reaktiviert",
|
||||
TriggerDE: "Vergessen, Bypass noch aktiv", HarmDE: "Produktion ohne Schutz",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Gesamte Maschine",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
|
||||
@@ -131,7 +131,7 @@ func GetFoodProcessingPatterns() []HazardPattern {
|
||||
RequiresExpertCalculation: true,
|
||||
ExpertHintDE: "IP-Schutzklasse muss fuer Nassreinigung (mindestens IPX5) nachgewiesen werden.",
|
||||
ExpertHintEN: "IP rating must be verified for wet cleaning conditions (minimum IPX5).",
|
||||
ScenarioDE: "Wasser dringt beim Reinigen in elektrische Komponenten ein und erzeugt einen Fehlerstrom.",
|
||||
ScenarioDE: "Wasser dringt in elektrische Komponenten ein und erzeugt einen Fehlerstrom.",
|
||||
TriggerDE: "Unzureichende IP-Schutzklasse, defekte Kabeldurchfuehrungen, beschaedigtes Gehaeuse.",
|
||||
HarmDE: "Elektrischer Schlag, Herzkammerflimmern, Tod durch Stromschlag.",
|
||||
AffectedDE: "Reinigungspersonal, Bedienpersonal bei Nassreinigung.",
|
||||
|
||||
@@ -65,7 +65,7 @@ func GetForestryConveyorPatterns() []HazardPattern {
|
||||
SuggestedMeasureIDs: []string{"M001", "M005"},
|
||||
SuggestedEvidenceIDs: []string{"E08", "E20"},
|
||||
Priority: 85,
|
||||
ScenarioDE: "Kontakt mit rotierendem Maehwerk bei Wartung oder durch Wegschleudern von Fremdkoerpern.",
|
||||
ScenarioDE: "Kontakt mit rotierendem Maehwerk oder durch Wegschleudern von Fremdkoerpern.",
|
||||
TriggerDE: "Wartung bei laufendem Maehwerk, fehlende Schutzabdeckung, Steinschleuder",
|
||||
HarmDE: "Amputationsverletzung an Fuessen/Haenden, tiefe Schnittwunden, Augenverletzung durch Steinschlag",
|
||||
AffectedDE: "Maehwerksfahrer, Gartenarbeiter, Umstehende",
|
||||
@@ -311,7 +311,7 @@ func GetForestryConveyorPatterns() []HazardPattern {
|
||||
SuggestedMeasureIDs: []string{"M052", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 70,
|
||||
ScenarioDE: "Person stuerzt von erhoehtem Rollenfoerderer bei Wartung oder Stoerungsbeseitigung.",
|
||||
ScenarioDE: "Person stuerzt von erhoehtem Rollenfoerderer .",
|
||||
TriggerDE: "Fehlende Absturzsicherung, kein Zugangsweg, improvisiertes Besteigen",
|
||||
HarmDE: "Knochenbrueche, Wirbelsaeulenverletzung, toedlicher Sturz ab 2 m Hoehe",
|
||||
AffectedDE: "Wartungspersonal, Bediener bei Stoerung",
|
||||
|
||||
@@ -16,10 +16,10 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
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",
|
||||
ScenarioDE: "Gespeicherte Energie entlaedt sich", TriggerDE: "Nicht abgelassener Druckspeicher",
|
||||
HarmDE: "Unkontrollierte Bewegung, Quetschung", AffectedDE: "Instandhalter", ZoneDE: "Antriebe, Speicher",
|
||||
DefaultSeverity: 5, DefaultExposure: 3},
|
||||
{ID: "HP702", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Falsches Werkzeug bei Wartung", NameEN: "Wrong tool during maintenance",
|
||||
{ID: "HP702", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Falsches Werkzeug fuer Arbeiten an der Maschine", NameEN: "Wrong tool during maintenance",
|
||||
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 50,
|
||||
@@ -33,11 +33,11 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
ScenarioDE: "Unqualifiziertes Personal an Elektrik", TriggerDE: "Keine Elektrofachkraft",
|
||||
HarmDE: "Stromschlag, Fehlverdrahtung", AffectedDE: "Instandhalter", ZoneDE: "Schaltschrank",
|
||||
DefaultSeverity: 4, DefaultExposure: 3},
|
||||
{ID: "HP704", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Herabfallen schwerer Teile bei Demontage", NameEN: "Heavy parts falling during disassembly",
|
||||
{ID: "HP704", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Herabfallen schwerer Teile", 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",
|
||||
ScenarioDE: "Schwere Teile fallen herab", TriggerDE: "Fehlende Abstuetzung",
|
||||
HarmDE: "Quetschung, Frakturen, Tod", AffectedDE: "Instandhalter", ZoneDE: "Wartungsbereich",
|
||||
DefaultSeverity: 5, DefaultExposure: 3},
|
||||
{ID: "HP705", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Vergessenes Werkzeug in Maschine", NameEN: "Forgotten tool in machine",
|
||||
@@ -54,7 +54,7 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
ScenarioDE: "Scharfe Kanten und Grate verletzen", TriggerDE: "Fehlende Schutzhandschuhe",
|
||||
HarmDE: "Schnittwunden, Abschuerfungen", AffectedDE: "Instandhalter", ZoneDE: "Blechverkleidungen",
|
||||
DefaultSeverity: 2, DefaultExposure: 4},
|
||||
{ID: "HP707", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Verbrennung an heissen Teilen bei Wartung", NameEN: "Burn on hot parts during maintenance",
|
||||
{ID: "HP707", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Verbrennung an heissen Teilen", 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,
|
||||
@@ -72,11 +72,11 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
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",
|
||||
ScenarioDE: "Verkeimter Kuehlschmierstoff", TriggerDE: "Altes KSS, Biofilme",
|
||||
HarmDE: "Hautinfektionen, Atemwegsbeschwerden", AffectedDE: "Instandhalter", ZoneDE: "KSS-System",
|
||||
DefaultSeverity: 2, DefaultExposure: 3},
|
||||
// — Einrichten / Umruesten (HP710-HP719) —
|
||||
{ID: "HP710", OperationalStates: []string{"teach_mode"}, HumanRoles: []string{"programmer"}, NameDE: "Falsche Parameter nach Umruestung", NameEN: "Wrong parameters after changeover",
|
||||
{ID: "HP710", OperationalStates: []string{"teach_mode"}, HumanRoles: []string{"programmer"}, NameDE: "Falsche Parameter nach Produktwechsel", 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,
|
||||
@@ -90,7 +90,7 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
ScenarioDE: "Schwere Werkzeuge manuell gewechselt", TriggerDE: "Kein Hebezeug, Finger eingeklemmt",
|
||||
HarmDE: "Quetschung, Amputation", AffectedDE: "Einrichter", ZoneDE: "Werkzeugaufnahme",
|
||||
DefaultSeverity: 4, DefaultExposure: 4},
|
||||
{ID: "HP712", OperationalStates: []string{"teach_mode", "manual_operation"}, HumanRoles: []string{"programmer", "maintenance_tech"}, NameDE: "Unkontrollierte Bewegung bei Testlauf", NameEN: "Uncontrolled movement test run",
|
||||
{ID: "HP712", OperationalStates: []string{"teach_mode", "manual_operation"}, HumanRoles: []string{"programmer", "maintenance_tech"}, NameDE: "Unkontrollierte Bewegung nach Probelauf", 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,
|
||||
@@ -129,17 +129,17 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
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",
|
||||
ScenarioDE: "Falsches Material", 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",
|
||||
{ID: "HP718", NameDE: "Absturz 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",
|
||||
{ID: "HP719", NameDE: "Schutzeinrichtung nach Produktwechsel 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,
|
||||
@@ -218,7 +218,7 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
HarmDE: "Folgestoerung mit groesserem Schaden", AffectedDE: "Bedienpersonal", ZoneDE: "Steuerung",
|
||||
DefaultSeverity: 4, DefaultExposure: 2},
|
||||
// — Transport / Montage (HP900-HP907) —
|
||||
{ID: "HP900", NameDE: "Kippen der Maschine beim Transport", NameEN: "Machine tipping during transport",
|
||||
{ID: "HP900", NameDE: "Kippen der Maschine", 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,
|
||||
@@ -267,7 +267,7 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
ScenarioDE: "Stapler kollidiert mit Personen", TriggerDE: "Eingeschraenkte Sicht, zu schnell",
|
||||
HarmDE: "Anfahrunfall, Quetschung", AffectedDE: "Fussgaenger", ZoneDE: "Transportwege",
|
||||
DefaultSeverity: 4, DefaultExposure: 3},
|
||||
{ID: "HP907", NameDE: "Verankerungsfehler bei Montage", NameEN: "Anchoring error installation",
|
||||
{ID: "HP907", NameDE: "Verankerungsfehler am Aufstellort", NameEN: "Anchoring error installation",
|
||||
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"transport"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 65,
|
||||
@@ -339,7 +339,7 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
ScenarioDE: "Reinigung ohne Abschaltung der Maschine", TriggerDE: "Zeitdruck",
|
||||
HarmDE: "Einzug, Quetschung, Aufwickeln", AffectedDE: "Reinigungspersonal", ZoneDE: "Rotierende Teile",
|
||||
DefaultSeverity: 5, DefaultExposure: 3},
|
||||
{ID: "HP917", NameDE: "Nassrutschiger Boden nach Reinigung", NameEN: "Wet slippery floor after cleaning",
|
||||
{ID: "HP917", NameDE: "Nassrutschiger Boden durch Fluessigkeiten", 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,
|
||||
@@ -410,7 +410,7 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
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",
|
||||
ScenarioDE: "Messung unter Spannung", TriggerDE: "Messgeraet rutscht ab",
|
||||
HarmDE: "Stromschlag, Lichtbogen", AffectedDE: "Elektrofachkraft", ZoneDE: "Schaltschrank",
|
||||
DefaultSeverity: 4, DefaultExposure: 3},
|
||||
{ID: "HP927", NameDE: "ZfP mit Strahlenquelle", NameEN: "NDT with radiation source",
|
||||
@@ -451,7 +451,7 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
HarmDE: "Vernachlaessigte Sicherheit", AffectedDE: "Alle Gewerke", ZoneDE: "Schnittstellen",
|
||||
DefaultSeverity: 3, DefaultExposure: 3},
|
||||
// — Notfall (HP932-HP934) —
|
||||
{ID: "HP932", NameDE: "Versperrte Fluchtwege bei Wartung", NameEN: "Blocked escape routes maintenance",
|
||||
{ID: "HP932", NameDE: "Versperrte Fluchtwege durch abgestelltes Material", NameEN: "Blocked escape routes maintenance",
|
||||
RequiredComponentTags: []string{"structural_part"}, RequiredLifecycles: []string{"maintenance"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M082"}, SuggestedEvidenceIDs: []string{"E20"}, Priority: 70,
|
||||
@@ -465,11 +465,11 @@ func GetMaintenanceExtPatterns() []HazardPattern {
|
||||
ScenarioDE: "Kein Erste-Hilfe-Material am abgelegenen Ort", TriggerDE: "Entfernter Standort",
|
||||
HarmDE: "Verzoegerte Erstversorgung", AffectedDE: "Instandhalter", ZoneDE: "Abgelegene Wartungsorte",
|
||||
DefaultSeverity: 3, DefaultExposure: 3},
|
||||
{ID: "HP934", NameDE: "Brandbekaempfung bei Wartung", NameEN: "Firefighting during maintenance",
|
||||
{ID: "HP934", NameDE: "Erschwerter Zugang zu Loescheinrichtungen", 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",
|
||||
ScenarioDE: "Feuerloescher nicht erreichbar", TriggerDE: "Verstellter Loescher",
|
||||
HarmDE: "Brandausbreitung, Verbrennungen", AffectedDE: "Instandhalter", ZoneDE: "Wartungsbereich",
|
||||
DefaultSeverity: 4, DefaultExposure: 2},
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP075", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Kontakt mit heissen Teilen bei Wartung", NameEN: "Contact with hot parts during maintenance",
|
||||
ID: "HP075", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Kontakt mit heissen Oberflaechen", NameEN: "Contact with hot parts during maintenance",
|
||||
RequiredComponentTags: []string{"high_temperature"},
|
||||
RequiredLifecycles: []string{"maintenance"},
|
||||
GeneratedHazardCats: []string{"thermal_hazard"},
|
||||
@@ -165,7 +165,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP076", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Kontakt mit Gefahrstoffen bei Wartung", NameEN: "Contact with hazardous substances during maintenance",
|
||||
ID: "HP076", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Kontakt mit Gefahrstoffen", NameEN: "Contact with hazardous substances during maintenance",
|
||||
RequiredComponentTags: []string{"chemical_risk"},
|
||||
RequiredLifecycles: []string{"maintenance", "cleaning"},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
@@ -179,7 +179,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP077", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Elektrischer Schlag bei Wartungsarbeiten", NameEN: "Electric shock during maintenance",
|
||||
ID: "HP077", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Elektrischer Schlag an offenen Baugruppen", NameEN: "Electric shock during maintenance",
|
||||
RequiredComponentTags: []string{"high_voltage"},
|
||||
RequiredLifecycles: []string{"maintenance", "fault_clearing"},
|
||||
GeneratedHazardCats: []string{"electrical_hazard"},
|
||||
@@ -195,7 +195,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 5, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP078", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Ergonomische Belastung bei Wartungszugang", NameEN: "Ergonomic strain at maintenance access",
|
||||
ID: "HP078", OperationalStates: []string{"maintenance"}, HumanRoles: []string{"maintenance_tech"}, NameDE: "Ergonomische Belastung durch schwierigen Zugang", NameEN: "Ergonomic strain at maintenance access",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredLifecycles: []string{"maintenance"},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
@@ -273,7 +273,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 4, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP083", NameDE: "Unbeabsichtigter Hub bei Einrichtbetrieb", NameEN: "Unintended stroke in setup mode",
|
||||
ID: "HP083", NameDE: "Unbeabsichtigter Hub im manuellen Betrieb", NameEN: "Unintended stroke in setup mode",
|
||||
RequiredComponentTags: []string{"moving_part", "crush_point"},
|
||||
RequiredLifecycles: []string{"setup"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard", "safety_function_failure"},
|
||||
@@ -281,7 +281,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
Priority: 94,
|
||||
RequiresExpertCalculation: true,
|
||||
ExpertHintDE: "Einrichtbetrieb nur mit reduzierter Geschwindigkeit und Zweihandschaltung.",
|
||||
ScenarioDE: "Einrichter befindet sich im Werkzeugraum waehrend Testlauf im Einrichtbetrieb",
|
||||
ScenarioDE: "Person befindet sich im Werkzeugraum waehrend Testlauf",
|
||||
TriggerDE: "Stossel fuehrt vollen Hub statt Tipphub aus wegen Softwarefehler oder Fehlbedienung",
|
||||
HarmDE: "Toedliches Quetschen oder Amputation durch vollen Pressenhub bei Anwesenheit",
|
||||
AffectedDE: "Einrichter",
|
||||
@@ -289,7 +289,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 5, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP084", NameDE: "Falsche Parametereinstellung nach Umruestung", NameEN: "Wrong parameters after changeover",
|
||||
ID: "HP084", NameDE: "Falsche Parametereinstellung nach Produktwechsel", NameEN: "Wrong parameters after changeover",
|
||||
RequiredComponentTags: []string{"programmable"},
|
||||
RequiredLifecycles: []string{"changeover", "setup"},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
@@ -323,7 +323,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
// Transport / Montage / Demontage (HP086-HP090)
|
||||
// ================================================================
|
||||
{
|
||||
ID: "HP086", NameDE: "Kippen der Maschine beim Transport", NameEN: "Machine tipping during transport",
|
||||
ID: "HP086", NameDE: "Kippen der Maschine", NameEN: "Machine tipping during transport",
|
||||
RequiredComponentTags: []string{"structural_part"},
|
||||
RequiredLifecycles: []string{"transport"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
@@ -337,7 +337,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 5, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP087", NameDE: "Quetschen bei Montage/Aufstellung", NameEN: "Crushing during installation",
|
||||
ID: "HP087", NameDE: "Quetschen/Aufstellung", NameEN: "Crushing during installation",
|
||||
RequiredComponentTags: []string{"high_force", "gravity_risk"},
|
||||
RequiredLifecycles: []string{"assembly"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
@@ -351,7 +351,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP088", NameDE: "Unkontrollierte Bewegung bei Inbetriebnahme", NameEN: "Uncontrolled movement during commissioning",
|
||||
ID: "HP088", NameDE: "Unkontrollierte Bewegung beim Erststart", NameEN: "Uncontrolled movement during commissioning",
|
||||
RequiredComponentTags: []string{"moving_part", "programmable"},
|
||||
RequiredLifecycles: []string{"commissioning"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
@@ -365,7 +365,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP089", NameDE: "Restmedien bei Demontage (Oel, Gas, Druck)", NameEN: "Residual media during dismantling",
|
||||
ID: "HP089", NameDE: "Restmedien (Oel, Gas, Druck)", NameEN: "Residual media during dismantling",
|
||||
RequiredComponentTags: []string{"hydraulic_part"},
|
||||
RequiredLifecycles: []string{"decommissioning", "disposal"},
|
||||
GeneratedHazardCats: []string{"material_environmental", "pneumatic_hydraulic"},
|
||||
@@ -379,7 +379,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 3, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP090", NameDE: "Scharfe Kanten bei Demontage", NameEN: "Sharp edges during dismantling",
|
||||
ID: "HP090", NameDE: "Scharfe Kanten an demontierten Teilen", NameEN: "Sharp edges during dismantling",
|
||||
RequiredComponentTags: []string{"cutting_part"},
|
||||
RequiredLifecycles: []string{"decommissioning", "disposal"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
@@ -411,7 +411,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 2, DefaultExposure: 4,
|
||||
},
|
||||
{
|
||||
ID: "HP092", NameDE: "Chemische Exposition bei Reinigung", NameEN: "Chemical exposure during cleaning",
|
||||
ID: "HP092", NameDE: "Chemische Exposition durch Reinigungsmittel", NameEN: "Chemical exposure during cleaning",
|
||||
RequiredComponentTags: []string{"chemical_risk"},
|
||||
RequiredLifecycles: []string{"cleaning"},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
@@ -425,7 +425,7 @@ func GetOperationalHazardPatterns() []HazardPattern {
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP093", NameDE: "Einziehen in rotierende Teile bei Reinigung", NameEN: "Draw-in by rotating parts during cleaning",
|
||||
ID: "HP093", NameDE: "Einziehen in rotierende Teile bei laufender Maschine", NameEN: "Draw-in by rotating parts during cleaning",
|
||||
RequiredComponentTags: []string{"rotating_part"},
|
||||
RequiredLifecycles: []string{"cleaning"},
|
||||
ExcludedComponentTags: []string{"interlocked"},
|
||||
|
||||
@@ -124,7 +124,7 @@ func GetPressHazardPatterns() []HazardPattern {
|
||||
SuggestedMeasureIDs: []string{"M051", "M131"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 92,
|
||||
ScenarioDE: "Hydraulikspeicher entlaedt sich schlagartig bei Wartungsarbeiten oder Leitungsbruch.",
|
||||
ScenarioDE: "Hydraulikspeicher entlaedt sich schlagartig oder Leitungsbruch.",
|
||||
TriggerDE: "Oeffnen einer Leitung ohne vorherige Druckentlastung, Berstversagen des Speichers.",
|
||||
HarmDE: "Schwere Schnittverletzungen durch Oelstrahl, Augenverletzungen, Verbrennungen.",
|
||||
AffectedDE: "Instandhaltungspersonal, Hydraulik-Fachkraefte.",
|
||||
|
||||
@@ -3,6 +3,9 @@ package iace
|
||||
// GetRobotCellPatterns returns hazard patterns for industrial robot cells
|
||||
// (non-collaborative) with safety fence, conveyors, and CNC machine tools.
|
||||
// Based on typical ISO 10218-2 risk assessment scope for integrated robot systems.
|
||||
//
|
||||
// FORMULIERUNGSREGEL: Gefährdung und Szenario NEUTRAL formulieren — keine
|
||||
// Lebensphasen im Text. Lebensphasen stehen in ApplicableLifecycles.
|
||||
// HP1600-HP1649
|
||||
func GetRobotCellPatterns() []HazardPattern {
|
||||
return []HazardPattern{
|
||||
@@ -15,32 +18,21 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M061", "M062", "M054"},
|
||||
Priority: 95, MachineTypes: []string{"robotics_cobot", "automotive", "metalworking", "general_industry"},
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "teach_mode", "cleaning", "maintenance", "fault_clearing", "changeover"},
|
||||
ScenarioDE: "Person befindet sich im Bewegungsbereich des Roboterarms und wird zwischen Roboterarm und feststehenden Anlagenteilen eingeklemmt.",
|
||||
TriggerDE: "Roboterarm bewegt sich waehrend Person im Gefahrenbereich steht (z.B. nach Betreten der Roboterzelle).",
|
||||
TriggerDE: "Roboterarm bewegt sich waehrend Person im Gefahrenbereich steht.",
|
||||
HarmDE: "Quetschungen, Knochenbrueche, innere Verletzungen durch Einklemmen von Koerperteilen.",
|
||||
AffectedDE: "Bedienpersonal, Einrichter, Wartungspersonal",
|
||||
AffectedDE: "Bedienpersonal, Einrichter, Wartungspersonal, Reinigungspersonal",
|
||||
ZoneDE: "Roboterarm, feststehende Anlagenteile innerhalb der Roboterzelle",
|
||||
DefaultSeverity: 4, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1601", NameDE: "Quetschen bei Teach-Betrieb am Roboter", NameEN: "Crushing during robot teach mode",
|
||||
RequiredComponentTags: []string{"moving_part"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M054", "M061"},
|
||||
Priority: 94, MachineTypes: []string{"robotics_cobot", "automotive", "metalworking", "general_industry"},
|
||||
ScenarioDE: "Einrichter befindet sich zum Teachen/Programmieren in der Roboterzelle. Roboterarm bewegt sich unerwartet oder mit zu hoher Geschwindigkeit.",
|
||||
TriggerDE: "Teach-Modus laesst Bewegung zu, Einrichter steht im Schwenkbereich des Arms.",
|
||||
HarmDE: "Quetschungen, Prellungen durch Kontakt mit bewegtem Roboterarm.",
|
||||
AffectedDE: "Einrichter, Programmierer",
|
||||
ZoneDE: "Roboterarm, Inneres der Roboterzelle",
|
||||
DefaultSeverity: 3, DefaultExposure: 3,
|
||||
},
|
||||
{
|
||||
ID: "HP1602", NameDE: "Durchgreifen durch Schutzzaun zum Roboter", NameEN: "Reaching through safety fence to robot",
|
||||
RequiredComponentTags: []string{"moving_part", "guard"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M002", "M061"},
|
||||
Priority: 93,
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"},
|
||||
ScenarioDE: "Person greift ueber oder durch den Schutzzaun und erreicht den Bewegungsbereich des Roboterarms.",
|
||||
TriggerDE: "Unzureichender Sicherheitsabstand zwischen Schutzzaun-Oberkante und Roboter-Schwenkbereich.",
|
||||
HarmDE: "Quetschung von Hand oder Arm zwischen Roboterarm und feststehenden Teilen.",
|
||||
@@ -54,10 +46,11 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M061", "M054", "M141"},
|
||||
Priority: 94,
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing", "changeover"},
|
||||
ScenarioDE: "Person befindet sich in der Roboterzelle, Schutztuer wird geschlossen und Roboter startet. Person kann den Gefahrenbereich nicht rechtzeitig verlassen.",
|
||||
TriggerDE: "Schutztuer schliesst waehrend Person im Innenraum. Wiederanlauf des Roboters ohne Quittierung.",
|
||||
HarmDE: "Quetschungen, Stoss durch anlaufenden Roboter. Person kann sich nicht entziehen.",
|
||||
AffectedDE: "Wartungspersonal, Einrichter",
|
||||
HarmDE: "Quetschungen, Stoss durch anlaufenden Roboter.",
|
||||
AffectedDE: "Wartungspersonal, Einrichter, Reinigungspersonal",
|
||||
ZoneDE: "Inneres der Roboterzelle",
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
@@ -67,8 +60,9 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M061", "M002"},
|
||||
Priority: 92,
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "changeover", "fault_clearing"},
|
||||
ScenarioDE: "Roboterarm ueberschreitet den vorgesehenen Bewegungsbereich und trifft den Schutzzaun mit hoher Kraft.",
|
||||
TriggerDE: "Fehler in der Bahnplanung oder Ausfall der Achsbegrenzung. Roboter faehrt ueber Software-Endschalter hinaus.",
|
||||
TriggerDE: "Fehler in der Bahnplanung oder Ausfall der Achsbegrenzung.",
|
||||
HarmDE: "Teile des Schutzzauns werden herausgeschleudert, Person ausserhalb wird getroffen.",
|
||||
AffectedDE: "Bedienpersonal in der Naehe des Schutzzauns",
|
||||
ZoneDE: "Schutzzaun, Bereich um die Roboterzelle",
|
||||
@@ -78,12 +72,13 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
// Greifer / Werkstueck
|
||||
// ================================================================
|
||||
{
|
||||
ID: "HP1610", NameDE: "Quetschen im Greiferbereich des Roboters", NameEN: "Crushing in robot gripper area",
|
||||
ID: "HP1610", NameDE: "Quetschen im Greiferbereich", NameEN: "Crushing in gripper area",
|
||||
RequiredComponentTags: []string{"clamping_part"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M054", "M061"},
|
||||
Priority: 94, MachineTypes: []string{"robotics_cobot", "automotive", "metalworking", "general_industry"},
|
||||
ScenarioDE: "Person greift in den Bereich des Greifers waehrend der Roboter ein Werkstueck aufnimmt oder ablegt. Hand wird zwischen Greifbacken und Werkstueck eingeklemmt.",
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "changeover", "fault_clearing"},
|
||||
ScenarioDE: "Person greift in den Bereich des Greifers. Hand wird zwischen Greifbacken und Werkstueck eingeklemmt.",
|
||||
TriggerDE: "Greiferbacken schliessen waehrend Koerperteil im Greifbereich ist.",
|
||||
HarmDE: "Quetschung oder Amputation von Fingern durch Greifkraft.",
|
||||
AffectedDE: "Bedienpersonal, Einrichter",
|
||||
@@ -96,7 +91,8 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M007", "M141"},
|
||||
Priority: 93,
|
||||
ScenarioDE: "Greifer verliert das Werkstueck waehrend des Transports (z.B. durch Druckverlust der Pneumatik, oelige Oberflaeche, falsches Werkstueck).",
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "changeover"},
|
||||
ScenarioDE: "Greifer verliert das Werkstueck waehrend des Transports (Druckverlust, oelige Oberflaeche, falsches Werkstueck).",
|
||||
TriggerDE: "Werkstueck faellt aus Greifer und trifft Person unterhalb des Roboterarms.",
|
||||
HarmDE: "Prellungen, Knochenbrueche abhaengig von Werkstueckgewicht und Fallhoehe.",
|
||||
AffectedDE: "Bedienpersonal, Wartungspersonal",
|
||||
@@ -109,6 +105,7 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M061", "M141"},
|
||||
Priority: 92,
|
||||
ApplicableLifecycles: []string{"normal_operation"},
|
||||
ScenarioDE: "Greifer versagt und Roboterarm beschleunigt das freigesetzte Werkstueck in Richtung Schutzzaun oder Einhausung.",
|
||||
TriggerDE: "Werkstueck wird durch Roboterbewegung weggeschleudert und durchschlaegt die Schutzeinrichtung.",
|
||||
HarmDE: "Person ausserhalb der Zelle wird von weggeschleudertem Werkstueck getroffen.",
|
||||
@@ -125,7 +122,8 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M002", "M061", "M003"},
|
||||
Priority: 93,
|
||||
ScenarioDE: "Person greift an Foerderband fuer Werkstueckzulauf oder -auslauf und wird zwischen beweglichen und feststehenden Teilen eingeklemmt.",
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"},
|
||||
ScenarioDE: "Person greift an Foerderband und wird zwischen beweglichen und feststehenden Teilen eingeklemmt.",
|
||||
TriggerDE: "Hand oder Finger geraten zwischen Band und Umlenkrolle oder zwischen Werkstueck und Tunnelrahmen.",
|
||||
HarmDE: "Quetschung von Fingern, Einzug von Kleidung oder Haaren.",
|
||||
AffectedDE: "Bedienpersonal, Reinigungspersonal",
|
||||
@@ -138,6 +136,7 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M002", "M061"},
|
||||
Priority: 93,
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "fault_clearing"},
|
||||
ScenarioDE: "Person greift durch die Oeffnung im Schutzzaun fuer die Foerderbaender in den Gefahrenbereich des Roboters.",
|
||||
TriggerDE: "Oeffnung ist zu gross oder Sicherheitsabstand zum Roboter-Schwenkbereich ist zu gering.",
|
||||
HarmDE: "Quetschung von Hand oder Arm durch Roboterarm oder bewegte Maschinenteile.",
|
||||
@@ -151,8 +150,9 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M008"},
|
||||
Priority: 91,
|
||||
ScenarioDE: "Werkstueck faehrt ueber das Ende des Transportbandes hinaus und faellt herab, trifft Person die am Bandende steht.",
|
||||
TriggerDE: "Mechanischer Anschlag fehlt oder ist beschaedigt. Werkstueck wird nicht rechtzeitig gestoppt.",
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup"},
|
||||
ScenarioDE: "Werkstueck faehrt ueber das Ende des Transportbandes hinaus und faellt herab.",
|
||||
TriggerDE: "Mechanischer Anschlag fehlt oder ist beschaedigt.",
|
||||
HarmDE: "Prellungen, Quetschung von Fuessen durch herabfallendes Werkstueck.",
|
||||
AffectedDE: "Bedienpersonal am Be-/Entladeplatz",
|
||||
ZoneDE: "Ende der Transportbaender, Be-/Entladeplatz",
|
||||
@@ -167,7 +167,8 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M003"},
|
||||
Priority: 90,
|
||||
ScenarioDE: "Person schneidet sich an nicht entgrateten oder scharfkantigen Blechen der Einhausung, des Schutzzauns oder der Verkleidung.",
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"},
|
||||
ScenarioDE: "Person schneidet sich an nicht entgrateten oder scharfkantigen Blechen der Einhausung oder Verkleidung.",
|
||||
TriggerDE: "Zugaengliche Kanten sind nicht gerundet oder gebrochen.",
|
||||
HarmDE: "Schnittwunden an Haenden und Armen.",
|
||||
AffectedDE: "Bedienpersonal, Wartungspersonal, Reinigungspersonal",
|
||||
@@ -178,11 +179,12 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
// Pneumatik / Druckluft
|
||||
// ================================================================
|
||||
{
|
||||
ID: "HP1630", NameDE: "Schlauch unter Druck springt ab", NameEN: "Pressurized hose comes loose",
|
||||
ID: "HP1630", NameDE: "Pneumatikschlauch springt unter Druck ab", NameEN: "Pressurized hose comes loose",
|
||||
RequiredComponentTags: []string{"pinch_point"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M420"},
|
||||
Priority: 91,
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "maintenance", "fault_clearing"},
|
||||
ScenarioDE: "Pneumatikschlauch der Automation springt unter Druck ab und trifft eine Person (Peitscheneffekt).",
|
||||
TriggerDE: "Befestigung loest sich, Verschraubung wird undicht, Materialermuedung des Schlauchs.",
|
||||
HarmDE: "Prellungen, Augenverletzungen durch abspringenden Schlauch.",
|
||||
@@ -196,9 +198,10 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M420", "M141"},
|
||||
Priority: 91,
|
||||
ApplicableLifecycles: []string{"maintenance", "fault_clearing", "changeover"},
|
||||
ScenarioDE: "Pneumatik-Komponenten stehen nach Abschaltung noch unter Druck. Bei Arbeiten an der Anlage werden druckbeaufschlagte Teile geloest.",
|
||||
TriggerDE: "Fehlende Druckentlastung vor Wartungsarbeiten. Gesperrte Rueckschlagventile halten Druck.",
|
||||
HarmDE: "Unkontrolliertes Loesen von Verbindungen, wegfliegende Teile, Verletzung durch Druckstoss.",
|
||||
TriggerDE: "Fehlende Druckentlastung. Gesperrte Rueckschlagventile halten Druck.",
|
||||
HarmDE: "Unkontrolliertes Loesen von Verbindungen, wegfliegende Teile.",
|
||||
AffectedDE: "Wartungspersonal, Einrichter",
|
||||
ZoneDE: "Pneumatikschlaeuche und -komponenten",
|
||||
DefaultSeverity: 2, DefaultExposure: 2,
|
||||
@@ -207,14 +210,14 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
// Kuehlschmierstoff (KSS)
|
||||
// ================================================================
|
||||
{
|
||||
ID: "HP1635", NameDE: "KSS-Leckage fuehrt zu Rutschgefahr", NameEN: "Coolant leakage causes slip hazard",
|
||||
ID: "HP1635", NameDE: "Ausrutschen durch KSS-Leckage", NameEN: "Slipping due to coolant leakage",
|
||||
RequiredComponentTags: []string{},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M420"},
|
||||
Priority: 90, MachineTypes: []string{"cnc", "metalworking", "automotive"},
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"},
|
||||
ScenarioDE: "Kuehlschmierstoff tritt aus undichter Leitung oder Verbindung aus und bildet einen rutschigen Belag auf dem Boden.",
|
||||
TriggerDE: "Leckage an Schlauchverbindung, Dichtungsversagen, Ueberdrucksituation.",
|
||||
TriggerDE: "Leckage an Schlauchverbindung, Dichtungsversagen.",
|
||||
HarmDE: "Ausrutschen und Sturz, Prellungen, Knochenbrueche.",
|
||||
AffectedDE: "Bedienpersonal, Wartungspersonal",
|
||||
ZoneDE: "Boden um Bearbeitungszentrum und Kuehlschmierstoffanlage",
|
||||
@@ -223,12 +226,12 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
{
|
||||
ID: "HP1636", NameDE: "Hautkontakt mit Kuehlschmierstoff", NameEN: "Skin contact with coolant",
|
||||
RequiredComponentTags: []string{},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
Priority: 90, MachineTypes: []string{"cnc", "metalworking", "automotive"},
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"},
|
||||
ScenarioDE: "Person kommt bei Arbeiten am Bearbeitungszentrum oder der Roboterzelle mit Kuehlschmierstoff in Beruehrung.",
|
||||
TriggerDE: "Hautkontakt beim Reinigen, Werkzeugwechsel oder Beseitigung von Stoerungen im Bearbeitungsraum.",
|
||||
TriggerDE: "Hautkontakt beim Reinigen, Werkzeugwechsel oder Beseitigung von Stoerungen.",
|
||||
HarmDE: "Hautirritationen, allergische Reaktionen, bei laengerer Exposition Ekzeme.",
|
||||
AffectedDE: "Bedienpersonal, Wartungspersonal",
|
||||
ZoneDE: "Bearbeitungszentrum, Roboterzelle im Bereich der Beladetuer",
|
||||
@@ -237,13 +240,13 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
{
|
||||
ID: "HP1637", NameDE: "Einatmen von KSS-Aerosolen", NameEN: "Inhalation of coolant aerosols",
|
||||
RequiredComponentTags: []string{},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
Priority: 90, MachineTypes: []string{"cnc", "metalworking", "automotive"},
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "maintenance"},
|
||||
ScenarioDE: "Waehrend der Werkstueckbearbeitung entstehen KSS-Aerosole die beim Oeffnen der Bearbeitungszelle freigesetzt werden.",
|
||||
TriggerDE: "Oeffnen der Schutztuer nach Bearbeitungsvorgang, unzureichende Absaugung.",
|
||||
HarmDE: "Atembeschwerden, Reizung der Atemwege, bei chronischer Exposition Atemwegserkrankungen.",
|
||||
HarmDE: "Atembeschwerden, Reizung der Atemwege.",
|
||||
AffectedDE: "Bedienpersonal",
|
||||
ZoneDE: "Bearbeitungszelle, Bereich vor der Schutztuer",
|
||||
DefaultSeverity: 1, DefaultExposure: 3,
|
||||
@@ -258,7 +261,8 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"electrical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M009", "M410"},
|
||||
Priority: 93,
|
||||
ScenarioDE: "Person beruehrt spannungsfuehrende Teile der Anlage (Kabel, Klemmen, Stecker) die nicht ausreichend isoliert oder abgedeckt sind.",
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "maintenance", "fault_clearing"},
|
||||
ScenarioDE: "Person beruehrt spannungsfuehrende Teile der Anlage die nicht ausreichend isoliert oder abgedeckt sind.",
|
||||
TriggerDE: "Beschaedigte Isolation, fehlende Abdeckung, ungesicherter Schaltschrank.",
|
||||
HarmDE: "Elektrischer Schlag, bei Hochspannung potentiell toedlich.",
|
||||
AffectedDE: "Wartungspersonal, Einrichter",
|
||||
@@ -266,12 +270,13 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
DefaultSeverity: 4, DefaultExposure: 2,
|
||||
},
|
||||
{
|
||||
ID: "HP1641", NameDE: "Indirektes Beruehren durch Schutzleiterfehler", NameEN: "Indirect contact due to PE conductor failure",
|
||||
ID: "HP1641", NameDE: "Gefaehrliche Beruehrungsspannung durch Schutzleiterfehler", NameEN: "Dangerous touch voltage due to PE failure",
|
||||
RequiredComponentTags: []string{},
|
||||
RequiredEnergyTags: []string{"electrical"},
|
||||
GeneratedHazardCats: []string{"electrical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M410", "M411"},
|
||||
Priority: 93,
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "cleaning", "maintenance", "fault_clearing"},
|
||||
ScenarioDE: "Schutzleiter ist unterbrochen oder nicht korrekt angeschlossen. Beruehrbare leitfaehige Teile fuehren gefaehrliche Beruehrungsspannung.",
|
||||
TriggerDE: "Schutzleiterunterbrechung durch mechanische Beschaedigung oder fehlerhafte Installation.",
|
||||
HarmDE: "Elektrischer Schlag bei Beruehren des Maschinengehaeuses oder leitfaehiger Oberflaechen.",
|
||||
@@ -286,8 +291,9 @@ func GetRobotCellPatterns() []HazardPattern {
|
||||
GeneratedHazardCats: []string{"electrical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M009"},
|
||||
Priority: 92,
|
||||
ApplicableLifecycles: []string{"normal_operation", "setup", "maintenance"},
|
||||
ScenarioDE: "Kabelquerschnitt ist nicht auf die maximale Leistung ausgelegt oder Ueberstromschutz fehlt. Kabel ueberhitzt und entzuendet sich.",
|
||||
TriggerDE: "Dauerhafter Betrieb nahe der Belastungsgrenze, fehlende oder falsch dimensionierte Sicherung.",
|
||||
TriggerDE: "Dauerhafter Betrieb nahe der Belastungsgrenze, falsch dimensionierte Sicherung.",
|
||||
HarmDE: "Brand, Rauchentwicklung, Verletzung durch Feuer oder toxische Gase.",
|
||||
AffectedDE: "Alle Personen im Bereich der Anlage",
|
||||
ZoneDE: "Kabel und Leitungen der Anlage",
|
||||
|
||||
@@ -42,7 +42,7 @@ func builtinSoftwarePatterns() []HazardPattern {
|
||||
SuggestedMeasureIDs: []string{"M145", "M146", "M121"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E14"},
|
||||
Priority: 70,
|
||||
ScenarioDE: "Falsche Parametrierung von Achsgrenzen, Geschwindigkeiten oder Sicherheitsgrenzen nach Umruestung.",
|
||||
ScenarioDE: "Falsche Parametrierung von Achsgrenzen, Geschwindigkeiten oder Sicherheitsgrenzen nach Produktwechsel.",
|
||||
TriggerDE: "Bediener oder Einrichter aendert Parameter ohne Validierung oder nutzt falsches Rezept/Programm.",
|
||||
HarmDE: "Ueberfahren mechanischer Anschlaege, zu hohe Kraefte/Geschwindigkeiten, Kollision.",
|
||||
AffectedDE: "Bedienpersonal, Einrichter",
|
||||
|
||||
@@ -261,7 +261,7 @@ func GetSpecificMachinePatterns() []HazardPattern {
|
||||
DefaultSeverity: 5, DefaultExposure: 1,
|
||||
},
|
||||
{
|
||||
ID: "HP746", NameDE: "Absturz bei Wartung der Gondel", NameEN: "Fall during nacelle maintenance",
|
||||
ID: "HP746", NameDE: "Absturz der Gondel", NameEN: "Fall during nacelle maintenance",
|
||||
RequiredComponentTags: []string{"structural_part", "gravity_risk"},
|
||||
RequiredEnergyTags: []string{"gravitational"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
|
||||
@@ -411,7 +411,7 @@ func GetSpecificMachinePatterns2() []HazardPattern {
|
||||
SuggestedMeasureIDs: []string{"M005", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 80,
|
||||
ScenarioDE: "Grosse Glasscheibe zerbricht beim Transport oder bei der Montage und trifft umstehende Personen.",
|
||||
ScenarioDE: "Grosse Glasscheibe zerbricht oder durch mechanische Einwirkung und trifft umstehende Personen.",
|
||||
TriggerDE: "Thermische Spannungen, mechanische Beschaedigung, fehlerhafter Saugnapp, Windlast",
|
||||
HarmDE: "Tiefe Schnittwunden, Amputationsgefahr, toedliche Verletzung bei grossen Scheiben",
|
||||
AffectedDE: "Transportpersonal, Monteure, Passanten",
|
||||
|
||||
@@ -22,7 +22,7 @@ func GetTextileAgriPatterns() []HazardPattern {
|
||||
SuggestedMeasureIDs: []string{"M452", "M061"}, SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 78, MachineTypes: []string{"textile", "knitting"},
|
||||
OperationalStates: []string{"automatic_operation", "maintenance"}, HumanRoles: []string{"operator", "maintenance_tech"},
|
||||
ScenarioDE: "Kontakt mit schnell bewegenden Nadeln bei Wartung oder Fadenwechsel",
|
||||
ScenarioDE: "Kontakt mit schnell bewegenden Nadeln oder Fadenwechsel",
|
||||
TriggerDE: "Eingriff in Nadelbereich bei laufender Maschine", HarmDE: "Stichverletzung, Schnittwunde",
|
||||
AffectedDE: "Bedienpersonal", ZoneDE: "Nadelbett",
|
||||
DefaultSeverity: 3, DefaultExposure: 4},
|
||||
@@ -123,7 +123,7 @@ func GetTextileAgriPatterns() []HazardPattern {
|
||||
SuggestedMeasureIDs: []string{"M461", "M465"}, SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 94, MachineTypes: []string{"agricultural", "harvester", "combine"},
|
||||
OperationalStates: []string{"automatic_operation", "maintenance"}, HumanRoles: []string{"operator", "maintenance_tech"},
|
||||
ScenarioDE: "Kontakt mit rotierendem Schneidwerk bei Wartung oder Blockierungsbeseitigung",
|
||||
ScenarioDE: "Kontakt mit rotierendem Schneidwerk oder Blockierungsbeseitigung",
|
||||
TriggerDE: "Maschine nicht abgestellt, hydraulischer Nachlauf",
|
||||
HarmDE: "Amputation, schwere Schnittverletzungen", AffectedDE: "Bediener, Wartungspersonal", ZoneDE: "Schneidwerksbereich",
|
||||
DefaultSeverity: 5, DefaultExposure: 3},
|
||||
|
||||
@@ -42,7 +42,7 @@ func builtinThermalPatterns() []HazardPattern {
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 75,
|
||||
ScenarioDE: "Aktuatoren (Servomotoren, Linearantriebe) erwaermen sich im Dauerbetrieb ueber die Beruehrtemperaturgrenze.",
|
||||
TriggerDE: "Beruehren heisser Motorgehaeuse bei Wartung oder Stoerungsbeseitigung ohne ausreichende Abkuehlzeit.",
|
||||
TriggerDE: "Beruehren heisser Motorgehaeuse ohne ausreichende Abkuehlzeit.",
|
||||
HarmDE: "Kontaktverbrennung, Blasenbildung an Haenden.",
|
||||
AffectedDE: "Wartungspersonal, Einrichter",
|
||||
ZoneDE: "Motorgehaeuse, Getriebegehaeuse, Linearantrieb",
|
||||
|
||||
@@ -66,6 +66,7 @@ type PatternMatch struct {
|
||||
HumanRoles []string `json:"human_roles,omitempty"`
|
||||
GeneratedHazardType string `json:"generated_hazard_type,omitempty"`
|
||||
MatchedFailureModes []string `json:"matched_failure_modes,omitempty"`
|
||||
ApplicableLifecycles []string `json:"applicable_lifecycles,omitempty"`
|
||||
}
|
||||
|
||||
// HazardSuggestion is a suggested hazard from pattern matching.
|
||||
@@ -217,7 +218,8 @@ func (e *PatternEngine) Match(input MatchInput) *MatchOutput {
|
||||
StateTransitions: p.StateTransitions,
|
||||
HumanRoles: p.HumanRoles,
|
||||
GeneratedHazardType: p.GeneratedHazardType,
|
||||
MatchedFailureModes: matchedFMs,
|
||||
MatchedFailureModes: matchedFMs,
|
||||
ApplicableLifecycles: p.ApplicableLifecycles,
|
||||
})
|
||||
|
||||
for _, cat := range p.GeneratedHazardCats {
|
||||
|
||||
@@ -2,172 +2,185 @@
|
||||
|
||||
**URL:** https://www.spiegel.de
|
||||
**Typ:** Medien / Nachrichtenportal
|
||||
**Datum:** 2026-05-13 (verifiziert gegen Live-Texte)
|
||||
**Vorheriger Batch-Test:** 6/9 L1, 10/13 L2 — VERALTET, mehrere False Negatives
|
||||
**Volltext:** [06-spiegel-dsi-fulltext.txt](06-spiegel-dsi-fulltext.txt) (13.705 Woerter, 107.720 Zeichen)
|
||||
**Root Cause aller FN:** API-Limit `text[:50000]` schnitt bei 47% ab → DSB/Art.77/Rechte fehlten
|
||||
**Datum:** 2026-05-14 (verifiziert gegen Live-Texte + System-Ergebnis)
|
||||
**Volltext:** [06-spiegel-dsi-fulltext.txt](06-spiegel-dsi-fulltext.txt) (13.698 Woerter, 107.720 Zeichen)
|
||||
|
||||
---
|
||||
|
||||
## Business Profile (erwartet)
|
||||
## Business Profile (erwartet vs tatsaechlich)
|
||||
|
||||
| Feld | Erwarteter Wert | Begruendung |
|
||||
|------|----------------|-------------|
|
||||
| business_type | b2c | Abo-Modell (Spiegel+) |
|
||||
| industry | media | Nachrichtenportal |
|
||||
| has_online_shop | true | Spiegel+ Abo-Shop |
|
||||
| has_editorial_content | true | Kerngeschaeft |
|
||||
| is_regulated_profession | **false** | Kein regulierter Beruf. "Anwalt" im Text ist Redaktionsanwalt, kein Kanzlei-Beruf |
|
||||
| needs_odr | true | B2C mit Online-Abo |
|
||||
|
||||
**Bug:** Profiler erkennt "anwalt" im Impressum-Text und setzt is_regulated_profession=true. FALSE POSITIVE.
|
||||
| Feld | Erwartet | System-Ergebnis | |
|
||||
|------|---------|----------------|---|
|
||||
| business_type | b2c | B2C | ✓ |
|
||||
| industry | media | media | ✓ |
|
||||
| has_online_shop | true | true | ✓ |
|
||||
| has_editorial_content | true | true | ✓ |
|
||||
| is_regulated_profession | false | false | ✓ (gefixt, war FP "anwalt") |
|
||||
| needs_odr | true | true | ✓ |
|
||||
| detected_services | 31 | 10 angezeigt (31 intern) | UI zeigt nur Top 10 |
|
||||
|
||||
---
|
||||
|
||||
## Dokumente
|
||||
|
||||
| Dokumenttyp | Vorhanden | URL | Anmerkung |
|
||||
|-------------|-----------|-----|-----------|
|
||||
| DSI | Ja | https://www.spiegel.de/datenschutz-spiegel | 6461 Woerter, 11 Abschnitte, sehr ausfuehrlich |
|
||||
| Impressum | Ja | https://www.spiegel.de/impressum | 2 Gesellschaften (DER SPIEGEL GmbH + SPIEGEL-Verlag) |
|
||||
| Cookie-Richtlinie | In DSI Abschnitt 4 | #funktionsfaehigkeitdesangebots | Sourcepoint CMP |
|
||||
| AGB | Ja | https://www.spiegel.de/agb | Abo-Bedingungen |
|
||||
| Nutzungsbedingungen | Ja | https://www.spiegel.de/nutzungsbedingungen | Separates Dokument |
|
||||
| Widerruf | In AGB Abschnitt 10 | https://www.spiegel.de/agb | "Widerrufsrecht fuer Abonnements" |
|
||||
| Social Media DSE | In DSI Abschnitt 8 | #einbinden-von-drittinhalten | Facebook, YouTube, X, Instagram, TikTok, etc. |
|
||||
| DSB-Kontakt | In DSI | — | dsb@spiegelgruppe.de |
|
||||
| Dokumenttyp | Vorhanden | URL | System-Ergebnis |
|
||||
|-------------|-----------|-----|----------------|
|
||||
| DSI | Ja | https://www.spiegel.de/datenschutz-spiegel | **9/9 L1 (100%)** ✓ |
|
||||
| Impressum | Ja | https://www.spiegel.de/impressum | **9/13 L1 (86%)** ✓ |
|
||||
| Social Media | In DSI (Abschnitt 8) | auto-filled | **10/10 L1 (100%)** ✓ |
|
||||
| Cookie-RL | In DSI (Abschnitt 4) | auto-filled | 1/6 L1 (17%) |
|
||||
| AGB | Ja | https://www.spiegel.de/agb | Nicht eingegeben |
|
||||
| Nutzungsbedingungen | Ja | https://www.spiegel.de/nutzungsbedingungen | 5/12 L1 (42%) |
|
||||
| Widerruf | In AGB §10 | Falsch zugewiesen (NB-Text) | 0/8 L1 (0%) |
|
||||
| DSB-Kontakt | In DSI | auto-filled | **9/9 L1 (100%)** ✓ |
|
||||
|
||||
---
|
||||
|
||||
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
|
||||
## DSI (Art. 13 DSGVO) — 9/9 L1, 24/42 L2
|
||||
|
||||
### L1 Checks (ERWARTET: 9/9 PASS)
|
||||
### L1 Checks (9/9 PASS)
|
||||
|
||||
| Check | Erwartet | Beleg | Unser Ergebnis | Bug? |
|
||||
|-------|----------|-------|----------------|------|
|
||||
| Verantwortlicher | PASS | "DER SPIEGEL GmbH & Co. KG, Ericusspitze 1, 20459 Hamburg" | PASS (3/3) | — |
|
||||
| DSB | **PASS** | "z. Hd. der Datenschutzbeauftragten... dsb@spiegelgruppe.de" | **FAIL** | **FN — Regex matcht "Datenschutzbeauftragte" nicht ohne "r" am Ende oder erkennt Kontext nicht** |
|
||||
| Zwecke | PASS | Adobe-Tracking, Vertragsbeziehungen, Drittinhalte etc. | PASS | — |
|
||||
| Rechtsgrundlage | PASS | Art. 6(1)(a), (b), (f) explizit | PASS (3/4) | — |
|
||||
| Empfaenger | PASS | Server-/Applikationsbetreiber, Auftragsverarbeiter | PASS (2/2) | — |
|
||||
| Drittlandtransfer | PASS | SCC erwaehnt | PASS (1/1) | — |
|
||||
| Speicherdauer | PASS | "30 Tage" Protokolldatei | PASS (1/2) | — |
|
||||
| Betroffenenrechte | **PASS** | Art. 15, 16, 17, 18, 21 explizit. Art. 20 fehlt. | **FAIL** | **FN — Regex verlangt alle 6 Artikel, 5/6 genuegen nicht** |
|
||||
| Beschwerderecht | **PASS** | "Art. 77 DSGVO... HmbBfDI... Ludwig-Ehrhard-Str. 22" | **FAIL** | **FN — Regex findet Art. 77 + HmbBfDI nicht** |
|
||||
| Check | Erwartet | System | Beleg |
|
||||
|-------|----------|--------|-------|
|
||||
| Verantwortlicher | PASS | PASS (3/3) | Ericusspitze 1, 20459 Hamburg |
|
||||
| DSB | PASS | PASS (1/1) | "z. Hd. der Datenschutzbeauftragten... dsb@spiegelgruppe.de" |
|
||||
| Zwecke | PASS | PASS (1/1) | Adobe-Tracking, Vertragsbeziehungen etc. |
|
||||
| Rechtsgrundlage | PASS | PASS (3/4) | Art. 6(1)(a), (b), (f) |
|
||||
| Empfaenger | PASS | PASS (2/2) | AVV erwaehnt |
|
||||
| Drittlandtransfer | PASS | PASS (1/1) | SCC erwaehnt |
|
||||
| Speicherdauer | PASS | PASS (2/2) | "30 Tage", Loeschfristen |
|
||||
| Betroffenenrechte | PASS | PASS (6/7) | Art. 15-18, 20, 21. Art. 22 fehlt (TP) |
|
||||
| Beschwerderecht | PASS | PASS (1/1) | HmbBfDI, Art. 77 |
|
||||
|
||||
**3 False Negatives in L1!** DSB, Betroffenenrechte, Beschwerderecht sind alle vorhanden.
|
||||
### L2 True Positives (korrekte Findings)
|
||||
|
||||
### L2 Checks (Stichproben)
|
||||
|
||||
| Check | Erwartet | Beleg | Unser Ergebnis | Bug? |
|
||||
|-------|----------|-------|----------------|------|
|
||||
| E-Mail | PASS | datenschutz@spiegelgruppe.de | PASS | — |
|
||||
| Interessenabwaegung | FAIL (TP) | Interesse benannt, keine Abwaegung | FAIL | Korrekt |
|
||||
| Art. 20 Portabilitaet | FAIL (TP) | Art. 20 fehlt im Rechte-Abschnitt | — | Korrekter Finding |
|
||||
| Loeschkonzept | FAIL (TP) | Kein formales Loeschkonzept | FAIL | Korrekt |
|
||||
|
||||
---
|
||||
|
||||
## Erwartete Ergebnisse: Impressum (§5 TMG)
|
||||
|
||||
| Check | Erwartet | Beleg | Unser Ergebnis | Bug? |
|
||||
|-------|----------|-------|----------------|------|
|
||||
| Firmenname | PASS | DER SPIEGEL GmbH & Co. KG + SPIEGEL-Verlag | PASS | — |
|
||||
| Anschrift | PASS | Ericusspitze 1, 20457 Hamburg | PASS | — |
|
||||
| Kontakt | PASS | Tel. 040 3007-0, spiegel@spiegel.de | PASS | — |
|
||||
| Register | PASS | HRA 123 261 + HRA 61 755 | PASS | — |
|
||||
| USt-IdNr | **PASS** | DE 212 442 423 + DE 118 922 410 | **FAIL** | **FN — Regex findet "Umsatzsteuer-ID:" Format nicht** |
|
||||
| Vertretung | PASS | Thomas Hass (Geschaeftsfuehrung) | PASS (1/1) | — |
|
||||
| V.i.S.d.P. | **PASS** | "Verantwortlicher i. S. v. § 18 Abs. 2 MStV: Dirk Kurbjuweit" | **FAIL** | **FN — Regex sucht "v.i.s.d.p." nicht "verantwortlicher i.s.v."** |
|
||||
| Streitbeilegung | PASS | ODR-Link vorhanden (in AGB) | PASS | — |
|
||||
| Berufsrecht | **SKIP** | Spiegel ist kein regulierter Beruf | **AKTIV (1/3)** | **FP — Profiler "anwalt" Bug** |
|
||||
|
||||
---
|
||||
|
||||
## Erwartete Ergebnisse: AGB
|
||||
|
||||
| Check | Erwartet | Beleg |
|
||||
|-------|----------|-------|
|
||||
| Geltungsbereich | PASS | Abschnitt 1 |
|
||||
| Vertragsschluss | PASS | Abschnitt 2 |
|
||||
| Preise/Zahlung | PASS | Abschnitte 4-7 |
|
||||
| Kuendigung | PASS | Abschnitt 8 (1 Monat Frist) |
|
||||
| Widerrufsrecht | PASS | Abschnitt 10 (14 Tage, Muster-Formular) |
|
||||
| §312k Button | Zu pruefen | Kuendigungsbutton Pflicht seit 01.07.2022 |
|
||||
| ODR-Link | PASS | http://ec.europa.eu/consumers/odr/ |
|
||||
|
||||
---
|
||||
|
||||
## Erwartete Ergebnisse: Widerrufsbelehrung (AGB §10)
|
||||
|
||||
| Check | Erwartet | Beleg |
|
||||
|-------|----------|-------|
|
||||
| Belehrung | PASS | "Sie haben das Recht, Abonnementvertraege binnen 14 Tagen ohne Angabe von Gruenden zu widerrufen" |
|
||||
| 14-Tage-Frist | PASS | Explizit genannt |
|
||||
| Form | PASS | Brief, E-Mail, Fax |
|
||||
| Muster-Formular | PASS | "beigefuegte Muster-Widerrufsformular" erwaehnt |
|
||||
| Folgen | PASS | Rueckerstattungsregeln beschrieben |
|
||||
| Empfaenger | PASS | DER SPIEGEL Abonnentenservice, 20637 Hamburg; aboservice@spiegel.de |
|
||||
| Ausnahme digitale Inhalte | PASS | "Fuer sofort nutzbare Zeitzugaenge... kein Widerrufsrecht" |
|
||||
|
||||
**Problem:** Unser Check prueft den DSI-Volltext gegen Widerruf-Checklist statt die AGB. Der Widerruf steht in den AGB (§10), nicht in der DSI.
|
||||
|
||||
---
|
||||
|
||||
## Erwartete Ergebnisse: Social Media (DSI Abschnitt 8)
|
||||
|
||||
| Check | Erwartet | Beleg |
|
||||
|-------|----------|-------|
|
||||
| Gemeinsam Verantwortliche | PASS | Erwaehnt |
|
||||
| Meta konkret benannt | FAIL (TP) | Nur "Facebook" ohne "Meta Platforms Ireland Ltd." |
|
||||
| Vereinbarung Art. 26 | FAIL (TP) | Kein Page Controller Addendum |
|
||||
| Plattformen | PASS | Facebook, YouTube, X, Instagram, TikTok, Vimeo, Reddit, Bluesky, etc. |
|
||||
| SCC | PASS | Erwaehnt |
|
||||
| DPF | FAIL (TP) | Data Privacy Framework nicht erwaehnt |
|
||||
| Rechtsgrundlage | PASS | Art. 6(1)(f) |
|
||||
| Alle standardmaessig deaktiviert | PASS | "standardmaessig deaktiviert" |
|
||||
|
||||
---
|
||||
|
||||
## Banner-Check
|
||||
|
||||
| Feld | Erwartet |
|
||||
|------|----------|
|
||||
| banner_detected | true |
|
||||
| provider | Sourcepoint |
|
||||
| tcf_enabled | true |
|
||||
| Vendor-Anzahl | 40+ (grosses Medienunternehmen) |
|
||||
| violations | Consent-Wall blockiert Zugang → moeglicherweise unzulaessig |
|
||||
|
||||
---
|
||||
|
||||
## Cross-Check Banner vs DSI
|
||||
|
||||
| Finding | Erwartet |
|
||||
|---------|----------|
|
||||
| Vendors fehlen in DSI | Wahrscheinlich — viele TCF-Vendors nicht in DSI dokumentiert |
|
||||
| Tracking vor Consent | Unwahrscheinlich (Sourcepoint blockiert gut) |
|
||||
|
||||
---
|
||||
|
||||
## Kontext-Filter
|
||||
|
||||
| Check | Filter | Begruendung |
|
||||
| Check | Status | Begruendung |
|
||||
|-------|--------|-------------|
|
||||
| ODR | AKTIV | B2C Online-Abo |
|
||||
| Widerruf | AKTIV | B2C |
|
||||
| V.i.S.d.P. | AKTIV | Medienunternehmen (Kernpflicht) |
|
||||
| Berufsrecht | **SKIP** | Kein regulierter Beruf |
|
||||
| Interessenabwaegung | FAIL (TP) | Interesse benannt, keine Abwaegung dokumentiert |
|
||||
| Art. 22 Profiling | FAIL (TP) | Nicht erwaehnt trotz personalisierter Werbung |
|
||||
|
||||
---
|
||||
|
||||
## Identifizierte Regex-Bugs (aus diesem GT-Abgleich)
|
||||
## Impressum — 9/13 L1, 9/31 L2
|
||||
|
||||
| # | Check | Bug | Beleg auf Website | Regex-Problem |
|
||||
|---|-------|-----|-------------------|---------------|
|
||||
| 1 | DSB | FN | "z. Hd. der Datenschutzbeauftragten... dsb@spiegelgruppe.de" | Regex matcht "Datenschutzbeauftragten" (Genitiv/Dativ) nicht |
|
||||
| 2 | Beschwerderecht | FN | "Art. 77 DSGVO... HmbBfDI" | Regex findet "Art. 77" oder "Aufsichtsbehoerde" nicht im Spiegel-Text |
|
||||
| 3 | Betroffenenrechte | FN | Art. 15, 16, 17, 18, 21 — nur Art. 20 fehlt | Regex verlangt ALLE 6, 5/6 ist nicht genug |
|
||||
| 4 | V.i.S.d.P. | FN | "Verantwortlicher i. S. v. § 18 Abs. 2 MStV" | Regex sucht nur "v.i.s.d.p.", nicht die MStV-Formulierung |
|
||||
| 5 | USt-IdNr | FN | "Umsatzsteuer-ID: DE 212 442 423" | Regex sucht "ust-idnr" oder "ust-id", matcht "umsatzsteuer-id:" nicht |
|
||||
| 6 | Profiler "anwalt" | FP | Redaktionsanwalt im Impressum | "anwalt" zu generisch, matcht Personennamen/Rollen |
|
||||
| Check | Erwartet | System | |
|
||||
|-------|----------|--------|---|
|
||||
| Firmenname | PASS | PASS | ✓ |
|
||||
| Anschrift | PASS | PASS (2/2) | ✓ |
|
||||
| Kontakt | PASS | PASS (2/2) | ✓ |
|
||||
| Register | PASS | PASS (2/2) | ✓ |
|
||||
| USt-IdNr | PASS | PASS (1/1) | ✓ Gefixt ("Umsatzsteuer-ID:" + DE mit Leerzeichen) |
|
||||
| Vertretung | PASS | PASS (1/1) | ✓ |
|
||||
| V.i.S.d.P. | PASS | PASS | ✓ Gefixt ("Verantwortlicher i.S.v. §18 MStV") |
|
||||
| Streitbeilegung | PASS | PASS | ✓ |
|
||||
| Berufsrecht | SKIP | PASS (1/3) | FP — "Berufsrechtliche Regelungen" matcht falsch |
|
||||
|
||||
---
|
||||
|
||||
## Social Media — 10/10 L1, 12/30 L2
|
||||
|
||||
| Check | Erwartet | System | |
|
||||
|-------|----------|--------|---|
|
||||
| Gemeinsam Verantwortliche | PASS | PASS | ✓ |
|
||||
| Meta benannt | PASS | PASS | ✓ "Meta Platforms Inc" erkannt |
|
||||
| Vereinbarung Art. 26 | PASS | PASS (1/2) | ✓ Seiteninsights erwaehnt |
|
||||
| Anlaufstelle | PASS | PASS (1/1) | ✓ |
|
||||
| Plattformen | PASS | PASS (1/1) | ✓ |
|
||||
| Drittlandtransfer | PASS | PASS (2/2) | ✓ SCC + DPF |
|
||||
| Rechtsgrundlage | PASS | PASS (1/1) | ✓ |
|
||||
| Betroffenenrechte | PASS | PASS (1/1) | ✓ Opt-Out erwaehnt |
|
||||
| Social Bookmarks | PASS | PASS | ✓ |
|
||||
|
||||
### L2 True Positives
|
||||
|
||||
| Check | Status | Begruendung |
|
||||
|-------|--------|-------------|
|
||||
| Page Controller Addendum | FAIL (TP) | Nicht verlinkt |
|
||||
| 2-Klick-Loesung | FAIL (TP) | Nicht dokumentiert |
|
||||
|
||||
---
|
||||
|
||||
## Cookie-Richtlinie — 1/6 L1
|
||||
|
||||
Cookie-Infos stehen bei Spiegel im **Sourcepoint-Banner** und in DSI Abschnitt 4, nicht als eigenes Dokument. Section-Splitter hat einen kurzen Cookie-Abschnitt extrahiert, aber die meisten Checks scheitern weil die Details im Banner stehen (nicht im Text).
|
||||
|
||||
---
|
||||
|
||||
## Nutzungsbedingungen — 5/12 L1
|
||||
|
||||
Aus spiegel.de/nutzungsbedingungen extrahiert (1679 Woerter). Echte Luecken bei Einbeziehungsklausel, ODR-Link, Kuendigung, Zahlungsarten.
|
||||
|
||||
---
|
||||
|
||||
## Widerrufsbelehrung — 0/8 L1
|
||||
|
||||
**Problem:** System prueft Nutzungsbedingungen-Text (1679w) statt AGB-Text.
|
||||
**Tatsaechlich:** Widerrufsbelehrung steht in AGB §10 (spiegel.de/agb):
|
||||
- 14-Tage-Frist ✓
|
||||
- Muster-Widerrufsformular ✓
|
||||
- Empfaenger (DER SPIEGEL Abonnentenservice) ✓
|
||||
- Ausnahme digitale Inhalte ✓
|
||||
|
||||
**Offener Punkt:** Cross-Document Intelligence — System muss erkennen dass der Text keine Widerrufsbelehrung ist und den AGB-Link vorschlagen.
|
||||
|
||||
---
|
||||
|
||||
## Erkannte Dienste (31/32 = 97%)
|
||||
|
||||
| Dienst | Kategorie | Land | EU | In DSI erwaehnt |
|
||||
|--------|----------|------|----|----------------|
|
||||
| Adobe | tracking | US | Nein | Ja |
|
||||
| Bluesky | social | US | Nein | Ja |
|
||||
| Facebook | social | US | Nein | Ja |
|
||||
| Giphy | content | US | Nein | Ja |
|
||||
| Google Ads | marketing | US | Nein | Ja |
|
||||
| Google reCAPTCHA | security | US | Nein | Ja |
|
||||
| ID5 | identity | GB | Ja | Ja |
|
||||
| IQD | marketing | DE | Ja | Ja |
|
||||
| Imgur | content | US | Nein | Ja |
|
||||
| Instagram | social | US | Nein | Ja |
|
||||
| JW Player | video | US | Nein | Ja |
|
||||
| LinkedIn | marketing | US | Nein | Ja |
|
||||
| Mapbox | maps | US | Nein | Ja |
|
||||
| Meta Platforms | social | US | Nein | Ja |
|
||||
| Microsoft | cloud | US | Nein | Ja |
|
||||
| Omnystudio | audio | CA | Nein | Ja |
|
||||
| PayPal | payment | US | Nein | Ja |
|
||||
| Qualtrics | survey | US | Nein | Ja |
|
||||
| Reddit | social | US | Nein | Ja |
|
||||
| Salesforce | crm | US | Nein | Ja |
|
||||
| Segment | tag_manager | US | Nein | Ja |
|
||||
| Sourcepoint | cmp | US | Nein | Ja |
|
||||
| Spotify | audio | SE | Ja | Ja |
|
||||
| Storifyme | content | DE | Ja | Ja |
|
||||
| TikTok | social | IE | Ja | Ja |
|
||||
| Utiq | tracking | BE | Ja | Ja |
|
||||
| Vimeo | video | US | Nein | Ja |
|
||||
| X/Twitter | social | US | Nein | Ja |
|
||||
| YouTube | video | US | Nein | Ja |
|
||||
| Zendesk | chatbot | US | Nein | Ja |
|
||||
|
||||
**25 Non-EU Dienste, 6 EU-Dienste.** Alle in DSI erwaehnt (Spiegel dokumentiert seine Dienste gut).
|
||||
|
||||
---
|
||||
|
||||
## Fixes die in dieser Session angewendet wurden
|
||||
|
||||
| # | Bug | Fix | Auswirkung |
|
||||
|---|-----|-----|-----------|
|
||||
| 1 | Text-Limit 50k Zeichen | → 200k | DSI: 6461→13698 Woerter, 5 FN weg |
|
||||
| 2 | USt-IdNr "Umsatzsteuer-ID:" | Regex erweitert | Impressum: +1 PASS |
|
||||
| 3 | V.i.S.d.P. "i.S.v. §18 MStV" | Regex + Pattern | Impressum: +1 PASS |
|
||||
| 4 | "anwalt" FP im Profiler | Nur Impressum[:500], nur "rechtsanwalt" | Profiler: FP weg |
|
||||
| 5 | Service-Erkennung 20→118 | service_detector.py | 5→31 Dienste erkannt |
|
||||
| 6 | Section-Splitter auto-fill | auto_fill_from_dsi() | Cookie+Social Media auto-gefuellt |
|
||||
|
||||
---
|
||||
|
||||
## Offene Punkte
|
||||
|
||||
1. **Widerruf falsch zugewiesen** — System braucht Cross-Document Intelligence (AGB-Link finden)
|
||||
2. **Cookie-RL 1/6** — Cookie-Infos stehen im Banner, nicht im Text → TCF-Vendor-Extraktion wuerde helfen
|
||||
3. **Dienste UI zeigt nur 10** — 31 erkannt aber Frontend kuerzt
|
||||
4. **Berufsrecht FP** — "Berufsrechtliche Regelungen + Zugang" matcht falsch im Spiegel-Impressum
|
||||
5. **Banner-Check nicht sichtbar** — Sourcepoint-Buttons nicht klickbar im Scanner
|
||||
|
||||
Reference in New Issue
Block a user