feat(seed): sieben Vorlagen, Beispielbestand und Demo-Kunden #33

Merged
florian.wilde merged 1 commits from feat/17-seed-vorlagen into main 2026-09-26 03:26:59 +00:00
Owner

Meilenstein M12: Nach dem Seed ist die Anwendung fachlich brauchbar — und vorführbar.

Was drin ist

  • Die sieben Vorlagen als veröffentlichte Version 1: PC Neuinstallation, Onboarding, Offboarding, Server-Inbetriebnahme, Firewall-Rollout, Patchday, Restore-Test. 36 Abschnitte, 155 Schritte, 28 Variablen, jeder Schritt mit Hilfetext.
  • Sie liegen als JSON im Austauschformat unter prisma/seed-daten/vorlagen/ und werden beim Einrichten gegen dasselbe Zod-Schema geprüft wie ein Import. Wer eine ändern will, ändert eine Datei.
  • Beispielbestand: 3 Abteilungen mit Ziel-OU und Standardgruppen, 5 Personen, PC-001 und NB-001 mit ihren Tag-Codes, 5 vorgedruckte Tags, Schnellstart je Gerätetyp, eine deaktivierte Verzeichnisquelle.
  • Namensregeln und Sperr-OU: „Namen aus den Regeln vorschlagen" schlägt für Maria Huber genau m.huber@firma.example und mhuber vor — dieselben Werte, die in der Personenliste stehen.
  • SEED_MODE=DIENSTLEISTUNG legt „Musterfirma GmbH" und „Bäckerei Reiter" an; der Beispielbestand hängt dann an der Musterfirma, LZ-7K3F9Q führt also auf MUS-PC-001.

Zwei Zusagen, die niemand deckte

  • {{ou_gesperrt}} war gespeichert und wurde von keinem Platzhalter gelesen: Move-ADObject -TargetPath "" blieb leer, obwohl die Einstellungsseite „Wird beim Offboarding vorbelegt" verspricht.
  • Titel und Hilfetext eines Laufs bekommen jetzt dasselbe generierte Passwort wie der Befehl daneben. Vorher erzeugte jede Auflösung ein eigenes — im Befehl stand A, im Hilfetext B. Wer B in den Passwortmanager legt, sperrt den neuen Mitarbeiter aus.

Der Review

Zwei Blocker, neun Befunde, sieben Anmerkungen — alle abgearbeitet, festgehalten in docs/issues/017-seed-sieben-vorlagen.md. Die schwersten:

  1. Die zwei verschiedenen Passwörter (oben).
  2. Der Seed vergab einen verbrannten Tag-Code neu: er fragte nur die Geräteliste, nicht das Vergabebuch.
  3. „Stattdessen" hieß „zusätzlich": LZ-7K3F9Q führte im Modus DIENSTLEISTUNG auf PC-001 der eigenen Organisation — das Abnahmekriterium wäre in keinem Modus erfüllt gewesen.
  4. Der Seed schrieb in fremde Kundendaten (Demo-Kunden nur am Kürzel erkannt) und stürzte ab, wenn eine Vorlage gleichen Namens nur als Entwurf existierte.

Prüfung

pnpm lint && pnpm typecheck && pnpm format:pruefen && pnpm test && pnpm pruefe:doku grün — 1130 Tests (vorher 1098). 71 Ende-zu-Ende-Tests gegen den gebauten Stand und eine frisch geseedete Datenbank, alle grün.

pnpm db:seed zweimal auf leerer Datenbank in beiden Modi: der zweite Lauf ändert nichts. Von Hand durchgeklickt: Lauf aus der Onboarding-Vorlage, -Path "OU=Buchhaltung,OU=Benutzer,DC=firma,DC=local" und "G-Buchhaltung, G-Alle" kommen aus der Abteilung, wenn man die Felder leer lässt.

Ein Nebenbefund: der Seed hatte die E2E-Suite rot gemacht — die Abläufe wählten ihre Vorlage über index: 1. Sie suchen sie jetzt am Namen; zwei weitere Annahmen der Abläufe stehen als Aufgaben in #18.

Closes #17

🤖 Generated with Claude Code

Meilenstein M12: Nach dem Seed ist die Anwendung fachlich brauchbar — und vorführbar. ## Was drin ist - **Die sieben Vorlagen** als veröffentlichte Version 1: PC Neuinstallation, Onboarding, Offboarding, Server-Inbetriebnahme, Firewall-Rollout, Patchday, Restore-Test. 36 Abschnitte, 155 Schritte, 28 Variablen, **jeder Schritt mit Hilfetext**. - Sie liegen als **JSON im Austauschformat** unter `prisma/seed-daten/vorlagen/` und werden beim Einrichten gegen dasselbe Zod-Schema geprüft wie ein Import. Wer eine ändern will, ändert eine Datei. - **Beispielbestand**: 3 Abteilungen mit Ziel-OU und Standardgruppen, 5 Personen, `PC-001` und `NB-001` mit ihren Tag-Codes, 5 vorgedruckte Tags, Schnellstart je Gerätetyp, eine **deaktivierte** Verzeichnisquelle. - **Namensregeln und Sperr-OU**: „Namen aus den Regeln vorschlagen" schlägt für Maria Huber genau `m.huber@firma.example` und `mhuber` vor — dieselben Werte, die in der Personenliste stehen. - **`SEED_MODE=DIENSTLEISTUNG`** legt „Musterfirma GmbH" und „Bäckerei Reiter" an; der Beispielbestand hängt dann an der Musterfirma, `LZ-7K3F9Q` führt also auf `MUS-PC-001`. ## Zwei Zusagen, die niemand deckte - **`{{ou_gesperrt}}`** war gespeichert und wurde von keinem Platzhalter gelesen: `Move-ADObject -TargetPath ""` blieb leer, obwohl die Einstellungsseite „Wird beim Offboarding vorbelegt" verspricht. - **Titel und Hilfetext** eines Laufs bekommen jetzt **dasselbe** generierte Passwort wie der Befehl daneben. Vorher erzeugte jede Auflösung ein eigenes — im Befehl stand A, im Hilfetext B. Wer B in den Passwortmanager legt, sperrt den neuen Mitarbeiter aus. ## Der Review Zwei Blocker, neun Befunde, sieben Anmerkungen — alle abgearbeitet, festgehalten in `docs/issues/017-seed-sieben-vorlagen.md`. Die schwersten: 1. Die zwei verschiedenen Passwörter (oben). 2. Der Seed vergab einen **verbrannten Tag-Code** neu: er fragte nur die Geräteliste, nicht das Vergabebuch. 3. „Stattdessen" hieß „zusätzlich": `LZ-7K3F9Q` führte im Modus DIENSTLEISTUNG auf `PC-001` der eigenen Organisation — das Abnahmekriterium wäre in **keinem** Modus erfüllt gewesen. 4. Der Seed schrieb in fremde Kundendaten (Demo-Kunden nur am Kürzel erkannt) und stürzte ab, wenn eine Vorlage gleichen Namens nur als Entwurf existierte. ## Prüfung `pnpm lint && pnpm typecheck && pnpm format:pruefen && pnpm test && pnpm pruefe:doku` grün — **1130 Tests** (vorher 1098). **71 Ende-zu-Ende-Tests** gegen den gebauten Stand und eine frisch geseedete Datenbank, alle grün. `pnpm db:seed` zweimal auf leerer Datenbank in beiden Modi: der zweite Lauf ändert nichts. Von Hand durchgeklickt: Lauf aus der Onboarding-Vorlage, `-Path "OU=Buchhaltung,OU=Benutzer,DC=firma,DC=local"` und `"G-Buchhaltung, G-Alle"` kommen aus der Abteilung, wenn man die Felder leer lässt. Ein Nebenbefund: der Seed hatte die E2E-Suite rot gemacht — die Abläufe wählten ihre Vorlage über `index: 1`. Sie suchen sie jetzt am Namen; zwei weitere Annahmen der Abläufe stehen als Aufgaben in #18. Closes #17 🤖 Generated with [Claude Code](https://claude.com/claude-code)
florian.wilde added 1 commit 2026-09-26 03:26:47 +00:00
feat(seed): sieben Vorlagen, Beispielbestand und Demo-Kunden
Prüfung / pruefung (push) Canceled after 0s
Prüfung / pruefung (pull_request) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
Prüfung / e2e (pull_request) Canceled after 0s
5c81a62cfd
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>
florian.wilde merged commit 9bd198a531 into main 2026-09-26 03:26:59 +00:00
florian.wilde deleted branch feat/17-seed-vorlagen 2026-09-26 03:26:59 +00:00
Sign in to join this conversation.