feat(doku): Anleitung, PDF und Ende-zu-Ende-Abnahme (#36)
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s

This commit was merged in pull request #36.
This commit is contained in:
2026-09-26 09:04:15 +00:00
parent 9bd198a531
commit fbbb634e56
104 changed files with 4527 additions and 299 deletions
+72 -2
View File
@@ -20,11 +20,12 @@ als Unterpunkte mit Aufgabe und Dauer.
| #015 | M10 – Dashboard und Archiv | 2 h 20 min |
| #016 | M11 – Verzeichnis und LDAP-Abgleich | 3 h 25 min |
| #017 | M12 – Seed der sieben Vorlagen | 1 h 30 min |
| | **Summe** | **27 h 40 min** |
| #018 | M13 – E2E-Tests, Anleitung, PDF | 2 h 15 min |
| | **Summe** | **29 h 55 min** |
| Meilenstein | Tatsächlich | Status |
|---|---|---|
| v0.1.0 | 27 h 40 min | in Arbeit |
| v0.1.0 | 29 h 55 min | in Arbeit |
---
@@ -829,3 +830,72 @@ als Unterpunkte mit Aufgabe und Dauer.
[#021](issues/021-stabiler-schluessel-vorlagen.md) (stabiler Schlüssel für Seed-Vorlagen)
- #018 E2E-Tests, Anleitung und PDF — die Hauptabläufe in beiden Betriebsmodi, die bebilderte
Anleitung für Techniker und Admins und der PDF-Export über Chromium.
---
## 2026-09-26 · Sitzung 14 · 05:30–10:50
**Issue:** #018 (M13)
**Version:** 0.1.0
### Erledigt
- **Vier Teile parallel**: vorhandene Abläufe robust machen, vier neue Abläufe, die Anleitung, der
PDF-Export. Das Fundament — gemeinsamer Helfer, Vorabprüfung, Betriebsmodus — kam vorher von mir
- **Anleitung** unter `docs/anleitung/`: neun Kapitel, rund 11.600 Wörter, getrennt für Technik und
Verwaltung, mit 35 Bildern und einem Fehlerbehebungskapitel aus 18 echten Meldungen
- **`pnpm docs:pdf`**: 72 Seiten A4, Deckblatt, Inhaltsverzeichnis, Seitenzahlen, hell gedruckt,
ohne neue Abhängigkeit (`react-markdown` über `react-dom/server`)
- **Markierungen** in den Screenshots: Rahmen in der Akzentfarbe mit Nummer, für die Stellen, die
ein Kapitel gerade beschreibt
- **Vier neue Abläufe**: Hauptablauf von vorn bis hinten, Onboarding mit Zwischenablage-Vergleich,
Rollen, und 390 px auf achtzehn Seiten
- **101 Ende-zu-Ende-Abläufe** grün (vorher 67), Gesamtsuite unverändert grün
### Entscheidungen
- **Die Voraussetzungen eines Laufs werden geprüft, nicht behauptet.** `tests/e2e/global-setup.ts`
fragt vor dem ersten Ablauf: läuft ein gebauter Stand, steht der Seed-Bestand, und liest der
Server **dieselbe** Datenbank wie der Testprozess? Jede Meldung nennt die Ursache und was zu tun
ist. Die dritte Frage hat in #017 einen halben Abend gekostet.
- **Das PDF kommt nicht ins Repo.** Es entsteht aus Kapiteln und Bildern, die beide versioniert
sind, und würde bei jedem Lauf 8,7 MB neu anhängen. Der Auftrag sagt „liegt jedem Release bei“ —
genau so wird es gemacht.
- **Die `beispiel:*`-Skripte bleiben.** Sie sollten laut ihrem Kopfkommentar mit #017 verschwinden;
dort wurden zwei Dinge verwechselt. Der Seed richtet eine **Installation** ein, die Skripte
stellen her, was **Screenshots und Abläufe** brauchen: einen offenen Entwurf, einen halb
abgearbeiteten Lauf, eine Person aus dem Verzeichnis.
### Probleme
- **Das Projekt „handy" prüfte 412 px statt 390.** `devices["Pixel 7"]` ist 412 breit; CLAUDE.md und
das Abnahmekriterium nennen 390. Jeder „trägt am Handy ohne horizontales Scrollen"-Test lief damit
gegen eine Breite, die niemand verlangt hatte — zweiundzwanzig Pixel, die eine ausbrechende Seite
tadellos aussehen lassen. Nach der Korrektur blieb die Suite grün; die Zusage hielt also, sie war
nur nie geprüft.
- **Eine Auskunft, die niemand je gesehen hat.** Ein angemeldeter Benutzer ohne Recht wurde auf
`/anmelden?fehler=keinrecht` geschickt — und die Anmeldeseite schickt einen Angemeldeten sofort
weiter auf die Übersicht. Die Meldung „Für diesen Bereich fehlt dir die Berechtigung" war
unerreichbar, der Kommentar im Code versprach sie trotzdem. Jetzt gibt es `/kein-zugriff`.
- **Zwei Tests, die Schaden anrichteten.** Der Verzeichnis-Ablauf nahm die erste vorhandene Quelle
und schrieb ihre Attributzuordnung um — in einer echten Installation die produktive. Und ein
Nachlauf setzte die Namensregeln auf leer, statt den vorherigen Wert zurückzustellen: er löschte,
was der Seed eingerichtet hatte. Beides stammt aus meinen eigenen Meilensteinen.
- **Vier stille Annahmen**: Vorlage über die Position in der Liste, „die Datenbank enthält schon
Läufe", `test.skip` bei fehlenden Daten, und Fixtures im Kopfkommentar statt geprüft. Alle vier
fielen erst auf, als zum ersten Mal gegen eine **frisch eingerichtete** Installation geprüft
wurde.
- **Sechs Abläufe kannten die Kundenebene nicht.** Im Modus DIENSTLEISTUNG hat jedes Anlege-Formular
ein Feld mehr, und es ist Pflicht: `kundeErmitteln` wirft sonst. Schlimmer als das Feld ist die
Regel dahinter — ein Lauf kann strukturell kein Gerät und keine Abteilung eines fremden Kunden
wählen, dafür sorgen zusammengesetzte Fremdschlüssel. „Irgendein Kunde" ist dort nicht ungenau,
sondern rot. Beim Onboarding war es sogar eine Reihenfolge: die Kundenwahl stand hinter dem
Namensvorschlag, und ohne Kunden können die Namensregeln gar nicht greifen.
- **Parallele Arbeit an einem Verzeichnis geht schief.** Eine Wegwerf-Probe für den PDF-Bau hat die
`README.md` der Anleitung überschrieben, während sie geschrieben wurde. Wiederhergestellt, aber
der Ablageort für Proben gehört in das Verzeichnis für Zwischenstände, nicht neben die Arbeit.
### Nächster Schritt
- #019 Betriebswege und Release `v0.1.0` — `deploy/install.sh`, der Proxmox-One-Liner, die
Betriebsdokumentation und der Tag mit Release-Notes.