Files
Laufzettel/docs/issues
Florian WildeandClaude Opus 5 2d3325ef20
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
feat(meldungen): Benachrichtigungen per Mail und Webhook (#54)
Ein zugewiesener Lauf fiel bisher nur auf, wenn jemand die Uebersicht
oeffnete; ein ueberfaelliger ueberhaupt nicht. Vier Anlaesse gehen jetzt
hinaus — zugewiesen, ueberfaellig, abgeschlossen und Verzeichnisabgleich
fehlgeschlagen —, je Person abschaltbar. Niemand bekommt Post ueber die
eigene Tat: das ist der haeufigste Grund, Benachrichtigungen ganz
abzuschalten, und deshalb faellt der Handelnde immer aus der
Empfaengerliste.

Eingereiht wird im Anfrage-Pfad, gesendet wird es nicht. Ein haengender
Mailserver darf kein Abhaken blockieren, also schreibt der Dienst eine
Zeile in `Zustellung` und ein eigener Zeitplan schickt sie. Betreff und
Rumpf stehen fertig darin: eine Meldung sagt, was *damals* war.

In keiner Nachricht steht ein Schrittinhalt, und damit auch kein
erzeugtes Passwort. Darueber wacht src/lib/meldungen.ts — die Funktionen
dort nehmen nur Kopfdaten, der Typ laesst nichts anderes zu. Geprueft
wird es zusaetzlich ueber alle Rumpftexte, die wirklich verschickt
wurden, so wie #012 es fuer die Druckansicht tat.

Zwei Dinge haetten ohne Datenbank nicht gehalten. Die Einmaligkeit der
Ueberfaelligkeitsmeldung liegt in einem partiellen eindeutigen Index:
der Zeitplan sieht jede Minute nach, und ohne ihn bekaeme der
Zustaendige fuer einen Lauf, der ueber das Wochenende steht, 2880
Mails — jede fuer sich korrekt, kein Test rot. Und die Sperre der
Warteschlange liegt in derselben Tabelle wie die des Abgleichs, denn
hinter einem Lastverteiler laufen zwei Instanzen.

Eine stille Warteschlange ist schlimmer als keine: Verwaltung →
Zustellungen zeigt mit Grund, was hinausging und was nicht.

Geprueft gegen einen echten SMTP-Faenger (mailpit) statt gegen eine
abgefangene Funktion — und `mailpit` gehoert damit ins Tor vor dem
Commit, sonst ueberspringt die Suite 3 Tests und sieht gruen aus.

Closes #54

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

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 erledigt v0.2.0 10 h 3 h 30 min
#035 M22 – Mitarbeiter-Selbstauskunft offen v0.2.0 8 h –
Summe 229 h 53 h 35 min