Ersetzt den ursprünglichen KI-Websuche-Ansatz (GESTIS scheiterte sowohl über Websuche als auch über direkten API-Zugriff an fehlenden schulspezifischen Tätigkeitsbeschränkungen) durch einen reinen lokalen Datenbank-Lookup gegen die offizielle RiSU-Stoffliste (1764 Stoffe inkl. Tätigkeitsbeschränkungs-Codes, Legende zur Abfragezeit übersetzt statt in die Datenbank gebacken). Keine KI-Kosten, keine Drittanbieter-Abhängigkeit mehr für diese Funktion. HazardSubstance.AgeRestriction zu ActivityRestriction umbenannt, da die Tätigkeitsbeschränkung mehr abdeckt als reine Altersgrenzen. Details und verworfene Zwischenstände in TODO.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
63 lines
3.3 KiB
C#
63 lines
3.3 KiB
C#
namespace LehrerApp.Core.Models;
|
|
|
|
/// <summary>
|
|
/// 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 <see cref="DocumentAttachment"/>-Infrastruktur an eine <see cref="Lesson"/>
|
|
/// 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).
|
|
/// </summary>
|
|
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<HazardSubstance> Substances { get; set; } = [];
|
|
public List<string> Hazards { get; set; } = [];
|
|
public List<string> 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<GhsPictogram> 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,
|
|
}
|