Files
Laufzettel/docs/issues/README.md
T
Florian WildeandClaude Opus 5 1be73b266c
Prüfung / pruefung (pull_request) Canceled after 0s
Prüfung / e2e (pull_request) Canceled after 0s
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
feat(laeufe): Live-Aktualisierung per Ereignisstrom statt Polling (#53)
Die Abarbeitungsansicht fragte alle zehn Sekunden nach dem Zustand. Jetzt
melden vier Datenbank-Trigger `NOTIFY lauf_geaendert, '<laufId>'`, eine
LISTEN-Verbindung je Prozess hoert zu, und der Route Handler schiebt
weiter. Gemessen: der Haken des Kollegen ist nach 485 ms beim Zuschauer
(am Handy 487 ms), vorher bis zu zehn Sekunden. Zwanzig offene Laschen
kosten nichts mehr statt zwanzig Abfragen je zehn Sekunden.

Das Ereignis kommt aus der Datenbank und nicht aus dem Dienst, aus
demselben Grund, aus dem auch die Regeln dort stehen: ein Trigger sieht
auch den Seed, eine Migration und die Reparatur per psql. Und NOTIFY
erreicht jede Instanz der Anwendung, ohne einen zweiten Dienst.

Welche Tabellen melden, haengt an dem, was `laufZustand` liefert — nicht
daran, was das Issue vorgeschlagen hat. Mit Triggern nur auf
Schrittergebnis und Lauf waere der Strom ein **Rueckschritt** gewesen:
das Polling verglich den ganzen Stand und sah deshalb auch Kommentare,
ein Strom sieht nur, was gemeldet wird. Der Kommentar des Kollegen waere
nie angekommen, und die Seite haette ausgesehen wie immer. Es melden
jetzt vier Tabellen, und `laufZustand` traegt `anzahlAnhaenge` — ein
Ereignis ohne Entsprechung im Zustand loest nichts aus.

Das Polling bleibt als Rueckfall an **derselben** Adresse, unterschieden
nur am Accept-Kopf: eine Rechtepruefung, ein Lesemodell, eine Nutzlast.
Ein zweiter Endpunkt waere eine zweite Stelle, an der jemand
rechtErforderlich vergessen kann. Bei erreichter Obergrenze antwortet
der Handler gewoehnlich mit JSON; EventSource meldet darauf einen Fehler
und versucht es nicht wieder, also faellt der Client von sich aus
zurueck — ohne Sonderfall.

Nebenbei zwei Fehler in docs/betrieb/reverse-proxy.md behoben, beide aus
#52: `client_max_body_size 8m` bei `ANHANG_MAX_MB=10` haette ein
10-MB-Foto mit 413 abgewiesen, bevor die eigene Meldung zum Zuge kommt.

Closes #53

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-05 22:50:32 +02:00

4.3 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.2.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 offen v0.2.0 1 h –
#028 M15 – Quellenarten und Microsoft-Graph-Quelle offen v0.2.0 10 h –
#029 M16 – SCIM-Endpunkt als Alternative zum Abgleich offen v0.2.0 12 h –
#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 offen v0.2.0 10 h –
#035 M22 – Mitarbeiter-Selbstauskunft offen v0.2.0 8 h –
Summe 229 h 50 h 05 min