Lesson bekommt dieselbe Anhang-Infrastruktur wie Documentation (Material, Arbeitsblätter, Experimentunterlagen), samt Fix einer Sync-Lücke, die Anhang- Dateibytes bisher nur für Documentation statt generisch übertragen hat (IHasAttachments). Sitzplan-Tab bekommt einen "Plätze mischen"-Button für Klausursitzpläne. Neu: mehrschrittiger Gefährdungsbeurteilungs-Assistent mit optionalem KI-Entwurf (ai-backend/gbu.php) und PDF-Export, Format bewusst als JSON-Anhang statt eigener Datenbank-Entität. Details und Architekturentscheidungen in TODO.md (4.2, 7.1.5, 10.1.8). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
53 lines
2.6 KiB
C#
53 lines
2.6 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; } = "";
|
|
/// 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; } = [];
|
|
/// 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; } = "";
|
|
}
|
|
|
|
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,
|
|
}
|