feat: Unterrichtsmodus - konsolidierte Ansicht für die laufende Stunde

Verlaufsplan und Sitzplan bisher über mehrere Tabs verteilt, obwohl im Unterricht selbst beides
gleichzeitig gebraucht wird. Neuer Button "▶ Unterricht" in der "Heute"-Tagesliste des
Stundenplans (nur bei vorhandener Lesson) öffnet ein maximiertes Fenster: links der
schreibgeschützte Verlaufsplan als kompakte Kartenliste, rechts der volle, unverändert
wiederverwendete SeatingPlanTabView (Drag&Drop, Schnellbewertung, Situations-Tags, PDF-Export).
TeachingModeViewModel baut auf dem bestehenden LessonViewerViewModel auf, dadurch kommen "Zur
Mitarbeit"/"Zu den Noten" ohne Duplizierung mit.

Neue SeatingPlanTabViewModel.SelectOrCreateSessionForLesson verknüpft die Mitarbeitssitzung
automatisch mit der konkreten Stunde - anders als die bestehende EnsureTodaySession darf das hier
sofort beim Start passieren, da durch den expliziten Klick für genau diese Stunde eindeutig
feststeht, worum es geht (keine Geistersitzungs-Gefahr wie beim bloßen Tab-Öffnen).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-20 14:53:16 +02:00
co-authored by Claude Sonnet 5
parent 7365947edc
commit d9d007cd4b
11 changed files with 437 additions and 7 deletions
+34 -2
View File
@@ -1041,10 +1041,42 @@ folgenden Punkte gehören direkt in `LehrerApp.Desktop`:
angewendeten KI-Änderung automatisch (`LessonDialogViewModel.MarkAppliedExternally`, lädt den
frischen Stand statt der eigenen Felder), die aufrufende Liste aktualisiert sich wie nach
einem normalen Speichern.
- [x] **4.5.23** Unterrichtsmodus: eine konsolidierte Ansicht für die gerade laufende Stunde
(Nutzer-Idee — im Unterricht selbst bisher zu viele Klicks zwischen Verlaufsplan-Viewer,
Sitzplan-Tab und Mitarbeit-Tab einer Gruppe verteilt).
---
**Umsetzung:** Neuer Button "▶ Unterricht" in der "Heute"-Tagesliste des Stundenplans
(`TimetableView.axaml`, nur sichtbar wenn für den Slot bereits eine `Lesson` existiert —
bewusst NICHT im Wochenraster, der Modus ist für das aktive Unterrichten HEUTE gedacht,
nicht zum Durchblättern anderer Tage) öffnet ein neues, maximiertes Fenster
`TeachingModeWindow`: links der schreibgeschützte Verlaufsplan (Phasen, Hausaufgabe,
Reflexion — kompakte Kartenliste statt der breiten Tabellenansicht des bestehenden
`LessonViewerDialog`, da der Platz hier schmaler ist), rechts der volle, unverändert
wiederverwendete `SeatingPlanTabView` (Drag&Drop, Schnellbewertung per Sitzplatz-Klick,
Situations-Tags, Sitzplan-PDF-Export — alles bereits vorhanden, keine Duplizierung). Die
beiden bereits bestehenden Sprungziele aus dem Verlaufsplan-Viewer ("Zur Mitarbeit"/
"Zu den Noten", 4.5.3) sind identisch mitgekommen, da `TeachingModeViewModel` das
bestehende `LessonViewerViewModel` unverändert für die linke Spalte wiederverwendet statt
die Phasenanzeige zu duplizieren.
## 5. Schülerdokumentation
**Sitzung automatisch mit der Stunde verknüpft:** Neue Methode
`SeatingPlanTabViewModel.SelectOrCreateSessionForLesson(Lesson)` — anders als die
bestehende `EnsureTodaySession()` (anonyme "Sitzplan"-Sitzung, erst bei der ersten
tatsächlichen Aktion, um das Geistersitzungs-Problem aus 14.12/7.1.5-Nachtrag zu vermeiden)
darf hier sofort beim Start des Unterrichtsmodus eine mit `Lesson.Id` verknüpfte Sitzung
angelegt werden: welche Stunde gemeint ist, steht durch den expliziten Klick auf
"▶ Unterricht" für genau diese Stunde bereits unzweideutig fest, keine passive
Tab-Öffnung wie beim ursprünglichen Bug. Existiert bereits eine verknüpfte Sitzung (z.B.
über "Sitzung aus der Stunde erstellen", 3.3.1, aus der Planung heraus angelegt), wird
diese wiederverwendet statt einer zweiten.
**Bewusst zurückgestellt:** kein Entry-Point aus dem Dashboard (dessen "Heute"-Karte
navigiert bisher direkt zum Mitarbeit-Tab, ein anderer Anzeigetyp als
`TodayLessonItem`) — der Stundenplan-Tab ist der naheliegendere, bereits etablierte Ort für
"heutige Stunden mit Lesson-Bezug" (4.5.2 nutzt denselben Ort). Kein eigenes
Vollbild-/Kiosk-Fenster (kein `WindowState.FullScreen`, kein Precedent dafür im Code) —
stattdessen ein maximiertes, normal schließbares Fenster, um kein neues, ungetestetes
UI-Verhalten einzuführen.
**Wichtige Abweichung von der ursprünglichen Planung (5.2):** Vor der Umsetzung zeigte sich,
dass 5.2 wie ursprünglich beschrieben eine zweite, parallele Fehlzeiten-Erfassung neben dem