feat: Anhänge je Stunde, Klausur-Sitzplan mischen, Gefährdungsbeurteilungs-Assistent
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>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
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,
|
||||
}
|
||||
Reference in New Issue
Block a user