Implementiert TODO 1.1 (Klausur anlegen/verwalten) und die dazu passenden Teile von 1.2 (Aufgabenstruktur), da beides im selben Dialog verwaltet wird: - ExamDialog: Klausur anlegen/bearbeiten/duplizieren mit Aufgaben-Editor (Nr./Titel/Maximalpunkte/Gewichtung, sortierbar), Gesamtpunkte-Anzeige mit Warnung bei 0 Punkten, und Kompetenz-Zuordnung je Aufgabe. - Klausuren-Tab: Kontextmenü und Toolbar für Bearbeiten/Duplizieren/ Löschen (mit Rückfrage), farbcodierte Status-Spalte, SplitButton für Statuswechsel (Klick = nächster Status, Dropdown = manuelles Setzen). - ExamRepository.Delete löscht zugehörige ExamResults kaskadierend. - Gewichtung ist standardmäßig ausgeblendet (Checkbox zum Einblenden), NumericUpDown-Felder ohne Spinner-Buttons wegen eines Layout-Bugs im Avalonia-Standardtemplate, der das interne Textfeld auf wenige Pixel schrumpfen ließ. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
23 KiB
LehrerApp — Entwicklungs-Roadmap
Strukturierte ToDo-Liste aller offenen Entwicklungsschritte. Jeder Punkt ist so formuliert, dass er einzeln an einen Agenten übergeben werden kann.
Stand: 2026-08-04
Legende: [ ] offen · [~] teilweise umgesetzt · [x] fertig
0. Konventionen für alle Aufgaben
Diese Regeln gelten für jede Aufgabe unten und müssen nicht wiederholt werden.
- MVVM: Logik in ViewModels (
CommunityToolkit.Mvvm,[ObservableProperty]/[RelayCommand]), Views enthalten nur Binding. Kein Code-Behind außer Dialog-Verdrahtung. - DI: Neue Repositories/Services/ViewModels in
LehrerApp.Desktop/AppBootstrapper.csregistrieren. Repositories + Listen-VMs = Singleton, Detail-/Dialog-VMs = Transient. - Daten: Neue Collections in
LehrerApp.Data/LiteDbContext.csanlegen, Indexe inEnsureIndexes(). Interface nachLehrerApp.Core/Interfaces/IRepositories.cs, Implementierung nachLehrerApp.Data/Repositories/AllRepositories.cs. - Dialoge:
WindowmitClose(true/false), DataContext manuell gesetzt (Muster siehe AddGroupDialog.axaml.cs). - Sprache: Alle UI-Texte auf Deutsch. Datumsformat
dd.MM.yyyy, Kulturde-DE. - Modelle:
UpdatedAtbei jedem Speichern setzen (Grundlage für Sync-Konfliktauflösung).
1. Klausuren & Leistungsüberprüfungen
Modelle Exam, ExamTask, GradingKeyEntry, ExamResult existieren bereits in
Exam.cs, Repositories ebenfalls. Die komplette UI fehlt.
1.1 Klausur anlegen und verwalten
- 1.1.1 Dialog
AddExamDialog— Titel, Datum, Fach, Klausurnummer, Notizen. Ersetzt den TODO-StubAddExam()in GroupViewModels.cs. Umgesetzt alsExamDialog/ExamDialogViewModel. - 1.1.2 Klausur bearbeiten/löschen (Kontextmenü im Klausuren-Tab, Löschen mit Rückfrage).
- 1.1.3 Statuswechsel
Planned → Conducted → Graded → Returnedper Button, inkl. Farbcodierung des Status im DataGrid. - 1.1.4 Klausur aus bestehender Klausur duplizieren (Aufgaben + Notenschlüssel übernehmen, neues Datum) — für Parallelkurse.
1.2 Aufgabenstruktur (ExamTask)
- 1.2.1 Editor für die Aufgabenliste: Nr., Titel, Maximalpunkte, Gewichtung.
Zeilen hinzufügen/entfernen/umsortieren. Umgesetzt im
ExamDialog(Teil von 1.1.1). - 1.2.2 Automatische Anzeige der Gesamtpunktzahl, Warnung bei 0 Punkten.
- 1.2.3 Optional: Teilaufgaben (a/b/c) — erfordert Modellerweiterung, vorher entscheiden.
- 1.2.4 Zuordnung von Kompetenzen (
CompetencyItem) zu einzelnen Aufgaben — Voraussetzung für die Kompetenzauswertung in 8.3.
1.3 Notenschlüssel
- 1.3.1 Editor für
GradingKeymit Vorbelegung ausGradingService.DefaultKey1To6()/DefaultKey0To15()je nachGradingSystemder Gruppe. - 1.3.2 Notenschlüssel als wiederverwendbare Vorlage speichern (neues Modell
GradingKeyTemplate+ Repository) und in Einstellungen verwalten. - 1.3.3 Live-Vorschau: Punktegrenzen absolut anzeigen (z.B. "Note 2 ab 45 von 60 P.").
- 1.3.4 Validierung: lückenlose, absteigende Prozentgrenzen, keine Dopplungen.
1.4 Punkteeingabe & Korrektur
- 1.4.1 Eingaberaster: Zeilen = Schüler, Spalten = Aufgaben, letzte Spalte Summe + Note.
Note wird live über
GradingService.CalculateGrade()berechnet. - 1.4.2 Tastaturnavigation analog zum Mitarbeit-Dialog: Tab/Enter = nächstes Feld, Pfeiltasten, direkte Zifferneingabe, halbe Punkte (0,5) erlaubt.
- 1.4.3 Kennzeichnung "Abwesend" (
ExamResult.Absent) — Schüler aus Statistik ausschließen. - 1.4.4 Kommentarfeld pro Schüler (
ExamResult.Comment). - 1.4.5 Validierung: Punkte > Maximalpunkte der Aufgabe wird rot markiert und nicht gespeichert.
- 1.4.6 Autosave nach jeder Zelle (kein expliziter Speichern-Button nötig).
1.5 Klausurauswertung
- 1.5.1 Notenspiegel (Häufigkeitsverteilung als Balken), Durchschnitt, Median, Anteil unter 4 / unter 5 Punkten.
- 1.5.2 Aufgabenanalyse: durchschnittlicher Erfüllungsgrad pro Aufgabe in Prozent, Kennzeichnung auffällig schwacher Aufgaben.
- 1.5.3 Notenschlüssel nachträglich verschieben und Auswirkung sofort im Notenspiegel sehen.
- 1.5.4 Export der Auswertung (siehe 11.2).
2. Noten & Zeugnisnoten
Modell Grade existiert in Planning.cs, GradeRepository ebenfalls.
Der Tab "Noten" in GroupDetailView.axaml:83 ist ein Platzhalter.
2.1 Notenübersicht der Gruppe
- 2.1.1 Matrix: Zeilen = Schüler, Spalten = alle Leistungen (Klausuren, Mitarbeit je Halbjahr, sonstige Noten). Zelle zeigt Note/Punkte.
- 2.1.2 Spalte "Gesamt" mit gewichtetem Durchschnitt über
GradingService.WeightedAverage(). - 2.1.3 Sortierung nach Name / Gesamtnote, Umschalten Noten ↔ Punkte.
- 2.1.4 Halbjahresfilter (H1 / H2 / Gesamtjahr), berücksichtigt
Enrollment.Period.
2.2 Einzelnoten pflegen
- 2.2.1 Dialog "Note hinzufügen": Kategorie (
GradeCategory), Wert, Datum, Gewichtung, Notiz. - 2.2.2 Note bearbeiten / löschen mit Historie (wer/wann geändert) — mindestens
CreatedAtsichtbar. - 2.2.3 Sammelerfassung: eine Note (z.B. Hausaufgabenkontrolle) für die ganze Gruppe auf einmal.
2.3 Gewichtungsschema
- 2.3.1 Neues Modell
GradingSchemeje Gruppe: prozentuale Anteile von Klausuren / Mitarbeit / sonstige Leistungen (z.B. 50/40/10). - 2.3.2 UI zur Bearbeitung, Validierung auf Summe 100 %.
- 2.3.3 Voreinstellung je Gruppentyp (
Classvs.Course) in den Einstellungen.
2.4 Zeugnisnote
- 2.4.1 Berechnung der Zeugnisnote aus Schema (2.3) + allen Teilnoten, Rundungsregel konfigurierbar (kaufmännisch / pädagogisch abweichbar).
- 2.4.2 Manuelles Übersteuern mit Pflicht-Begründung (pädagogischer Spielraum).
- 2.4.3 Zeugnisnoten-Ansicht mit Sperren/Festschreiben zum Konferenztermin.
- 2.4.4 Export der Zeugnisnotenliste (siehe 11.2).
2.5 Notenentwicklung
- 2.5.1 Verlaufsdiagramm pro Schüler über das Schuljahr (im Schülerdetail).
- 2.5.2 Auffälligkeiten markieren: Abfall um ≥ 1 Note, Versetzungsgefährdung (Note 5/6).
3. Mündliche Mitarbeit — offene Punkte
Grundfunktion ist umgesetzt (Sitzungen, Raster, Schnelleingabe-Dialog). Siehe ParticipationViewModels.cs.
3.1 Aspekte konfigurieren
- 3.1.1 UI zum Anlegen/Bearbeiten/Löschen von
ParticipationAspectpro Gruppe (Fach Chemie: z.B. "Experiment", "Protokoll") —GroupId = nullbleibt global. - 3.1.2 Reihenfolge der Aspekte per Drag & Drop oder Hoch/Runter-Buttons festlegen (bestimmt auch die Q/W/E/R/T-Belegung im Schnelleingabe-Dialog).
- 3.1.3 Aspekt-Typen
Scale3,Binary,Pointsin Raster und Dialog vollständig unterstützen (bisher primärScale5). - 3.1.4 Aspekt deaktivieren statt löschen, damit alte Einträge gültig bleiben.
3.2 Aggregation zur Mitarbeitsnote
- 3.2.1 Gewichtung je Aspekt konfigurierbar (z.B. Qualität 50 %, Quantität 30 %, Experiment 20 %).
- 3.2.2 Berechnung einer Mitarbeitsnote je Halbjahr aus allen Sitzungen,
Ausgabe als Note bzw. Punkte je nach
GradingSystemder Gruppe. - 3.2.3 Umgang mit fehlenden Werten festlegen (nicht bewertet ≠ schlecht bewertet).
- 3.2.4 Übernahme der berechneten Mitarbeitsnote als
GrademitCategory = Participation(Anbindung an 2.1). - 3.2.5 Trendanzeige pro Schüler (Entwicklung über die Sitzungen hinweg).
3.3 Sitzungen
- 3.3.1 Sitzung automatisch aus einer geplanten
Lessonerzeugen (Datum + Thema übernehmen) — Abhängigkeit zu 4.2. - 3.3.2 Anwesenheit in der Sitzung erfassen (fehlend/verspätet), Verknüpfung mit 5.2.
- 3.3.3 Sitzung bearbeiten/löschen inkl. Rückfrage bei vorhandenen Bewertungen.
- 3.3.4 Sitzungen mehrerer Gruppen im Kalenderüberblick.
4. Unterrichtsplanung
Modelle Unit und Lesson existieren, UnitRepository/LessonRepository ebenfalls.
Navigationspunkt "Unterrichtsplanung" ist ein PlaceholderViewModel
(MainWindowViewModel.cs:41).
4.1 Unterrichtseinheiten (Unit)
- 4.1.1 Listenansicht der Einheiten je Gruppe mit Status und Zeitraum (ersetzt den Platzhalter im Tab "Planung").
- 4.1.2 Dialog Einheit anlegen/bearbeiten: Titel, Fach, Zeitraum, Status, Notizen.
- 4.1.3 Kompetenzen aus dem Katalog (siehe 8) einer Einheit zuordnen — Mehrfachauswahl.
- 4.1.4 Einheit als Vorlage speichern und in eine andere Gruppe kopieren (inkl. Stunden, ohne Datumsbezug).
- 4.1.5 Fortschrittsanzeige: gehaltene / geplante Stunden der Einheit.
4.2 Einzelstunden (Lesson)
- 4.2.1 Stundenliste innerhalb einer Einheit, sortiert nach Datum/Stundennummer.
- 4.2.2 Stundeneditor: Thema, Phase, Methoden, Materialien, Hausaufgabe. Methoden/Materialien als Chips mit Autovervollständigung aus bisherigen Einträgen.
- 4.2.3 Status
Planned → Conductedsetzen, Reflexionsfeld nach der Stunde. - 4.2.4 Stunden verschieben (z.B. bei Ausfall) — Folgestunden automatisch nachrücken.
- 4.2.5 Stunden serienweise aus dem Stundenplan (4.3) erzeugen.
4.3 Stundenplan
- 4.3.1 Neues Modell
TimetableSlot(Gruppe, Wochentag, Stunde, Raum) + Repository. - 4.3.2 Wochenstundenplan-Ansicht als Raster mit Farbcodierung je Gruppe.
- 4.3.3 Bearbeitung per Klick/Drag im Raster.
- 4.3.4 Abgleich mit
LearningGroup.HoursPerWeek(Warnung bei Abweichung). - 4.3.5 Schulferien und Feiertage hinterlegen (Bundesland wählbar) und aus der Planung ausnehmen.
4.4 Wochen-/Tagesansicht
- 4.4.1 Kalenderansicht über alle Gruppen: Woche und Tag.
- 4.4.2 Sprung von einer Stunde direkt in die Mitarbeitserfassung dieser Gruppe.
- 4.4.3 Anzeige anstehender Klausurtermine und Abgabefristen im Kalender.
5. Schülerdokumentation
Modelle Documentation, AbsenceData, SupportData existieren, Repository ebenfalls.
Der Tab "Dokumentation" in der Gruppenansicht ist ein Platzhalter, im Schülerdetail
werden DocEntry-Einträge bereits gelesen.
5.1 Einträge erfassen
- 5.1.1 Dialog "Dokumentation hinzufügen" mit Typwahl
(
Conversation,Incident,SupportPlan,Absence) und typabhängigen Feldern. - 5.1.2 Teilnehmerliste (
Participants) bei Gesprächen erfassen. - 5.1.3 Kennzeichen "vertraulich" (
IsConfidential) mit Ausblenden in Übersichten. - 5.1.4 Bearbeiten/Löschen mit Rückfrage; gelöschte Einträge nicht hart entfernen, sondern als gelöscht markieren (Nachvollziehbarkeit).
5.2 Fehlzeiten
- 5.2.1 Schnelle Abwesenheitserfassung je Stunde (entschuldigt/unentschuldigt).
- 5.2.2 Fehlzeitenbilanz je Schüler und Halbjahr (Summe Stunden, Quote).
- 5.2.3 Schwellenwert-Warnung (z.B. > 20 % Fehlzeiten) im Schülerdetail und Dashboard.
- 5.2.4 Nachträgliches Entschuldigen mit Frist-Hinweis.
5.3 Förderpläne
- 5.3.1 Förderplan anlegen: Maßnahmenliste, Überprüfungsdatum, Status.
- 5.3.2 Wiedervorlage: fällige Überprüfungen erscheinen im Dashboard.
- 5.3.3 Verlaufsdokumentation zum Förderplan (mehrere Einträge über die Zeit).
5.4 Datenschutz
- 5.4.1 Vertrauliche Einträge nur nach zusätzlicher Bestätigung anzeigen.
- 5.4.2 Löschfristen definieren und abgelaufene Einträge zum Löschen vorschlagen.
- 5.4.3 Export einzelner Schülerdaten für Auskunftsersuchen (Art. 15 DSGVO).
6. Arbeitszeit & Aufgaben
Modelle WorkTask und TimeEntry existieren, Repositories ebenfalls.
Navigationspunkt "Arbeitszeit" ist ein PlaceholderViewModel.
6.1 Aufgabenverwaltung
- 6.1.1 Aufgabenliste mit Filter nach Status, Kategorie, Gruppe und Fälligkeit.
- 6.1.2 Aufgabe anlegen/bearbeiten: Titel, Kategorie, Gruppe, Fälligkeit, geschätzte Dauer, Notizen.
- 6.1.3 Status per Klick wechseln (
Open → InProgress → Done), erledigte ausblenden. - 6.1.4 Wiederkehrende Aufgaben (wöchentlich/monatlich).
- 6.1.5 Automatische Aufgabe "Klausur korrigieren" beim Statuswechsel einer Klausur
auf
Conducted(Anbindung an 1.1.3).
6.2 Zeiterfassung
- 6.2.1 Timer starten/stoppen mit Zuordnung zu Aufgabe oder Kategorie.
- 6.2.2 Manuelle Nacherfassung eines Zeitblocks (Datum, Von–Bis oder Dauer).
- 6.2.3 Wochenübersicht der erfassten Zeit, Summen je Kategorie.
- 6.2.4 Schätzung vs. tatsächliche Dauer je Aufgabe vergleichen.
6.3 Auswertung
- 6.3.1 Monats-/Jahresauswertung nach Kategorie und Gruppe (Diagramm + Tabelle).
- 6.3.2 Abgleich mit der Pflichtstundenzahl (in Einstellungen hinterlegt).
- 6.3.3 Export der Arbeitszeitauswertung (siehe 11.2).
7. Schüler & Gruppen — Verfeinerungen
Grundfunktionen sind vorhanden (StudentViewModels.cs, GroupViewModels.cs).
7.1 Schüler
- 7.1.1 Schüler löschen / auf inaktiv setzen inkl. Hinweis auf verknüpfte Daten.
- 7.1.2 Suche in der Schülerliste (Name, Gruppe) mit Sofortfilter.
- 7.1.3 Foto/Avatar je Schüler (optional, lokal gespeichert) für schnellere Zuordnung.
- 7.1.4 Serienbrieffelder aus Kontaktdaten (Anrede, Adresse) für Elternbriefe.
- 7.1.5 Sitzplan je Gruppe (Raster mit Drag & Drop), Sprung von Sitzplatz zur Bewertung.
7.2 Gruppen
- 7.2.1 Gruppe bearbeiten und löschen (aktuell nur Anlegen möglich).
- 7.2.2 Gruppe ins neue Schuljahr übernehmen: Kopie mit gleicher Schülerschaft,
neues
SchoolYear, neueEnrollment-Einträge. - 7.2.3 Schüler aus einer Gruppe entfernen (
Enrollment.LeftAtsetzen statt löschen). - 7.2.4 Umgang mit
EnrollmentPeriod.Customin allen Auswertungen prüfen (Schüler zählt nur im belegten Zeitraum). - 7.2.5 Archivansicht abgeschlossener Schuljahre (schreibgeschützt).
7.3 Import
- 7.3.1 CSV-Import von Schülerlisten mit Spaltenzuordnung im Dialog.
- 7.3.2 Dublettenerkennung beim Import (Name + Geburtsdatum), Zusammenführen anbieten.
- 7.3.3 Import-Vorschau mit Fehlerliste vor dem endgültigen Übernehmen.
8. Kompetenzen
Katalogverwaltung und JSON-Import existieren in SettingsViewModel.cs, Format dokumentiert in Kompetenzkatalog-KI-Prompt.md.
8.1 Katalogverwaltung
- 8.1.1 Kompetenzen innerhalb eines Bereichs umsortieren (
SortOrderbearbeitbar machen). - 8.1.2 Katalog exportieren (JSON) — Gegenstück zum vorhandenen Import.
- 8.1.3 Katalog von einer Jahrgangsstufe in eine andere kopieren.
- 8.1.4 Import-Konflikte behandeln: Merge statt Ersetzen anbieten.
8.2 Verwendung im Unterricht
- 8.2.1 Kompetenzen einer Unterrichtseinheit zuordnen (siehe 4.1.3).
- 8.2.2 Kompetenzen einzelnen Klausuraufgaben zuordnen (siehe 1.2.4).
- 8.2.3 Abdeckungsübersicht: welche Kompetenzen wurden im Schuljahr behandelt/geprüft?
8.3 Kompetenzorientierte Auswertung
- 8.3.1 Kompetenzprofil je Schüler aus Klausuraufgaben-Ergebnissen berechnen.
- 8.3.2 Gruppenübersicht: durchschnittlicher Erfüllungsgrad je Kompetenz, Identifikation von Wiederholungsbedarf.
- 8.3.3 Kompetenzbericht je Schüler als Ausdruck/Export.
9. Dashboard
Basis vorhanden in DashboardViewModel.cs.
- 9.1 Heutige Stunden mit Uhrzeit und Raum anzeigen (Abhängigkeit zu 4.3).
- 9.2 Direkter Absprung von einer Stunde in Mitarbeitserfassung bzw. Stundenplanung.
- 9.3 Kachel "Anstehende Termine": Klausuren, Förderplan-Überprüfungen, Abgabefristen.
- 9.4 Kachel "Offene Korrekturen" mit Fortschritt (x von y Klausuren bewertet).
- 9.5 Kachel "Auffälligkeiten": Fehlzeitenüberschreitungen, Notenabfall, Versetzungsgefährdung.
- 9.6 Dashboard-Kacheln ein-/ausblendbar und in der Reihenfolge konfigurierbar.
- 9.7 Automatische Aktualisierung beim Zurücknavigieren (aktuell nur manueller Refresh).
10. Sync & Server
Grundgerüst existiert in LehrerApp.Sync und LehrerApp.Api, ist aber nur aktiv, wenn eine Server-URL konfiguriert ist.
10.1 Client
- 10.1.1 Sync-Einrichtung in den Einstellungen: Server-URL, Login, Token speichern.
- 10.1.2 Verbindungstest mit klarer Fehlermeldung (nicht erreichbar / Token ungültig).
- 10.1.3 Konfliktanzeige in der UI — was
ConflictResolverentscheidet, muss sichtbar sein. - 10.1.4 Manuelles Auslösen einer vollständigen Synchronisation.
- 10.1.5 Statusanzeige erweitern: letzter Sync, Anzahl wartender Events, Fehlerzustand.
10.2 Server
- 10.2.1 Benutzerverwaltung/Registrierung prüfen und absichern (Endpoints.cs).
- 10.2.2 Rate Limiting und Request-Größenbegrenzung.
- 10.2.3 Serverseitiges Backup der Event-/Snapshot-Dateien.
- 10.2.4 Docker-Setup in docker/ verifizieren und dokumentieren.
10.3 Verschlüsselung
- 10.3.1 Schlüsselübertragung auf ein zweites Gerät (QR-Code oder Passphrase).
- 10.3.2 Warnung und Wiederherstellungspfad bei verlorenem Schlüssel.
- 10.3.3 Prüfen, welche Daten unverschlüsselt über
PlainEventStorelaufen — personenbezogene Daten dürfen das nicht.
11. Export, Druck & Berichte
Bisher nicht vorhanden — komplett neu.
- 11.1 Basisinfrastruktur: Export-Service mit Formatwahl und Speicherdialog.
- 11.2 CSV-Export für Notenlisten, Klausurauswertung, Arbeitszeit, Fehlzeiten.
- 11.3 PDF-Erzeugung (Bibliothek auswählen — z.B. QuestPDF) mit einheitlichem Layout.
- 11.4 Druckvorlagen: Notenliste, Klausur-Notenspiegel, Sitzplan, Kompetenzbericht, Schülerdokumentation.
- 11.5 Serienbrief/Elternbrief aus Kontaktdaten (Abhängigkeit zu 7.1.4).
- 11.6 Vollständiger Datenexport eines Schuljahres (Archivierung).
12. Einstellungen & Stammdaten
Fächer- und Kompetenzverwaltung existiert bereits in SettingsView.axaml.
- 12.1 Lehrerprofil: Name, Kürzel, Schule, Pflichtstundenzahl.
- 12.2 Schuljahr-Einstellungen: Beginn/Ende, Halbjahresgrenze, Ferien
(
SchoolYearServiceerweitern). - 12.3 Standard-Notenschlüssel und Standard-Gewichtungsschema hinterlegen (2.3.3, 1.3.2).
- 12.4 Darstellung: Hell/Dunkel-Modus, Schriftgröße.
- 12.5 Speicherort der Datenbank anzeigen und ändern.
- 12.6 Backup-Verwaltung (siehe 13.3) in den Einstellungen zugänglich machen.
13. Technische Basis
13.1 Tests
- 13.1.1 Testprojekt
LehrerApp.Testsanlegen (xunit-Pakete sind in Directory.Packages.props bereits gepflegt, Projekt fehlt). - 13.1.2 Unit-Tests für
GradingService(Notenschlüssel-Grenzfälle, gewichteter Schnitt). - 13.1.3 Unit-Tests für
SchoolYearService(Jahreswechsel, Halbjahresgrenze). - 13.1.4 Repository-Tests gegen eine In-Memory-LiteDB.
- 13.1.5 Tests für die Mitarbeits-Aggregation (3.2) und Zeugnisnotenberechnung (2.4).
- 13.1.6 Tests für
ConflictResolver.
13.2 Fehlerbehandlung & Logging
- 13.2.1 Zentrale Exception-Behandlung mit verständlicher Fehlermeldung statt Absturz.
- 13.2.2 Logging in Datei im App-Datenverzeichnis, mit Rotation.
- 13.2.3 Einheitliche Benachrichtigungen (Toast/Snackbar) für Erfolg und Fehler.
- 13.2.4 Validierungsmeldungen einheitlich an den Eingabefeldern statt in Sammel-Labels.
13.3 Datensicherheit
- 13.3.1 Automatisches lokales Backup der LiteDB beim Start (rollierend, letzte 10).
- 13.3.2 Wiederherstellung aus einem Backup über die Einstellungen.
- 13.3.3 Schema-Migration: Versionsnummer in der DB, Migrationsschritte beim Start.
- 13.3.4 Optionale Verschlüsselung der lokalen Datenbank (LiteDB-Passwort).
- 13.3.5 App-Sperre nach Inaktivität (Schülerdaten auf dem Lehrerrechner).
13.4 Codepflege
- 13.4.1
CLAUDE.mdmit Projektkonventionen anlegen (/init). - 13.4.2
AllRepositories.csundIRepositories.csin Themendateien aufteilen, sobald weitere Repositories dazukommen. - 13.4.3 Wiederkehrende UI-Muster (Suchleiste, Kopfzeile, leere Liste) als
wiederverwendbare Controls in
Views/Shared/. - 13.4.4 Konverter und Styles zentralisieren (aktuell teils inline in den Views).
14. UX-Querschnitt
- 14.1 Tastaturbedienung durchgängig: alle Hauptfunktionen ohne Maus erreichbar (Vorbild: Mitarbeit-Schnelleingabe).
- 14.2 Globale Suche (Schüler, Gruppe, Klausur) über Tastenkürzel.
- 14.3 Rückgängig-Funktion für Löschvorgänge (mindestens Bestätigungsdialog überall).
- 14.4 Ladeanzeigen bei längeren Operationen (Import, Sync, Export).
- 14.5 Leere Zustände mit Handlungsaufforderung statt leerer Tabellen.
- 14.6 Fenstergröße und Spaltenbreiten über Sitzungen hinweg merken.
- 14.7 Bedienung auf Touch-Geräten prüfen (Tablet im Unterricht).
15. Auslieferung
- 15.1 Release-Build und Signierung für macOS.
- 15.2 Windows-Build prüfen (Zielplattform klären).
- 15.3 Versionierung und Changelog-Pflege.
- 15.4 Update-Mechanismus oder zumindest Versionsprüfung beim Start.
- 15.5 Kurze Bedienanleitung für den Eigengebrauch.
Empfohlene Reihenfolge
Die Abschnitte sind thematisch, nicht chronologisch nummeriert. Sinnvolle Bearbeitungsreihenfolge:
- Kapitel 1 (Klausuren) — größte funktionale Lücke, viele andere Punkte hängen daran.
- Kapitel 3.2 (Mitarbeit-Aggregation) — kurz, macht das bestehende Feature erst nutzbar.
- Kapitel 2 (Noten & Zeugnisnoten) — braucht 1 und 3.2 als Datenquellen.
- Kapitel 13.1–13.2 (Tests, Fehlerbehandlung) — bevor die Codebasis weiter wächst.
- Kapitel 4 (Planung) und Kapitel 5 (Dokumentation) — unabhängig, gut parallelisierbar.
- Kapitel 6 (Arbeitszeit), 11 (Export), 10 (Sync) — danach.