Eine veroeffentlichte Vorlagen-Version ist fuer immer unveraenderlich — daran haengt, dass ein archivierter Lauf in zehn Jahren noch genau die Schritte zeigt, mit denen er gestartet wurde. Die Regel steht deshalb zweimal: im Service, der die verstaendliche Meldung gibt, und in der Datenbank, die die Garantie gibt. Vier Trigger fangen Schreibzugriffe ab, die nicht durch den Service kommen — Migrationen, psql, der Seed und ab Phase 4 die Connectoren — und versperren den Rueckweg nach ENTWURF, der alles andere ausgehebelt haette. - Service: anlegen, Kopfdaten bearbeiten, Entwurf als tiefe Kopie der letzten veroeffentlichten Version, speichern, veroeffentlichen, verwerfen, duplizieren, archivieren - Hoechstens ein Entwurf je Vorlage, durchgesetzt vom partiellen Index; zwei gleichzeitige Klicks auf „Bearbeiten“ bekommen denselben Entwurf statt eines Fehlers - Optimistisches Sperren ueber geaendertAm: wer auf einem ueberholten Stand speichert, wird abgewiesen statt die Arbeit des anderen spurlos zu ersetzen - JSON-Export und -Import samt Format-Dokumentation; der Export ist nachsichtig, der Import streng - src/lib/validierung.ts als einzige Zod-Quelle mit deutschen Meldungen, per ESLint-Regel erzwungen Der unabhaengige Review fand drei Blocker, alle an der Mandantengrenze: der Suchfilter brachte ein zweites OR mit und ueberschrieb die Kundenbedingung, Historie und Aufbau einer Version filterten gar nicht. Zu queries/vorlagen.ts gab es keinen Test — jetzt gibt es tests/vorlagen-sicht.test.ts. 428 Tests gruen (vorher 336). Schliesst #009 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
3.1 KiB
3.1 KiB
#017 M12 – Seed der sieben Vorlagen
Status: offen Meilenstein: v0.1.0 Labels: phase-1, backend Geschätzt: 8 h Tatsächlich: –
Ziel
Die App ist nach dem Seed fachlich sofort brauchbar: sieben vollständige, fachlich korrekte Vorlagen als veröffentlichte Version 1.
Aufgaben
- Vorlage 1 „PC Neuinstallation“ (Client), Variablen
os_version,join_typ; Abschnitte Vorbereitung, Installation, Einbindung, Software, Sicherheit, Benutzer, Abschluss - Vorlage 2 „Mitarbeiter-Onboarding“ (Benutzer), Variablen
konto_typ,vorname,nachname,upn,sam,mail,abteilung,ou,gruppen,eintrittsdatum,vorgesetzter; beide Konto-Abschnitte (AD und Entra ID), weil bedingte Abschnitte erst Phase 3 sind - Vorlage 3 „Mitarbeiter-Offboarding“ (Benutzer), Variablen
austrittsdatum,ou_gesperrt,postfach_verbleib,vertreter - Vorlage 4 „Server-Inbetriebnahme Windows-VM“ (Server), Variablen
vmid,ip_adresse,vlan,rolle,os_version - Vorlage 5 „Firewall-Rollout OPNsense“ (Netzwerk), Variablen
wan_typ,lan_netz,vpn_typ - Vorlage 6 „Monatlicher Patchday“ (Wartung), Variable
monat - Vorlage 7 „Backup-Restore-Test“ (Wartung), Variablen
system,restore_typ - Alle Schritte wortgetreu nach Auftrag mit Typ, Pflichtkennzeichen und
konfig; die im Auftrag genannten Hilfetexte übernehmen, die übrigen fachlich korrekt und kurz ergänzen - 5 Mitarbeiter, darunter „Maria Huber“,
m.huber@firma.example,sammhuber, Abteilung Buchhaltung, Vorgesetzte „Petra Klein“ - 3 Abteilungen: Buchhaltung →
OU=Buchhaltung,OU=Benutzer,DC=firma,DC=localmit GruppenG-Buchhaltung, G-Alle; Vertrieb; IT - Eine deaktivierte
Verzeichnisquelleals Beispielkonfiguration - Geräte
PC-001(PC,LZ-7K3F9Q, Besitzerin Maria Huber) undNB-001(Notebook,LZ-M2XH4T), dazu 5 unregistrierte Tags GeraetetypVorlage: PC und NOTEBOOK → „PC Neuinstallation“; SERVER → „Server-Inbetriebnahme Windows-VM“ und „Backup-Restore-Test“; FIREWALL → „Firewall-Rollout OPNsense“SEED_MODE=DIENSTLEISTUNG(AliasSERVICE) erzeugt stattdessen „Musterfirma GmbH“ (MUS) und „Bäckerei Reiter“ (REI) mit je einer Person, einer Abteilung und einem Gerät- Alles idempotent über
upsertmit stabilen Schlüsseln
Akzeptanzkriterien
pnpm db:seedzweimal hintereinander: keine Fehler, keine Duplikate, keine geänderten Zeilen- Alle sieben Vorlagen liegen als
VEROEFFENTLICHT, Version 1 vor - Im Onboarding-Lauf steht im Schritt „Konto anlegen“ der vollständige
New-ADUser-Befehl mit Name, UPN,-Path "OU=Buchhaltung,OU=Benutzer,DC=firma,DC=local"und der Gruppen-Befehl mitG-Buchhaltung, G-Alle SEED_MODE=SERVICEerzeugtMUS-PC-001gemäß Hostname-Regel{kundenkuerzel}-PC-{nnn}- Die Beispiel-Verzeichnisquelle ist deaktiviert und löst keinen Abgleich aus
- Kein Seed-Datensatz enthält ein Klartext-Passwort außer dem Admin-Passwort aus der Umgebung, und das nur als argon2-Hash