- Wochenplan ist die Startseite des Azubis: Thema, Leitfrage, fuenf Tage mit Theorie und Praxis, Fortschrittsbalken, was noch offen ist - Ausbilder sieht je Azubi die laufende Woche mit Stand und offenen Punkten - /woche/<nr> fuer jede Woche, Ausbilder waehlt ueber ?azubi= den Stand; Zugriff wird serverseitig bei jedem Aufruf geprueft - Tabelle wochenplanung mit geplantem und tatsaechlichem Datum, Zustand und Notiz fuer den Azubi - Verschieben per Datumsfeld, wahlweise mit allen folgenden Wochen - Reihenfolge per Ziehen und Ablegen sowie per Tastatur (Alt + Pfeil) - Warnung bei sich ueberlappenden Terminen - Plan entsteht automatisch beim Anlegen eines Azubikontos - Planungs- und Fortschrittslogik als reine Funktionen, 36 Tests dafuer - Insgesamt 104 Tests Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
7.4 KiB
7.4 KiB
Änderungsprotokoll
Alle nennenswerten Änderungen an der Lern-Bar stehen hier. Aufbau nach Keep a Changelog, Versionsnummern nach Semantischer Versionierung.
Wie versioniert wird
- Patch (0.1.x) – Fehlerbehebungen, Textkorrekturen, Inhaltsänderungen
- Minor (0.x.0) – ein neuer Baustein aus dem Fahrplan
- Major (x.0.0) – 1.0.0 ist die erste abnahmefähige Fassung; danach nur noch bei Änderungen, die einen Eingriff beim Betrieb erfordern (Datenformat, Umgebungsvariablen, Betriebsablauf)
Eine Fassung wird so festgeschrieben:
npm version minor -m "Fassung %s" # hebt package.json und setzt ein Git-Etikett
git push --follow-tags
Vor npm version wandert der Abschnitt „Unveröffentlicht" unter eine neue
Überschrift mit Nummer und Datum.
Unveröffentlicht
0.3.0 – 2026-09-10
Der Wochenplan wird zur Startseite, und der Ausbilder kann ihn umplanen.
Hinzugefügt
- Wochenplan als Startseite des Azubis: Woche, Thema, Leitfrage, Wochenziel, die fünf Tage mit Theorie- und Praxisteil, hervorgehobener heutiger Tag, Fortschrittsbalken und eine Liste dessen, was noch offen ist
- Der Ausbilder sieht auf seiner Startseite je Azubi die laufende Woche mit Fortschritt und offenen Punkten, mit Sprung in die Wocheneinzelansicht
/woche/<nr>zeigt jede beliebige Woche; der Ausbilder wählt über?azubi=, wessen Stand er sieht – geprüft wird das serverseitig bei jedem Aufruf- Tabelle
wochenplanungmit geplantem und tatsächlichem Datum, Zustand (geplant/laufend/abgeschlossen) und einer Notiz für den Azubi - Wochenplanseite für den Ausbilder:
- Plan aus den Wochen des Repositorys erzeugen und fehlende Wochen anhängen
- Woche auf ein neues Datum verlegen, wahlweise mit allen folgenden Wochen; ein beliebiges Datum wird auf den Montag seiner Woche gerundet
- Reihenfolge per Ziehen und Ablegen ändern – die Terminfolge bleibt fest, nur die Zuordnung wechselt, damit der Plan lückenlos bleibt
- Dasselbe mit der Tastatur über Alt + Pfeil hoch/runter, damit die Funktion nicht auf die Maus angewiesen ist
- Zustand je Woche setzen; beim Start wird das tatsächliche Datum vermerkt
- Notiz je Woche, die der Azubi in seiner Wochenansicht sieht
- Warnung, wenn sich nach einem Einzelverschieben Termine überlappen
- Der Wochenplan entsteht automatisch, sobald ein Azubikonto angelegt wird
- Fortschrittsrechnung als reine Funktion über Zählwerte, damit sie mit den weiteren Bausteinen wachsen kann, ohne sich zu verzweigen
- 36 Tests für Planerzeugung, Verschieben, Umsortieren, „welche Woche ist dran" und die Fortschrittsrechnung
Angemerkt
- Praxisaufgaben, Checklisten und Lernzielkontrollen erscheinen im Fortschritt bereits mit ihrer Sollzahl, lassen sich aber erst mit den Bausteinen 5 bis 8 abhaken. Das ist Absicht: Die Woche zeigt, was ansteht, auch wenn die Anwendung es noch nicht mitzählen kann
0.2.0 – 2026-09-10
Die Inhalte kommen ins Spiel: Handouts, Suche, Glossar – alles aus Dateien im Repository, beim Start geprüft.
Hinzugefügt
- Inhaltslader für
content/: YAML und Markdown mit YAML-Kopf, Prüfung über Zod-Schemata, Aufbau aller Querverweise - Fehlermeldungen mit Datei und Zeile. Fehler werden gesammelt statt beim ersten geworfen – wer zehn Tippfehler eingebaut hat, sieht sie in einem Durchgang. Die Zeilennummer stammt aus dem YAML-Dokumentmodell, nicht aus einer Schätzung
- Geprüft wird unter anderem: Existenz jeder referenzierten Kennung, Zugehörigkeit
jedes Handouts zu genau einer Woche (in beide Richtungen), Kürzel passend zum
Themenblock, Berufsbildpositionen und Lernfelder gegen
rahmenplan.yaml, lückenlose Wochennummerierung, doppelte Kennungen, Glossarverweise ins Leere npm run inhalte:pruefenprüft ohne Start und meldet zusätzlich, welche Berufsbildpositionen bisher von keinem Inhalt berührt werden- Handout-Ansicht mit dem festen Aufbau: Kürzel, Titel, „Worum es geht", Das Wesentliche, Übersicht, hervorgehobener Merksatz, eingeklappte Prüfungsfrage; dazu die Zuordnung zu Rahmenplan, Lernfeld und Woche
- Handout-Übersicht nach Themenblöcken, Filter je Block, Lesestand je Block
- Volltextsuche über Titel, Kurzbeschreibung, Merksatz, Merkkarten und Fließtext – mit Gewichtung und Trefferausschnitt, unempfindlich gegen Umlaute und Großschreibung
- „Als gelesen markieren" je Handout, gespeichert je Benutzer
- Glossar mit Suche; Begriffe werden in den Handouts automatisch verlinkt – höchstens einmal je Seite, nie in Code, Überschriften oder bestehenden Verweisen. Der Verweis ist ein echter Link mit Erklärung im title-Attribut, damit er auch am Handy und mit der Tastatur nutzbar ist
- Neu einlesen bei Dateiänderung im Entwicklungsbetrieb; schlägt das fehl, bleibt der bisherige Stand aktiv und der Fehler steht im Protokoll
- Beispielinhalte: 4 Wochen, 12 Handouts mit 24 Merkkarten, 4 Praxisaufgaben, 4 Checklisten, 2 Lernzielkontrollen mit Musterlösungen, 24 Glossareinträge
content/rahmenplan.yamlmit allen Berufsbildpositionen der FIAusbV 2020 (Abschnitte A, C und F, hier als A1–A10, B1–B3, C1–C5) samt amtlicher Fundstelle sowie allen zwölf Lernfeldern des KMK-Rahmenlehrplansnpm run screenshotsnimmt die Bilder für die Anleitung automatisiert auf
Geändert
gray-matterentfernt: Der YAML-Kopf wird selbst herausgelöst. Die Bibliothek merkt sich Ergebnisse und lieferte beim zweiten Einlesen desselben Textes ein anderes Objekt; außerdem stimmt der Zeilenversatz für Fehlermeldungen jetzt garantiert
0.1.0 – 2026-09-10
Erster Baustein: das Fundament steht, die Anwendung lässt sich starten, anmelden und verwalten.
Hinzugefügt
- Projektgerüst mit Next.js 15 (App Router), React 19, TypeScript
- SQLite über Drizzle ORM; der gesamte Datenzugriff liegt hinter einer Repository-Schicht, damit ein späterer Wechsel auf PostgreSQL kein Umbau ist
- Eigener Migrationslauf:
src/lib/db/migrationen/*.sqlwerden beim Start einmalig angewendet und mit Prüfsumme vermerkt; nachträgliche Änderungen an bereits angewendeten Dateien lassen die Anwendung mit klarer Meldung abbrechen - Anmeldung mit Argon2id, serverseitigen Sitzungen, HttpOnly-Cookie und
SameSite=Lax; im Cookie steht nur ein Zufallswert, gespeichert wird dessen SHA-256-Abdruck - Zwei Rollen (
ausbilder,azubi); die Rechteregeln liegen als reine Funktionen insrc/lib/auth/regeln.tsund sind vollständig testbar - Verwaltungsbereich für den Ausbilder: Azubikonto samt Ausbildung anlegen, Eckdaten ändern, Passwort setzen, Konto sperren und entsperren
- Gestaltung in Petrol/Bernstein, helle und dunkle Darstellung mit Umschalter in der Kopfzeile, nur Systemschriften, keine Ressourcen von außen
- Zeitrechnung für Europe/Berlin und Kalenderwochen nach ISO 8601
- Mehrstufiges Dockerfile,
docker-compose.ymlmit einem Dienst und einem Volume, Lebenszeichen unter/api/gesundheit update.shfür den Linux-Server: sichert, holt den Quelltext, baut, schaltet um und fällt bei fehlendem Lebenszeichen automatisch auf die vorherige Fassung zurücksicherung.shundwiederherstellen.shfür Datenbank und Anhängenpm run konto:anlegenfür das erste Ausbilderkonto