Files
lernbar/DEVLOG.md
T
Florian WildeandClaude Opus 5 1af5613e9b 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>
2026-09-10 07:56:38 +02:00

4.4 KiB
Raw Blame History

Arbeitstagebuch

Zeiten in Europe/Berlin. Jeder Abschnitt entspricht einem Baustein aus dem Fahrplan.

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
00:15 00:20 0:05 Auftrag gesichtet, fehlende Stackvorgabe geklärt (Next.js 15 + React 19 + TypeScript), Repository angelegt
00:20 00:28 0:08 Abhängigkeiten installiert; better-sqlite3 auf v12 gehoben, weil es für Node 24 sonst keine fertige Binärdatei gibt und der Bau über Visual Studio scheiterte
00:28 00:40 0:12 Datenbankschicht: Drizzle-Schema, eigener Migrationslauf mit Prüfsummen, Verbindung als Prozess-Singleton
00:40 00:52 0:12 Zeitrechnung (Europe/Berlin, ISO-Kalenderwochen), Argon2id, serverseitige Sitzungen, Rechteregeln als reine Funktionen
00:52 01:10 0:18 Gestaltung: Farbwelt Petrol/Bernstein, helle und dunkle Darstellung, Bedienelemente, Druckansicht
01:10 01:25 0:15 Anmeldung, Rahmenlayout, Startseite, Verwaltung (Konto und Ausbildung anlegen, Passwort, Sperren)
01:25 01:32 0:07 Erstes Ausbilderkonto über Skript angelegt, Typprüfung und Bau grün, Server geprüft
01:32 01:50 0:18 Dockerfile, docker-compose, Lebenszeichen, update.sh mit Rückfall, Sicherung und Wiederherstellung
01:50 02:05 0:15 Fahrplan, Änderungsprotokoll, Arbeitstagebuch, Entscheidungen, README

Summe Baustein 1: rund 1 h 50 min

Was aufgefallen ist

  • Der Auftrag verweist zweimal auf einen „Kopf des Prompts" (Stack, Anmeldung), der nicht mitgeliefert wurde. Die Anmeldung war aus den technischen Vorgaben ableitbar, der Stack nicht – dafür gab es eine Rückfrage.
  • npm blockiert seit Version 11 Installationsskripte fremder Pakete. better-sqlite3, esbuild und unrs-resolver mussten einmalig über npm approve-scripts freigegeben werden. Das gehört in die README, sonst läuft ein Fremder in genau diese Wand.
  • Windows und LF: ohne .gitattributes hätte Git die Shell-Skripte mit CRLF ausgecheckt, und der Linux-Container hätte sie nicht mehr gestartet.