Module abschaltbar machen

Merkkarten, Praxisaufgaben, Checklisten, Berichtsheft, Lernzielkontrollen
und Feedbackgespraech lassen sich unter Verwaltung -> Module fuer die ganze
Lern-Bar ab- und einschalten. Wochenplan, Handouts, Glossar, Auswertung und
Verwaltung bleiben immer an.

Gesperrt wird an drei Stellen, nicht im Layout (Next rendert Layouts beim
Seitenwechsel darunter nicht neu): Seiten mit erfordereModul, Routen fuer
PDF, Anhaenge und Lernstand mit modulAn, alle 37 Serveraktionen der Module
mit pruefeModul. Die Anmeldepruefung kommt jeweils zuerst, damit ein
Unangemeldeter nicht am 404 abliest, was abgeschaltet ist.

Ein abgeschaltetes Modul traegt nirgends bei: Wochenplan, Fortschritt,
Was-wartet, Mein Stand, Ergebnisverlauf, Rahmenplanabdeckung, Vorschlaege
fuers Berichtsheft, Karten im Handout, Kurzbefehle im Manifest. Die
Lernstand-Schnittstelle antwortet mit 410, das Geraet verwirft daraufhin
seine Offline-Warteschlange. Abschalten loescht nichts.

Gespeichert in modul_einstellung (Migration 0010); fehlt die Zeile, ist das
Modul an, eine bestehende Datenbank verhaelt sich also wie vorher.

12 Tests fuer die Regeln, Abschnitt A8 im Abnahmelauf, Anleitung Kapitel 9
mit Bildschirmfoto, README, E43.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-10-05 16:58:32 +02:00
co-authored by Claude Opus 5.5
parent 54ce7d87ae
commit 44e6c8bb79
52 changed files with 993 additions and 158 deletions
+38
View File
@@ -493,3 +493,41 @@ oder eine erfolgreiche Anmeldung setzt den Zähler zurück.
- **Gezählt wird vor der Prüfung.** Jeder Versuch gilt sofort als Fehlversuch
und wird bei Erfolg zurückgenommen. Zwischen Sperrprüfung und Zählen liegt
so kein `await`; sonst kämen gleichzeitige Anfragen alle an der Sperre vorbei.
## E43 · Module schaltbar für die ganze Lern-Bar, gesperrt an drei Stellen, nie gelöscht
Merkkarten, Praxisaufgaben, Checklisten, Berichtsheft, Lernzielkontrollen und
Feedbackgespräch lassen sich unter **Verwaltung → Module** abschalten. Wochenplan,
Handouts, Glossar, Auswertung und Verwaltung bleiben immer an – an ihnen hängt
alles andere, und die Auswertung passt sich ohnehin an.
- **Für die ganze Lern-Bar, nicht je Azubi.** Ein Betrieb startet mit einer
Fachrichtung und entscheidet einmal, womit er arbeitet. Schalter je Azubi
hätten jede Ausbilderansicht je Person unterschiedlich gemacht. Ließe sich
später ergänzen, ohne das Bestehende umzubauen: Der Stand ist schon heute ein
Objekt, das an einer Stelle entsteht (`repos/module`).
- **In der Datenbank, nicht in einer Konfigurationsdatei.** Ein Ausbilder soll
ohne Zugang zum Server umschalten können, und die Änderung soll sofort
wirken, ohne Neustart. Gespeichert wird nur, was je umgeschaltet wurde; fehlt
die Zeile, ist das Modul an. Eine bestehende Datenbank verhält sich nach der
Migration also genau wie vorher.
- **Gesperrt an drei Stellen, nicht im Layout.** Seiten rufen `erfordereModul`
auf (Antwort „nicht gefunden", wie bei fehlender Berechtigung, E21), Routen
für PDF, Anhänge und Lernstand fragen `modulAn`, Serveraktionen rufen
`pruefeModul`. Ein Layout je Modul wäre kürzer gewesen, greift aber nicht
zuverlässig: Next.js rendert ein Layout beim Wechsel zwischen den Seiten
darunter nicht neu.
- **Abschalten löscht nichts.** Beim Berichtsheft ist das zwingend – es ist ein
Nachweis. Für alle anderen Module gilt dasselbe, damit niemand beim
Ausprobieren Daten verliert.
- **Abgeschaltet heißt: trägt nirgends bei.** Kein Eintrag im Wochenplan, kein
Anteil am Wochenfortschritt, kein Nachweis in der Rahmenplanabdeckung, kein
Vorschlag fürs Berichtsheft, kein Kurzbefehl im App-Symbol. Sonst stünden
Inhalte für immer als offen da, die niemand mehr bearbeiten kann.
- **Offline gesammelte Bewertungen werden verworfen**, wenn die Merkkarten aus
sind. Die Lernstand-Schnittstelle antwortet mit 410 statt 404, und das Gerät
leert daraufhin seine Warteschlange, statt sie bei jeder Verbindung erneut zu
schicken.
- **Die Prüfung der Anmeldung kommt zuerst**, die des Moduls danach. Sonst sähe
ein nicht angemeldeter Besucher an „nicht gefunden" statt der Anmeldeseite,
welche Module abgeschaltet sind.