namespace LehrerApp.Core.Models; /// /// Gefährdungsbeurteilung zu einem Experiment (fachspezifisch, v.a. Chemie/Naturwissenschaften). /// Lebt NICHT als eigene LiteDB-Collection/Repository, sondern wird als JSON serialisiert und /// über die bestehende -Infrastruktur an eine /// angehängt (Dateiname endet auf ".gbu.json", siehe TODO.md 4.2) — das reicht für Bearbeiten, /// Anzeigen und PDF-Export, ohne eine weitere synchronisierte Entität samt Repository/DI-Wiring /// einzuführen (bewusste Scope-Entscheidung, siehe TODO.md). /// public class HazardAssessment { public string Title { get; set; } = ""; /// Klassenstufe/Kurs, z.B. "10c" — vorbelegt aus der zugehörigen Lerngruppe, frei änderbar. public string GroupLabel { get; set; } = ""; public DateOnly? Date { get; set; } public ExperimentKind Kind { get; set; } = ExperimentKind.Lehrerversuch; /// Kurzbeschreibung der Durchführung. public string Procedure { get; set; } = ""; public List Substances { get; set; } = []; public List Hazards { get; set; } = []; public List ProtectiveMeasures { get; set; } = []; public string FirstAid { get; set; } = ""; public string Disposal { get; set; } = ""; public string Notes { get; set; } = ""; /// Ob ein KI-Entwurf beteiligt war — steuert den Rechtssicherheits-Hinweis im PDF-Export. public bool IsAiAssisted { get; set; } public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; } public class HazardSubstance { public string Name { get; set; } = ""; /// CAS-Nummer, falls über die Chemikalien-Recherche (TODO.md 4.2-Nachtrag) ermittelt oder von /// Hand eingetragen — optional, nur zur eindeutigeren Wiedererkennung/Recherche. public string Cas { get; set; } = ""; /// Typische Einsatzmenge, z.B. "ca. 2 g" — Freitext statt strukturierter Einheit, da der /// Rahmen (fest/Lösung/Gas, Konzentration ...) zu unterschiedlich für ein starres Feld ist. public string Amount { get; set; } = ""; public List GhsPictograms { get; set; } = []; /// "Gefahr" oder "Achtung" (GHS-Signalwort) — Freitext statt Enum, da GESTIS-Recherchen auch /// mal ohne eindeutiges Signalwort zurückkommen können. public string SignalWord { get; set; } = ""; /// H-Sätze (Gefahrenhinweise) als Freitext, z.B. "H314, H290" oder mit Kurztext — bewusst kein /// eingebauter Katalog amtlicher H-/P-Satz-Texte in der App (Fehlerrisiko bei /// sicherheitsrelevanten Angaben), die Lehrkraft prüft/ergänzt gegen das Sicherheitsdatenblatt. public string HStatements { get; set; } = ""; public string PStatements { get; set; } = ""; /// Tätigkeitsbeschränkung laut RiSU-Stoffliste (Freigabe für alle/Schulversuche/nur /// Lehrkraft, Altersgrenzen, Ersatzstoffprüfung nötig, verboten, ...) — Freitext, da die /// tatsächlichen Formulierungen zu unterschiedlich für ein starres Feld/Enum sind. public string ActivityRestriction { get; set; } = ""; } public enum ExperimentKind { Lehrerversuch, Schuelerversuch, Demonstrationsversuch } /// Die neun GHS-Gefahrenpiktogramme (Global Harmonisiertes System). public enum GhsPictogram { Explosive, Flammable, Oxidizing, CompressedGas, Corrosive, Toxic, Harmful, HealthHazard, Environmental, }