docs/ANLEITUNG.md: 20 Abschnitte, 27 Bildschirmfotos, getrennt fuer Ausbilder und Azubi, dazu "Wenn etwas nicht geht". Die Bilder entstehen automatisiert ueber npm run screenshots - was dort steht, ist gemessen und nicht gemalt. scripts/pruefungen/abnahme.mjs (npm run abnahme) laeuft gegen eine frische, leere Datenbank in einem Wegwerfverzeichnis: aufsetzen, Konten anlegen, arbeiten, abnehmen, sichern, beschaedigen, zurueckspielen. Eine Sicherung, die nie zurueckgespielt wurde, ist keine Sicherung. 33 von 33 Pruefungen erfuellt, Protokoll in docs/ABNAHME.md. Dabei drei echte Fehler gefunden, alle in Wegen, die nie ausgefuehrt worden waren: - Die Sicherungsskripte liefen nicht in Git Bash, obwohl das in ihrem Kopf stand: tar deutet den Doppelpunkt in "C:\..." als Rechnernamen. Beide wechseln jetzt erst ins Verzeichnis und uebergeben einen blossen Dateinamen. - Auf einer frischen Datenbank gibt es noch kein Wochenblatt; der Weg jedes neuen Azubis war nie durchlaufen worden. - Der Abnahmelauf selbst liess unter Windows seinen Server ueberleben (kill() beendet nur die cmd.exe) und prueft deshalb jetzt vorher, ob der Port frei ist - sonst haette er gegen fremde Daten geprueft. Fassung 1.0.0: package.json stand noch auf 0.1.0, waehrend das Aenderungsprotokoll bei 0.9.0 war. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
69 lines
2.6 KiB
Markdown
69 lines
2.6 KiB
Markdown
# Abnahmeprotokoll
|
|
|
|
Erzeugt am 2026-09-11 17:16 Uhr
|
|
|
|
Erzeugt von `scripts/pruefungen/abnahme.mjs` gegen eine **frische, leere Datenbank**.
|
|
|
|
|
|
## A1 · Aus dem Nichts aufsetzbar
|
|
|
|
- ✓ Das erste Ausbilderkonto entsteht auf der Kommandozeile — ohne Fehler
|
|
- ✓ Die Datenbank wurde angelegt und die Migrationen liefen an
|
|
- ✓ Die Anwendung startet und meldet sich gesund
|
|
- ✓ Heile Inhalte werden ohne Beanstandung gelesen — Inhalte in Ordnung
|
|
- ✓ Ein Inhaltsfehler lässt die Prüfung fehlschlagen — Ende 1
|
|
- ✓ Die Meldung nennt die Datei — kaputte-inhalte/handouts/N3-subnetting-rechnen.md:7 (rahmenplan)
|
|
- ✓ Die Meldung nennt die richtige Zeile — erwartet Zeile 7
|
|
- ✓ Die Meldung nennt den fehlerhaften Wert
|
|
- ✓ Die Meldung sagt, wo die gültigen Werte stehen
|
|
|
|
## A2 · Zwei Rollen, keine Selbstregistrierung
|
|
|
|
- ✓ Die Anmeldeseite bietet keine Registrierung
|
|
- ✓ Ohne Anmeldung führt jeder Pfad zur Anmeldung — HTTP 307
|
|
- ✓ Der Ausbilder meldet sich an
|
|
|
|
## A3 · Der Ausbilder legt Konten an
|
|
|
|
- ✓ Der Azubi steht in der Verwaltung
|
|
- ✓ Das Passwort ist in der Oberfläche nirgends mehr zu sehen
|
|
- ✓ In der Datenbank steht kein Klartextpasswort
|
|
- ✓ Das Passwort liegt als Argon2id-Hash — $argon2id$v=19$m=19456,t=2,p=1
|
|
|
|
## A4 · Der Azubi arbeitet
|
|
|
|
- ✓ Der Azubi meldet sich mit dem vergebenen Passwort an
|
|
- ✓ Ein Handout lässt sich als gelesen markieren
|
|
- ✓ Eine Merkkarte lässt sich bewerten — Zuletzt: kommt morgen.
|
|
|
|
## A5 · Aufgabe abgeben und abnehmen
|
|
|
|
- ✓ Der Azubi hält seine Arbeit in Notizen fest
|
|
- ✓ Der Azubi meldet die Aufgabe zur Abnahme
|
|
- ✓ Die Aufgabe erscheint beim Ausbilder zur Abnahme
|
|
- ✓ Der Ausbilder nimmt die Aufgabe ab
|
|
- ✓ Für den Azubi ist die abgenommene Aufgabe gesperrt
|
|
- ✓ Die Abnahme schlägt in der Rahmenplanabdeckung durch
|
|
- ✓ Lücken im Lehrgang werden getrennt ausgewiesen
|
|
|
|
## A6 · Rechte serverseitig
|
|
|
|
- ✓ Der Azubi kommt nicht in die Verwaltung — HTTP 307
|
|
|
|
## A7 · Berichtsheft
|
|
|
|
- ✓ Der Azubi legt das Wochenblatt der laufenden Woche an
|
|
- ✓ Ein Wochenblatt lässt sich öffnen
|
|
- ✓ Das Wochenblatt kommt als PDF heraus — HTTP 200, 2646 Bytes
|
|
|
|
## A8 · Sicherung zurückspielen
|
|
|
|
- ✓ Die Sicherung läuft durch — lernbar-20260911-171627.tar.gz
|
|
- ✓ Zum Beweis wird der Datenbestand beschädigt — 2 → 1 Konten
|
|
- ✓ Die Rückspielung läuft durch — ohne Fehler
|
|
- ✓ Der gelöschte Azubi ist wieder da — Tim Vogt
|
|
- ✓ Auch der Lernverlauf kam mit zurück — 1 Einträge
|
|
- ✓ Der überschriebene Stand wurde zur Seite gelegt, nicht gelöscht — verdraengt-20260911-171632
|
|
|
|
**36 von 36 Prüfungen erfüllt.**
|