package iace

// Body-part-specific crush hazards at lift / hoist / scissor-lift endstops.
// Bridges the gap that the Kistenhubgeraet re-init exposed: the abstract
// "Bremse versagt bei Absenkbewegung" pattern fires, but the concrete
// "Fuss unter absenkender Hubplattform" body-part variant did not exist.
//
// Each pattern restricts to lift-family machine types via MachineTypes,
// so a press / CNC / textile project does not pick them up. Mitigations
// reference the new M600-M604 (lift endstop) library plus the existing
// M001 (geometry), M002 (safety distance), M141 (warning sign).

func GetLiftEndstopPatterns() []HazardPattern {
	liftTypes := []string{"lift", "hoist", "elevator", "scissor_lift"}
	return []HazardPattern{
		{
			ID:                    "HP2100",
			NameDE:                "Fuss-Quetschung unter absenkender Hubplattform am Bodenanschlag",
			NameEN:                "Foot crush under descending lift platform at floor stop",
			RequiredComponentTags: []string{"crush_point", "gravity_risk", "person_under_load"},
			RequiredEnergyTags:    []string{"gravitational"},
			MachineTypes:          liftTypes,
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M600", "M601", "M604", "M605", "M606", "M141"},
			Priority:              92,
			ScenarioDE: "Fuss oder Bein des Bedieners gelangt waehrend des Absenkvorgangs unter die " +
				"Hubplattform. Bei Erreichen der unteren Endlage wird der Fuss zwischen Plattform " +
				"und Boden gequetscht.",
			TriggerDE:           "Unsachgemaesse Position des Bedieners beim Be-/Entladen, fehlende Schaltleiste, fehlender Trittschutz",
			HarmDE:              "Fussquetschung, Mittelfussfraktur, Zehenamputation",
			AffectedDE:          "Bediener, Wartungspersonal",
			ZoneDE:              "Bodenbereich unter Hubplattform, umlaufende Spalte",
			DefaultSeverity:     4,
			DefaultExposure:     3,
			DefaultAvoidability: 2,
			ISO12100Section:     "6.3.5.5 Quetschen — Mindestabstaende",
			ClarificationQuestionsDE: []string{
				"Ist eine umlaufende Quetsch-Schaltleiste an der Plattformunterkante verbaut?",
				"Ist die Hubgeschwindigkeit am unteren Endanschlag auf <=15 mm/s reduziert (siehe M600)?",
				"Verhindert ein Trittblech / Unterfahrschutz das Hineinfahren von Fuessen?",
			},
		},
		{
			ID:                    "HP2103",
			NameDE:                "Bestimmungswidrige Personenbefoerderung auf Hebezeug",
			NameEN:                "Misuse: transporting persons on a lifting device",
			RequiredComponentTags: []string{"gravity_risk"},
			RequiredEnergyTags:    []string{"gravitational"},
			MachineTypes:          liftTypes,
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M601", "M141"},
			Priority:              90,
			ScenarioDE: "Die Hebevorrichtung wird bestimmungswidrig zum Heben oder Befoerdern von " +
				"Personen verwendet (z.B. Mitfahren auf der Plattform). Absturz aus der Hoehe oder " +
				"Quetschen bei unkontrollierter Bewegung.",
			TriggerDE:           "Fehlendes Verbotsschild, keine konstruktive Verhinderung (z.B. zu kleine Standflaeche/Haltepunkte), unzureichende Unterweisung",
			HarmDE:              "Absturz aus der Hoehe, schwere Verletzungen, Tod",
			AffectedDE:          "Bediener, Dritte",
			ZoneDE:              "Hubplattform / Lastaufnahme",
			DefaultSeverity:     4,
			DefaultExposure:     1,
			DefaultAvoidability: 2,
			ISO12100Section:     "6.4.5 Vernuenftigerweise vorhersehbare Fehlanwendung",
			ClarificationQuestionsDE: []string{
				"Ist ein Verbotsschild 'Personenbefoerderung verboten' (EN ISO 7010 P-Zeichen) angebracht?",
				"Verhindert die Konstruktion das Mitfahren (z.B. zu kleine Standflaeche, keine Haltepunkte)?",
			},
		},
		{
			ID:                    "HP2101",
			NameDE:                "Hand- oder Koerper-Quetschung gegen feste Struktur beim Hochfahren der Hubeinheit",
			NameEN:                "Hand or body crush against fixed structure during lift upward travel",
			RequiredComponentTags: []string{"crush_point", "gravity_risk"},
			RequiredEnergyTags:    []string{"gravitational"},
			MachineTypes:          liftTypes,
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M602", "M603", "M600", "M605", "M141"},
			Priority:              90,
			ScenarioDE: "Beim Hochfahren der Last gelangen Hand oder Koerperteile des Bedieners " +
				"zwischen die hoechste Position der Hubeinheit (z.B. mit beladener Palette) und " +
				"eine feste Struktur oberhalb (Decke, Vorbau, Querbalken einer umschliessenden Anlage).",
			TriggerDE:           "Eingriff in den Verfahrweg waehrend Hubvorgang, fehlende konstruktive Begrenzung der Endlage",
			HarmDE:              "Hand- oder Armquetschung, im Extremfall Brustkorbkompression",
			AffectedDE:          "Bediener, Einrichter, Wartungspersonal",
			ZoneDE:              "Oberhalb hoechster Hubposition, Vorbau/Decke der umschliessenden Anlage",
			DefaultSeverity:     4,
			DefaultExposure:     2,
			DefaultAvoidability: 2,
			ISO12100Section:     "6.3.5.5 Quetschen — Mindestabstaende",
			ClarificationQuestionsDE: []string{
				"Welcher Mindestabstand zu festen Strukturen oberhalb der hoechsten Hubposition ist gegeben? (Empfehlung: 120 mm fuer Kopf, 100 mm fuer Hand)",
				"Ist der Tippbetrieb (Hold-to-run) durch ein Testprotokoll mit Stop-Zeit-Messung verifiziert?",
				"Existiert eine redundante Hardware-Endlage zusaetzlich zur Software-Begrenzung?",
			},
		},
		{
			ID:                    "HP2102",
			NameDE:                "Quetschung Bein/Koerper zwischen Hubeinheit und seitlicher Struktur",
			NameEN:                "Leg/body crush between lift unit and lateral structure",
			RequiredComponentTags: []string{"crush_point", "gravity_risk", "moving_part"},
			RequiredEnergyTags:    []string{"gravitational"},
			MachineTypes:          liftTypes,
			GeneratedHazardCats:   []string{"mechanical_hazard"},
			SuggestedMeasureIDs:   []string{"M602", "M601", "M605", "M141"},
			Priority:              85,
			ScenarioDE: "Person befindet sich seitlich neben der Hubeinheit und wird waehrend " +
				"der Bewegung gegen eine feste Struktur (Regalwand, Stuetze, andere Anlage) gequetscht.",
			TriggerDE:           "Aufenthalt in Quetschzone bei Bewegung, fehlende Absperrung",
			HarmDE:              "Beinfraktur, Beckenquetschung",
			AffectedDE:          "Bediener, vorbeigehende Personen",
			ZoneDE:              "Seitlicher Bereich neben Hubeinheit, Lichte Weite zu festen Strukturen",
			DefaultSeverity:     4,
			DefaultExposure:     2,
			DefaultAvoidability: 2,
			ISO12100Section:     "6.3.5.5 Quetschen — Mindestabstaende",
			ClarificationQuestionsDE: []string{
				"Welcher Sicherheitsabstand zu seitlichen festen Strukturen ist gegeben (Empfehlung 500 mm Koerperdurchgang)?",
				"Ist der Bereich seitlich der Hubeinheit als Gefahrenzone markiert oder abgeschrankt?",
			},
		},
	}
}
