M4 – Vorlagen-Versionierung im Service #9

Closed
opened 2026-09-24 20:44:40 +00:00 by florian.wilde · 0 comments
Owner

Status: offen
Meilenstein: v0.1.0
Labels: phase-1, backend
Geschätzt: 6 h Tatsächlich: –

Ziel

Die harte Regel der Anwendung: eine veröffentlichte Version ist für immer unveränderlich, damit ein Archiv-Lauf für immer nachvollziehbar bleibt. Diese Regel sitzt in der Service-Schicht, nicht in der Oberfläche.

Aufgaben

  • Services für Vorlage, VorlagenVersion, VorlagenAbschnitt, VorlagenSchritt, VorlagenVariable
  • vorlageVeroeffentlichenService: setzt status = VEROEFFENTLICHT, veroeffentlichtAm, veroeffentlichtVonId, Änderungsnotiz, Protokoll-Eintrag
  • vorlageBearbeitenService: tiefe Kopie der letzten veröffentlichten Version als neuer Entwurf mit fortlaufender version; kopiert Variablen, Abschnitte und Schritte samt konfig
  • Höchstens ein Entwurf je Vorlage — zweiter Versuch wirft VorlagenFehler mit Verweis auf den bestehenden Entwurf
  • Jede Schreiboperation auf einer veröffentlichten Version wirft; zentral in versionMussEntwurfSein()
  • Läufe verweisen ausschließlich auf veröffentlichte Versionen — beim Anlegen geprüft
  • vorlageDuplizierenService: neue Vorlage mit Entwurf als Kopie
  • JSON-Export und -Import mit Zod-Schema, Format in docs/vorlagen-format.md dokumentiert (Version des Formats, Abschnitte, Schritte, Variablen, konfig)
  • Rechte: REDAKTEUR und ADMIN dürfen anlegen, bearbeiten, veröffentlichen; TECHNIKER und LESER nicht

Akzeptanzkriterien

  • Test: nach dem Veröffentlichen schlägt jede Änderung an Version, Abschnitten, Schritten und Variablen fehl
  • Test: „Bearbeiten" erzeugt eine tiefe Kopie — Änderungen am Entwurf lassen die veröffentlichte Version unberührt, auch in verschachtelten konfig-Feldern
  • Test: ein zweiter Entwurf wird abgelehnt
  • Test: ein Lauf auf Version 1 bleibt nach Veröffentlichen von Version 2 unverändert und zeigt weiter die Schritte aus Version 1
  • Test: Export und anschließender Import ergeben eine inhaltsgleiche Vorlage
  • Test: TECHNIKER darf nicht veröffentlichen
  • Test: Veröffentlichen schreibt einen Protokoll-Eintrag

Quelle: docs/issues/009-vorlagen-versionierung.md — dort gepflegt, hierher gespiegelt.

**Status:** offen **Meilenstein:** v0.1.0 **Labels:** phase-1, backend **Geschätzt:** 6 h **Tatsächlich:** – ## Ziel Die harte Regel der Anwendung: eine veröffentlichte Version ist für immer unveränderlich, damit ein Archiv-Lauf für immer nachvollziehbar bleibt. Diese Regel sitzt in der Service-Schicht, nicht in der Oberfläche. ## Aufgaben - [ ] Services für `Vorlage`, `VorlagenVersion`, `VorlagenAbschnitt`, `VorlagenSchritt`, `VorlagenVariable` - [ ] `vorlageVeroeffentlichenService`: setzt `status = VEROEFFENTLICHT`, `veroeffentlichtAm`, `veroeffentlichtVonId`, Änderungsnotiz, `Protokoll`-Eintrag - [ ] `vorlageBearbeitenService`: tiefe Kopie der letzten veröffentlichten Version als neuer Entwurf mit fortlaufender `version`; kopiert Variablen, Abschnitte und Schritte samt `konfig` - [ ] Höchstens ein Entwurf je Vorlage — zweiter Versuch wirft `VorlagenFehler` mit Verweis auf den bestehenden Entwurf - [ ] Jede Schreiboperation auf einer veröffentlichten Version wirft; zentral in `versionMussEntwurfSein()` - [ ] Läufe verweisen ausschließlich auf veröffentlichte Versionen — beim Anlegen geprüft - [ ] `vorlageDuplizierenService`: neue Vorlage mit Entwurf als Kopie - [ ] JSON-Export und -Import mit Zod-Schema, Format in `docs/vorlagen-format.md` dokumentiert (Version des Formats, Abschnitte, Schritte, Variablen, `konfig`) - [ ] Rechte: `REDAKTEUR` und `ADMIN` dürfen anlegen, bearbeiten, veröffentlichen; `TECHNIKER` und `LESER` nicht ## Akzeptanzkriterien - [ ] Test: nach dem Veröffentlichen schlägt jede Änderung an Version, Abschnitten, Schritten und Variablen fehl - [ ] Test: „Bearbeiten" erzeugt eine tiefe Kopie — Änderungen am Entwurf lassen die veröffentlichte Version unberührt, auch in verschachtelten `konfig`-Feldern - [ ] Test: ein zweiter Entwurf wird abgelehnt - [ ] Test: ein Lauf auf Version 1 bleibt nach Veröffentlichen von Version 2 unverändert und zeigt weiter die Schritte aus Version 1 - [ ] Test: Export und anschließender Import ergeben eine inhaltsgleiche Vorlage - [ ] Test: `TECHNIKER` darf nicht veröffentlichen - [ ] Test: Veröffentlichen schreibt einen `Protokoll`-Eintrag --- Quelle: `docs/issues/009-vorlagen-versionierung.md` — dort gepflegt, hierher gespiegelt.
florian.wilde added this to the v0.1.0 milestone 2026-09-24 20:44:40 +00:00
florian.wilde added the phase-1backend labels 2026-09-24 20:44:40 +00:00
Sign in to join this conversation.