Baustein 2: Inhalte einlesen und pruefen, Handouts, Suche, Glossar

Die fachlichen Inhalte liegen als Dateien unter content/ und werden beim
Start eingelesen, geprueft und in den Speicher geladen.

- Inhaltslader mit Zod-Schemata und Querverweispruefung
- Fehlermeldungen nennen Datei und Zeile, gesammelt statt beim ersten
  Fehler geworfen; die Anwendung startet bei Fehlern nicht
- npm run inhalte:pruefen prueft ohne Start
- Handout-Ansicht mit festem Aufbau, Uebersicht nach Themenbloecken
- Volltextsuche mit Gewichtung und Trefferausschnitt
- Gelesen-Markierung je Handout
- Glossar mit Suche und automatischer Verlinkung in den Handouts
- Beispielinhalte: 4 Wochen, 12 Handouts, 24 Merkkarten, 4 Aufgaben,
  4 Checklisten, 2 Lernzielkontrollen, 24 Glossareintraege
- rahmenplan.yaml aus FIAusbV 2020 und KMK-Rahmenlehrplan, mit Fundstellen
- gray-matter entfernt, YAML-Kopf wird selbst herausgeloest
- npm run screenshots nimmt die Bilder fuer die Anleitung auf
- 39 neue Tests, insgesamt 68

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-09-10 07:56:38 +02:00
co-authored by Claude Opus 5
parent e856349cd4
commit 1af5613e9b
70 changed files with 4779 additions and 124 deletions
+48
View File
@@ -26,6 +26,53 @@ Vor `npm version` wandert der Abschnitt „Unveröffentlicht" unter eine neue
## [Unveröffentlicht]
## [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:pruefen` prü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.yaml` mit 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-Rahmenlehrplans
- `npm run screenshots` nimmt die Bilder für die Anleitung automatisiert auf
### Geändert
- `gray-matter` entfernt: 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,
@@ -58,4 +105,5 @@ anmelden und verwalten.
- `npm run konto:anlegen` für das erste Ausbilderkonto
[Unveröffentlicht]: #unveröffentlicht
[0.2.0]: #020--2026-09-10
[0.1.0]: #010--2026-09-10