Files
Laufzettel/docs/issues/README.md
T
Florian WildeandClaude Opus 5 d30bb6d235
Prüfung / pruefung (push) Waiting to run
Prüfung / e2e (push) Blocked by required conditions
feat(laeufe): Vier-Augen-Freigabe (#040)
Verlangt eine Vorlagen-Version eine Freigabe, laesst sich ein Lauf erst
abschliessen, wenn ein Zweiter ihn freigegeben hat. Das braucht zweierlei, und
beides zusammen: das neue Recht `freigeben` (ADMIN und REDAKTEUR, nicht
TECHNIKER) und dass man nicht an dem Lauf gearbeitet hat.

Als gearbeitet zaehlt: angelegt, einen Schritt gesetzt oder abgeschlossen. Eine
Zuweisung allein nicht — waere die Regel hier strenger, blockierte sie kleine
Teams ohne Gewinn.

Auch ein Administrator kann sich nicht selbst freigeben, und das ist der ganze
Sinn. Die Pruefung sitzt in `hatDaranGearbeitet` an einer Stelle, wie
`laufMussVeraenderbarSein`; die wichtigste Haelfte — der Ersteller — haelt
zusaetzlich ein CHECK in der Datenbank.

Zurueckweisen verlangt eine Begruendung, setzt den Lauf auf IN_ARBEIT und nimmt
eine erteilte Freigabe zurueck. Kein fuenfter LaufStatus: ein neuer Enum-Wert
haette jeden Codepfad betroffen, der heute vier Faelle kennt.

Sobald jemand abzuschliessen versucht und die Freigabe fehlt, bekommen die
Freigabeberechtigten eine Mail — ein anderer Empfaengerkreis als bei jeder
anderen Meldung, und ohne die, die gearbeitet haben. Die Aufforderung entsteht
ausserhalb der Transaktion: innerhalb wuerde sie mit dem Fehler zurueckgerollt,
und dann wartet ein Lauf auf etwas, von dem niemand weiss. Ein partieller
Unique-Index haelt sie bei mehreren Versuchen auf einmal.

Die Pflicht haengt an der Version, nicht an der Vorlage: eine veroeffentlichte
Version ist unveraenderlich, ein laufender Lauf behaelt also seine Regel. Beim
Bearbeiten und Duplizieren wandert sie mit — das war die unmittelbare Lehre aus
#039, wo die tiefe Kopie zwei Felder stillschweigend verworfen hatte.

1526 Vitest-Tests (vorher 1496), 115 E2E-Ablaeufe gruen. Klickprobe am gebauten
Stand mit elf Pruefungen; drei rote Punkte darin waren meine eigenen
Testfehler, einer davon lehrreich: ein reload() direkt nach einer Server Action
trifft den Router-Cache von Next und zeigt kurz den alten Stand.

Closes #40

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-24 01:14:04 +02:00

5.2 KiB
Raw Blame History

Issues

Diese Dateien sind die Quelle; pnpm issues:sync spiegelt sie in den Gitea-Tracker. pnpm pruefe:doku erzwingt, dass Dateien und diese Übersicht übereinstimmen.

Nr. Titel Status Meilenstein Geschätzt Tatsächlich
#001 Phase 1: MVP in Arbeit v0.1.0 – –
#002 Phase 2: Verzeichnis-Alternativen, Bausteine, Anhänge in Arbeit v0.2.0 76 h –
#003 Phase 3: Protokoll, bedingte Schritte, Freigabe offen v0.3.0 – –
#004 Phase 4: Aktionen, Connectors, REST-API offen v0.4.0 – –
#005 M0 – Gerüst, Prozess, Design-Token erledigt v0.1.0 6 h 1 h 25 min
#006 M1 – Datenmodell erledigt v0.1.0 5 h 1 h 10 min
#007 M2 – Auth, Rollen, Benutzer erledigt v0.1.0 8 h 1 h 35 min
#008 M3 – Betriebsmodus und Kunden erledigt v0.1.0 6 h 1 h 20 min
#009 M4 – Vorlagen-Versionierung im Service erledigt v0.1.0 6 h 1 h 20 min
#010 M5 – Vorlagen-Editor erledigt v0.1.0 10 h 2 h 10 min
#011 M6 – Mitarbeiter, Abteilungen, Geräte erledigt v0.1.0 9 h 2 h 15 min
#012 M7 – Platzhalter, Namensregeln, Escaping erledigt v0.1.0 8 h 2 h 30 min
#013 M8 – Läufe: Service und Abarbeitung erledigt v0.1.0 14 h 3 h 05 min
#014 M9 – QR-Tags, Geräteseite, Etiketten, Scanner erledigt v0.1.0 12 h 3 h 35 min
#015 M10 – Dashboard und Archiv erledigt v0.1.0 8 h 2 h 20 min
#016 M11 – Verzeichnis und LDAP-Abgleich erledigt v0.1.0 12 h 3 h 25 min
#017 M12 – Seed der sieben Vorlagen erledigt v0.1.0 8 h 1 h 30 min
#018 M13 – E2E-Tests, Anleitung, PDF erledigt v0.1.0 14 h 2 h 15 min
#019 M14 – Betriebswege und Release v0.1.0 erledigt v0.1.0 10 h 5 h 25 min
#020 Vorgesetzter auch für von Hand angelegte Personen erledigt v0.2.0 3 h 1 h 20 min
#021 Stabiler Schlüssel für Seed-Vorlagen erledigt v0.2.0 2 h 55 min
#022 Schnellstart je Gerätetyp pflegen erledigt v0.2.0 3 h 1 h 10 min
#023 Protokoll ansehen erledigt v0.2.0 4 h 1 h 50 min
#024 Proxmox-Einzeiler auf einem echten PVE-Host gegenprüfen offen v0.3.0 2 h –
#025 Healthcheck gibt die rohe Datenbankfehlermeldung heraus erledigt v0.2.0 1 h 25 min
#026 Zwei Konventionen präzisieren, die strenger klingen als sie gemeint sind erledigt v0.2.0 1 h 20 min
#027 Die Editor-Abläufe lassen ihre Vorlagen stehen erledigt v0.2.0 1 h 2 h 10 min
#028 M15 – Quellenarten und Microsoft-Graph-Quelle erledigt v0.2.0 10 h 4 h 10 min
#029 M16 – SCIM-Endpunkt als Alternative zum Abgleich erledigt v0.2.0 12 h 4 h 05 min
#030 M17 – Wiederverwendbare Bausteine erledigt v0.2.0 12 h 2 h 25 min
#031 M18 – Abteilungsspezifische Zusatzabschnitte erledigt v0.2.0 8 h 1 h 35 min
#032 M19 – Anhänge und Fotos an Schritten erledigt v0.2.0 10 h 3 h 05 min
#033 M20 – Live-Aktualisierung per SSE statt Polling erledigt v0.2.0 6 h 1 h 40 min
#034 M21 – Benachrichtigungen per Mail und Webhook erledigt v0.2.0 10 h 3 h 30 min
#035 M22 – Mitarbeiter-Selbstauskunft erledigt v0.2.0 8 h 2 h 50 min
#036 Reviewbefunde aus der Durchsicht von Phase 2 erledigt v0.2.0 4 h 3 h 40 min
#037 Zwei Nachzügler aus der Durchsicht von Phase 2 erledigt v0.2.0 2 h 1 h 50 min
#038 Die E2E-Abläufe laufen in keinem Tor und waren monatelang rot erledigt v0.2.0 3 h 1 h 35 min
#039 M23 – Bedingte Schritte und Abschnitte erledigt v0.3.0 12 h 5 h 20 min
#040 M24 – Vier-Augen-Freigabe erledigt v0.3.0 8 h 3 h 30 min
#041 M25 – PDF-Übergabeprotokoll mit Unterschrift offen v0.3.0 8 h –
#042 M26 – Weitere Schritt-Typen offen v0.3.0 6 h –
Summe 272 h 82 h 45 min