Meilenstein M13: der Nachweis, dass die Abläufe durchlaufen — und eine Anleitung, mit der ein Techniker ohne Einweisung arbeiten kann.
Anleitung und PDF
Neun Kapitel unter docs/anleitung/, getrennt für Technik und Verwaltung: erste Schritte, Läufe abarbeiten (Desktop und Handy), QR-Aufkleber, Vorlagen bauen, Stammdaten, Verzeichnis, Admin, Fehlerbehebung. Letzteres ist eine Liste aus 18 echten Meldungen nach „Symptom → Ursache → was tun". Alle Beschriftungen sind wörtlich aus dem Quelltext übernommen, nicht aus dem Gedächtnis.
pnpm docs:pdf macht daraus 72 Seiten A4 mit Deckblatt, Inhaltsverzeichnis und Seitenzahlen — hell gedruckt, obwohl die App dunkel ist, ohne neue Abhängigkeit. Das PDF liegt nicht im Repo: es entsteht aus Kapiteln und Bildern, die beide versioniert sind, und gehört laut Auftrag ans Release.
Dazu: Screenshots lassen sich jetzt markieren (Rahmen in der Akzentfarbe mit Nummer).
Die Abläufe
Vorher verließen sie sich auf stille Annahmen: die erste Vorlage in der Liste, „die Datenbank enthält schon Läufe", Fixtures im Kopfkommentar. Jetzt prüft tests/e2e/global-setup.ts vor dem ersten Ablauf, ob ein gebauter Stand antwortet, der Seed-Bestand steht und der Server dieselbe Datenbank liest wie der Testprozess — die drei Fragen, deren Antwort vorher „Timeout" oder „0 Treffer" hieß. Jeder Ablauf legt an, was er braucht, und räumt es weg.
Vier neue kommen dazu: Hauptablauf (starten bis archivieren, Schreibschutz), Onboarding (Zwischenablage zeichengenau gegen den angezeigten Befehl, Passwort nirgends in der Datenbank), Rollen, Mobil (390 px auf achtzehn Seiten).
Drei Fehler, die dabei herauskamen
Das Projekt „handy" prüfte 412 px statt 390.devices["Pixel 7"] ist 412 breit; CLAUDE.md und das Abnahmekriterium nennen 390. Jeder Mobil-Test lief gegen eine Breite, die niemand verlangt hatte. Nach der Korrektur blieb alles grün — die Zusage hielt, sie war nur nie geprüft.
Eine Auskunft, die niemand je gesehen hat. Ein angemeldeter Benutzer ohne Recht landete auf /anmelden?fehler=keinrecht, und die Anmeldeseite leitet einen Angemeldeten sofort weiter. Jetzt gibt es /kein-zugriff, mit seiner Rolle darin.
Zwei Tests, die Schaden anrichteten: der Verzeichnis-Ablauf schrieb die Attributzuordnung der ersten vorhandenen Quelle um — in einer echten Installation die produktive; ein Nachlauf setzte die Namensregeln auf leer, statt den vorherigen Wert zurückzustellen.
Der zweite Betriebsmodus
Der erste Durchgang in DIENSTLEISTUNG hatte 28 rote Abläufe, sechs Ursachen, eine blinde Stelle: die Kundenebene. Dort hat jedes Anlege-Formular ein Pflichtfeld mehr — und dahinter eine Regel, die nicht verhandelbar ist: ein Lauf kann strukturell kein Gerät und keine Abteilung eines fremden Kunden wählen. „Irgendein Kunde" ist dort nicht ungenau, sondern rot.
Prüfung
E2E INTERN, echte 390 px
101 bestanden, 0 rot
E2E DIENSTLEISTUNG
97 bestanden, 0 rot
Vitest
1130 bestanden
lint, typecheck, format:pruefen, pruefe:doku
grün
Zwei Bedienlücken, die beim Schreiben der Anleitung auffielen, sind als #34 und #35 festgehalten statt beschönigt.
Meilenstein M13: der Nachweis, dass die Abläufe durchlaufen — und eine Anleitung, mit der ein Techniker ohne Einweisung arbeiten kann.
## Anleitung und PDF
Neun Kapitel unter `docs/anleitung/`, getrennt für Technik und Verwaltung: erste Schritte, Läufe abarbeiten (Desktop **und** Handy), QR-Aufkleber, Vorlagen bauen, Stammdaten, Verzeichnis, Admin, Fehlerbehebung. Letzteres ist eine Liste aus 18 echten Meldungen nach „Symptom → Ursache → was tun". Alle Beschriftungen sind wörtlich aus dem Quelltext übernommen, nicht aus dem Gedächtnis.
`pnpm docs:pdf` macht daraus 72 Seiten A4 mit Deckblatt, Inhaltsverzeichnis und Seitenzahlen — hell gedruckt, obwohl die App dunkel ist, ohne neue Abhängigkeit. Das PDF liegt **nicht** im Repo: es entsteht aus Kapiteln und Bildern, die beide versioniert sind, und gehört laut Auftrag ans Release.
Dazu: Screenshots lassen sich jetzt markieren (Rahmen in der Akzentfarbe mit Nummer).
## Die Abläufe
**Vorher** verließen sie sich auf stille Annahmen: die erste Vorlage in der Liste, „die Datenbank enthält schon Läufe", Fixtures im Kopfkommentar. **Jetzt** prüft `tests/e2e/global-setup.ts` vor dem ersten Ablauf, ob ein gebauter Stand antwortet, der Seed-Bestand steht und der Server **dieselbe Datenbank** liest wie der Testprozess — die drei Fragen, deren Antwort vorher „Timeout" oder „0 Treffer" hieß. Jeder Ablauf legt an, was er braucht, und räumt es weg.
Vier neue kommen dazu: **Hauptablauf** (starten bis archivieren, Schreibschutz), **Onboarding** (Zwischenablage zeichengenau gegen den angezeigten Befehl, Passwort nirgends in der Datenbank), **Rollen**, **Mobil** (390 px auf achtzehn Seiten).
## Drei Fehler, die dabei herauskamen
1. **Das Projekt „handy" prüfte 412 px statt 390.** `devices["Pixel 7"]` ist 412 breit; CLAUDE.md und das Abnahmekriterium nennen 390. Jeder Mobil-Test lief gegen eine Breite, die niemand verlangt hatte. Nach der Korrektur blieb alles grün — die Zusage hielt, sie war nur nie geprüft.
2. **Eine Auskunft, die niemand je gesehen hat.** Ein angemeldeter Benutzer ohne Recht landete auf `/anmelden?fehler=keinrecht`, und die Anmeldeseite leitet einen Angemeldeten sofort weiter. Jetzt gibt es `/kein-zugriff`, mit seiner Rolle darin.
3. **Zwei Tests, die Schaden anrichteten:** der Verzeichnis-Ablauf schrieb die Attributzuordnung der ersten vorhandenen Quelle um — in einer echten Installation die produktive; ein Nachlauf setzte die Namensregeln auf leer, statt den vorherigen Wert zurückzustellen.
## Der zweite Betriebsmodus
Der erste Durchgang in `DIENSTLEISTUNG` hatte **28 rote Abläufe**, sechs Ursachen, eine blinde Stelle: die Kundenebene. Dort hat jedes Anlege-Formular ein Pflichtfeld mehr — und dahinter eine Regel, die nicht verhandelbar ist: ein Lauf kann strukturell kein Gerät und keine Abteilung eines fremden Kunden wählen. „Irgendein Kunde" ist dort nicht ungenau, sondern rot.
## Prüfung
| | |
|---|---|
| E2E `INTERN`, echte 390 px | **101 bestanden, 0 rot** |
| E2E `DIENSTLEISTUNG` | **97 bestanden, 0 rot** |
| Vitest | 1130 bestanden |
| `lint`, `typecheck`, `format:pruefen`, `pruefe:doku` | grün |
Zwei Bedienlücken, die beim Schreiben der Anleitung auffielen, sind als #34 und #35 festgehalten statt beschönigt.
Closes #18
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Neun Kapitel unter docs/anleitung/ fuer Technik und Verwaltung, mit 35
Bildern aus `pnpm docs:screenshots` und einem Fehlerbehebungskapitel aus
echten Meldungen. `pnpm docs:pdf` macht daraus 72 Seiten A4 — hell
gedruckt, mit Deckblatt, Inhaltsverzeichnis und Seitenzahlen, ohne neue
Abhaengigkeit.
Die Ablaeufe pruefen ihre Voraussetzungen, bevor der erste startet:
antwortet ein gebauter Stand, steht der Seed-Bestand, und liest der
Server dieselbe Datenbank wie der Testprozess. Jeder Ablauf legt an, was
er braucht, und raeumt es weg. Vier neue kommen dazu: Hauptablauf,
Onboarding mit Vergleich der Zwischenablage, Rollen und 390 px auf
achtzehn Seiten.
Drei Fehler kamen dabei heraus. Das Projekt „handy" pruefte 412 px statt
der verlangten 390. Ein angemeldeter Benutzer ohne Recht erfuhr nie,
warum er abgewiesen wurde — die Meldung stand auf einer Seite, die ihn
sofort weiterleitet; jetzt gibt es /kein-zugriff. Und der
Verzeichnis-Ablauf schrieb die Attributzuordnung der ersten vorhandenen
Quelle um, in einer echten Installation also der produktiven.
101 Ablaeufe in INTERN und 97 in DIENSTLEISTUNG, beide ohne Fehlschlag.
Closes#18
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Meilenstein M13: der Nachweis, dass die Abläufe durchlaufen — und eine Anleitung, mit der ein Techniker ohne Einweisung arbeiten kann.
Anleitung und PDF
Neun Kapitel unter
docs/anleitung/, getrennt für Technik und Verwaltung: erste Schritte, Läufe abarbeiten (Desktop und Handy), QR-Aufkleber, Vorlagen bauen, Stammdaten, Verzeichnis, Admin, Fehlerbehebung. Letzteres ist eine Liste aus 18 echten Meldungen nach „Symptom → Ursache → was tun". Alle Beschriftungen sind wörtlich aus dem Quelltext übernommen, nicht aus dem Gedächtnis.pnpm docs:pdfmacht daraus 72 Seiten A4 mit Deckblatt, Inhaltsverzeichnis und Seitenzahlen — hell gedruckt, obwohl die App dunkel ist, ohne neue Abhängigkeit. Das PDF liegt nicht im Repo: es entsteht aus Kapiteln und Bildern, die beide versioniert sind, und gehört laut Auftrag ans Release.Dazu: Screenshots lassen sich jetzt markieren (Rahmen in der Akzentfarbe mit Nummer).
Die Abläufe
Vorher verließen sie sich auf stille Annahmen: die erste Vorlage in der Liste, „die Datenbank enthält schon Läufe", Fixtures im Kopfkommentar. Jetzt prüft
tests/e2e/global-setup.tsvor dem ersten Ablauf, ob ein gebauter Stand antwortet, der Seed-Bestand steht und der Server dieselbe Datenbank liest wie der Testprozess — die drei Fragen, deren Antwort vorher „Timeout" oder „0 Treffer" hieß. Jeder Ablauf legt an, was er braucht, und räumt es weg.Vier neue kommen dazu: Hauptablauf (starten bis archivieren, Schreibschutz), Onboarding (Zwischenablage zeichengenau gegen den angezeigten Befehl, Passwort nirgends in der Datenbank), Rollen, Mobil (390 px auf achtzehn Seiten).
Drei Fehler, die dabei herauskamen
devices["Pixel 7"]ist 412 breit; CLAUDE.md und das Abnahmekriterium nennen 390. Jeder Mobil-Test lief gegen eine Breite, die niemand verlangt hatte. Nach der Korrektur blieb alles grün — die Zusage hielt, sie war nur nie geprüft./anmelden?fehler=keinrecht, und die Anmeldeseite leitet einen Angemeldeten sofort weiter. Jetzt gibt es/kein-zugriff, mit seiner Rolle darin.Der zweite Betriebsmodus
Der erste Durchgang in
DIENSTLEISTUNGhatte 28 rote Abläufe, sechs Ursachen, eine blinde Stelle: die Kundenebene. Dort hat jedes Anlege-Formular ein Pflichtfeld mehr — und dahinter eine Regel, die nicht verhandelbar ist: ein Lauf kann strukturell kein Gerät und keine Abteilung eines fremden Kunden wählen. „Irgendein Kunde" ist dort nicht ungenau, sondern rot.Prüfung
INTERN, echte 390 pxDIENSTLEISTUNGlint,typecheck,format:pruefen,pruefe:dokuZwei Bedienlücken, die beim Schreiben der Anleitung auffielen, sind als #34 und #35 festgehalten statt beschönigt.
Closes #18
🤖 Generated with Claude Code