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

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:
Florian Wilde
2026-09-26 05:26:04 +02:00
co-authored by Claude Opus 5
parent ae290345b7
commit 5c81a62cfd
33 changed files with 3400 additions and 119 deletions
@@ -0,0 +1,31 @@
# #021 Stabiler Schlüssel für Seed-Vorlagen
**Status:** offen
**Im Tracker:** [#32](https://git.wilde-server.de/florian.wilde/Laufzettel/issues/32) — die Zählung dort schließt Pull Requests ein und läuft deshalb auseinander
**Meilenstein:** v0.2.0
**Labels:** phase-2, backend
**Geschätzt:** 2 h **Tatsächlich:** –
## Ziel
Der Seed erkennt seine sieben Vorlagen am **Namen**. Wird eine umbenannt, legt der nächste Lauf sie
erneut an — und `GeraetetypVorlage` bekommt eine zweite Zeile, der Schnellstart steht auf der
Geräteseite doppelt. Aufgefallen im Review zu [#017](017-seed-sieben-vorlagen.md).
## Aufgaben
- [ ] Ein optionales Feld `schluessel` im [Austauschformat](../vorlagen-format.md) — gedacht für
mitgelieferte Vorlagen, nicht für die Oberfläche; beim Import **nicht** übernommen, damit eine
eingespielte Kopie nicht den Platz des Originals einnimmt
- [ ] `Vorlage.seedSchluessel` mit partiellem eindeutigen Index (nur wo gesetzt)
- [ ] Der Seed sucht über den Schlüssel und fällt auf den Namen zurück, solange noch keiner gesetzt
ist — eine bestehende Installation darf beim ersten Lauf danach keine Dubletten bekommen
- [ ] Dokumentieren, was der Schlüssel **nicht** tut: er macht eine Vorlage nicht unveränderlich und
erlaubt dem Seed nicht, eine bearbeitete Vorlage zu überschreiben
## Akzeptanzkriterien
- [ ] Test: umbenannte Seed-Vorlage, zweiter Seed-Lauf legt keine zweite an
- [ ] Test: zweiter Lauf erzeugt keine zweite `GeraetetypVorlage`-Zeile
- [ ] Test: eine über den Import eingespielte Kopie bekommt **keinen** Schlüssel