Baustein 10b: Anleitung mit Screenshots, Abnahmelauf, Fassung 1.0.0

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>
This commit is contained in:
Florian Wilde
2026-09-11 19:26:34 +02:00
co-authored by Claude Opus 5
parent 2babef9293
commit c61d5711e0
21 changed files with 1201 additions and 15 deletions
+68
View File
@@ -0,0 +1,68 @@
# 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.**