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
+34
View File
@@ -7,6 +7,40 @@ Format: `HH:MM–HH:MM (Dauer) · was gemacht wurde`
---
## 2026-09-10 · Baustein 2 – Inhalte
| Von | Bis | Dauer | Tätigkeit |
|---|---|---|---|
| 07:05 | 07:15 | 0:10 | Remote eingetragen, Push scheitert an fehlenden Zugangsdaten – zurückgestellt, Arbeit läuft weiter |
| 07:15 | 07:25 | 0:10 | Ausbildungsrahmenplan und Lernfelder aus den Quellen geholt statt geraten (FIAusbV Anlage, KMK-Rahmenlehrplan) |
| 07:25 | 07:50 | 0:25 | Beispielinhalte geschrieben: 12 Handouts mit Merkkarten, 4 Wochenpläne, 4 Aufgaben, 4 Checklisten, 2 Lernzielkontrollen, 24 Glossareinträge |
| 07:50 | 08:20 | 0:30 | Inhaltslader: YAML-Dokumentmodell für Zeilennummern, Zod-Schemata, Fehlersammler, Querverweisprüfung |
| 08:20 | 08:35 | 0:15 | Handout-Ansicht, Übersicht nach Blöcken, Volltextsuche, Glossar mit automatischer Verlinkung |
| 08:35 | 08:50 | 0:15 | 39 neue Tests; zwei echte Fehler dabei gefunden (siehe unten) |
| 08:50 | 09:00 | 0:10 | Screenshot-Skript, Bilder aufgenommen, Fahrplan und Änderungsprotokoll nachgezogen |
**Summe Baustein 2: rund 1 h 55 min**
### Was aufgefallen ist
- Die Zeilennummer in der Fehlermeldung war den Aufwand wert. Beim ersten Lauf
gegen die echten Inhalte kam sofort `content/glossar.yaml:8 – Expected string,
received number`: `formen: [169.254]` hatte YAML als Gleitkommazahl gelesen.
Ohne Zeilenangabe hätte ich das in 24 Einträgen gesucht.
- `gray-matter` liefert beim zweiten Einlesen desselben Textes ein Objekt ohne
das Feld `matter` – im Betrieb fällt das nie auf, im Test sofort. Den YAML-Kopf
selbst herauszulösen ist zehn Zeilen Arbeit und beseitigt gleich zwei Probleme.
- Zod-Schemata mit `.default()` haben verschiedene Ein- und Ausgabetypen. Mit
`z.ZodType<T>` erzwingt TypeScript Gleichheit und leitet den falschen Typ ab;
`<S extends z.ZodTypeAny>` mit `z.output<S>` ist die richtige Form.
- Der Auftrag nennt für den Rahmenplan `C1` bis `C4`. Die Verordnung führt in
Abschnitt F aber **fünf** integrativ zu vermittelnde Positionen. Ich habe alle
fünf aufgenommen – sonst fehlt in der Abdeckung ausgerechnet die Position, die
2020 neu dazugekommen ist („Vernetztes Zusammenarbeiten unter Nutzung digitaler
Medien"). Siehe ENTSCHEIDUNGEN.md, E10.
---
## 2026-09-10 · Baustein 1 – Fundament
| Von | Bis | Dauer | Tätigkeit |