feat(seed): sieben Vorlagen, Beispielbestand und Demo-Kunden
Die sieben Ablaeufe des Hauses liegen nach dem Seed als veroeffentlichte Version 1 bereit: 36 Abschnitte, 155 Schritte, 28 Variablen, jeder Schritt mit Hilfetext. Sie stehen als JSON im Austauschformat unter prisma/seed-daten/vorlagen/ und werden beim Einrichten gegen dasselbe Schema geprueft wie ein Import. Der Seed richtet ein, er raeumt nicht auf: jede Zeile hat einen sprechenden Schluessel, und was es schon gibt, bleibt unberuehrt. Erst Entwurf, dann veroeffentlichen - die Trigger aus #010 lassen keinen anderen Weg zu. Im Modus DIENSTLEISTUNG haengt der Beispielbestand an der Musterfirma, LZ-7K3F9Q fuehrt also auf MUS-PC-001. Dazu zwei Zusagen eingeloest, die niemand deckte: {{ou_gesperrt}} kommt jetzt wirklich aus den Einstellungen, und Titel und Hilfetext eines Laufs bekommen dasselbe generierte Passwort wie der Befehl daneben - vorher stand im Befehl A und im Hilfetext B. Closes #17 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ae290345b7
commit
5c81a62cfd
+79
-2
@@ -19,11 +19,12 @@ als Unterpunkte mit Aufgabe und Dauer.
|
||||
| #014 | M9 – QR-Tags, Geräteseite, Etiketten, Scanner | 3 h 35 min |
|
||||
| #015 | M10 – Dashboard und Archiv | 2 h 20 min |
|
||||
| #016 | M11 – Verzeichnis und LDAP-Abgleich | 3 h 25 min |
|
||||
| | **Summe** | **26 h 10 min** |
|
||||
| #017 | M12 – Seed der sieben Vorlagen | 1 h 30 min |
|
||||
| | **Summe** | **27 h 40 min** |
|
||||
|
||||
| Meilenstein | Tatsächlich | Status |
|
||||
|---|---|---|
|
||||
| v0.1.0 | 26 h 10 min | in Arbeit |
|
||||
| v0.1.0 | 27 h 40 min | in Arbeit |
|
||||
|
||||
---
|
||||
|
||||
@@ -752,3 +753,79 @@ als Unterpunkte mit Aufgabe und Dauer.
|
||||
|
||||
- #017 Seed der sieben Vorlagen — alle sieben wortgetreu als veröffentlichte Version 1, dazu die
|
||||
Beispieldaten und der Modus `DIENSTLEISTUNG` mit „Musterfirma GmbH“ und „Bäckerei Reiter“.
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-26 · Sitzung 13 · 02:35–04:05
|
||||
|
||||
**Issue:** #017 (M12)
|
||||
**Version:** 0.1.0
|
||||
|
||||
### Erledigt
|
||||
|
||||
- **Drei Teile parallel**: Vorlagen 1 und 4, Vorlagen 2 und 3, Vorlagen 5 bis 7 (je ein Sub-Agent);
|
||||
die Seed-Infrastruktur selbst
|
||||
- Die sieben Vorlagen als JSON im Austauschformat: 36 Abschnitte, 155 Schritte, 28 Variablen,
|
||||
jeder Schritt mit Hilfetext, als veröffentlichte Version 1 im Seed
|
||||
- Beispielbestand (3 Abteilungen, 5 Personen, `PC-001`, `NB-001`, 5 vorgedruckte Tags,
|
||||
Schnellstart je Gerätetyp), deaktivierte Beispiel-Verzeichnisquelle, Namensregeln und Sperr-OU
|
||||
- `SEED_MODE=DIENSTLEISTUNG` legt „Musterfirma GmbH" und „Bäckerei Reiter" an — der
|
||||
Beispielbestand hängt dann an der Musterfirma, `LZ-7K3F9Q` führt auf `MUS-PC-001`
|
||||
- Unabhängiger Review: **zwei Blocker**, neun Befunde, sieben Anmerkungen — alle abgearbeitet
|
||||
- Zwei Zusagen der Oberfläche eingelöst, die niemand deckte: `{{ou_gesperrt}}` kommt jetzt wirklich
|
||||
aus den Einstellungen, und der Hilfetext neben einem Befehl zeigt kein zweites Passwort mehr
|
||||
- **1131 Tests** (vorher 1098) grün, im gebauten Stand durchgeklickt: Lauf aus der
|
||||
Onboarding-Vorlage, `-Path "OU=Buchhaltung,OU=Benutzer,DC=firma,DC=local"` und
|
||||
`"G-Buchhaltung, G-Alle"` kommen aus der Abteilung, kein roher Platzhalter bleibt stehen
|
||||
|
||||
### Entscheidungen
|
||||
|
||||
- **Die Vorlagen sind Daten, kein Code.** Als JSON im Austauschformat prüft sie dasselbe Schema wie
|
||||
Import, Export und Editor: eine Seed-Vorlage ist genau das, was ein Redakteur einspielen könnte.
|
||||
Wer eine ändern will, ändert eine Datei und braucht keinen Übersetzer.
|
||||
- **Der Seed geht denselben Weg wie ein Redakteur**: erst Entwurf, dann veröffentlichen. Nicht aus
|
||||
Stilgefühl — die Trigger aus #010 verbieten jedes Schreiben an einer veröffentlichten Version.
|
||||
- **Der Seed richtet ein, er räumt nicht auf.** Kein `upsert` mit gefülltem `update`: eine
|
||||
bearbeitete Vorlage, eine geänderte Ziel-OU und ein umgeschalteter Betriebsmodus überstehen jeden
|
||||
weiteren Lauf.
|
||||
- **Tag-Codes fest statt gezogen.** Ein Seed, der jedes Mal fünf neue Codes zieht, ist nicht
|
||||
idempotent — beim dritten Lauf lägen fünfzehn Aufkleber im Stapel.
|
||||
|
||||
### Probleme
|
||||
|
||||
- **Die Datenbank hat den Seed korrigiert.** Der erste Entwurf legte die Version gleich als
|
||||
`VEROEFFENTLICHT` an und füllte sie danach — die Trigger aus #010 haben das abgewiesen. Genau
|
||||
dafür stehen sie dort.
|
||||
- **Zwei verschiedene Passwörter auf einer Seite** (Blocker): die Hilfetexte trugen
|
||||
`{{generiertes_passwort}}`, und das Lesemodell löste Hilfetexte ohne das Passwort des
|
||||
Seitenaufbaus auf. Im Befehl stand A, im Hilfetext daneben B. Die Warnung davor stand seit #012
|
||||
wörtlich in der Kopfdokumentation des Moduls, das beides erzeugt.
|
||||
- **Ein verbrannter Tag-Code kam zurück** (Blocker): der Seed fragte nur nach dem Gerät, nicht nach
|
||||
dem Vergabebuch — und der Kommentar derselben Funktion beschrieb genau den Fehler, den sie machte.
|
||||
- **„Stattdessen" hieß „zusätzlich".** Im Modus DIENSTLEISTUNG hing der Beispielbestand weiter an
|
||||
der eigenen Organisation; das Abnahmekriterium `LZ-7K3F9Q` → `MUS-PC-001` wäre in keinem Modus
|
||||
erfüllt gewesen. Ein Wort im Auftrag, drei Dateien Arbeit.
|
||||
- **Mein eigener Test konnte nicht scheitern** — zum zweiten Mal in zwei Meilensteinen. Die Suche
|
||||
nach Klartextpasswörtern lief gegen `JSON.stringify`, wo vor jedem Anführungszeichen ein
|
||||
Backslash steht; ein eingebautes `passwort = "Sommer2026!"` blieb unbemerkt. Gefunden durch die
|
||||
Gegenprobe, die seitdem zum Schreiben eines solchen Tests gehört: einmal absichtlich verletzen.
|
||||
- **Eine Wegwerfdatei im Wurzelverzeichnis** ließ `pnpm format:pruefen` scheitern, während der
|
||||
Review lief. Sie gehört in das Verzeichnis für Zwischenstände, nicht neben den Quelltext.
|
||||
- **Zum zweiten Mal gegen einen veralteten Server geprüft.** `pkill -f "next-server"` erwischte den
|
||||
eigenen Shell-Prozess statt den Server; der lief mit dem Stand von neunzehn Minuten zuvor weiter.
|
||||
Das sah aus wie ein Codefehler — `ChunkLoadError`, leere Editor-Seite, fünf rote Abläufe. Seitdem:
|
||||
`ps -eo lstart` gegen `.next/BUILD_ID` halten, bevor man der Seite glaubt.
|
||||
- **Der E2E-Lauf schrieb in eine andere Datenbank, als der Server las.** Die Abläufe legen ihre
|
||||
Fixtures über `prisma` aus `.env` an, der Server bekommt seine Adresse über die Umgebung. Zeigen
|
||||
beide woandershin, heißt die Meldung „0 Treffer" und sagt nichts über die Ursache.
|
||||
- **Der Seed hat die E2E-Suite rot gemacht.** Die Abläufe wählten ihre Vorlage über `index: 1` —
|
||||
eine Annahme über die Sortierung der Vorlagenliste, die genau so lange hielt, wie es nur eine
|
||||
Vorlage gab. Jetzt wird sie am Namen gesucht.
|
||||
|
||||
### Nächster Schritt
|
||||
|
||||
- Zwei Folge-Issues aus dem Review: [#020](issues/020-vorgesetzter-manuell.md) (Vorgesetzter
|
||||
für von Hand angelegte Personen) und
|
||||
[#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.
|
||||
|
||||
Reference in New Issue
Block a user