Workers-Übersicht: IMAP-Lesestand festgelegt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-17 17:11:04 +00:00
1 parent dbfbf36b08
commit fb64c6fe39
1 file changed
+2
@@ -200,6 +200,8 @@ Pfade relativ zum Dienst-Repo. Alle Funktionen `async`, sofern sie I/O machen. `
### 6.1 Prozess und Tick (P1) ### 6.1 Prozess und Tick (P1)
`src/main.js`: Konfiguration laden → `db` → API-Server (8092) → (P4) Vorschau-Server (8093) → Tick alle 60 s. Der Tick fragt `isDue` für: `nachtplan` (22:00), `nacht2` (01:00), `bericht` (06:30), `kuerzen` (03:00, P6), `pultAlt` (07:00, P3), `posteingang` (alle 2 min, P4), `alarme` (alle 10 min, P3), `senden` (alle 5 min im Sendefenster, P4), `batches` (alle 5 min). Tagesmarker in `workersDaily.countersJson.__runs` (neustartfest). Bei `paused` arbeitet nur `pause`-sichere Arbeit (Posteingang lesen + Sperrliste), nichts wird gesendet oder gebaut. `src/main.js`: Konfiguration laden → `db` → API-Server (8092) → (P4) Vorschau-Server (8093) → Tick alle 60 s. Der Tick fragt `isDue` für: `nachtplan` (22:00), `nacht2` (01:00), `bericht` (06:30), `kuerzen` (03:00, P6), `pultAlt` (07:00, P3), `posteingang` (alle 2 min, P4), `alarme` (alle 10 min, P3), `senden` (alle 5 min im Sendefenster, P4), `batches` (alle 5 min). Tagesmarker in `workersDaily.countersJson.__runs` (neustartfest). Bei `paused` arbeitet nur `pause`-sichere Arbeit (Posteingang lesen + Sperrliste), nichts wird gesendet oder gebaut.
IMAP-Lesestand (P3/P4): Datei `/data/imap-state.json` auf dem Volume, Form `{ "<postfach>": { "uidValidity": <zahl>, "lastUid": <zahl> } }` mit den Schlüsseln `antworten` (Absender-Postfach, Nora) und `alarme` (Alarm-Postfach, Kim/Pia). Schreiben atomar (temp + rename). Ändert sich `uidValidity`, wird ab der aktuellen höchsten UID neu begonnen (keine Altmails nachträglich verarbeiten).
### 6.2 HTTP-API des Dienstes (P1 Gerüst, spätere Pläne ergänzen) ### 6.2 HTTP-API des Dienstes (P1 Gerüst, spätere Pläne ergänzen)
Basis intern: `http://webklar-workers:8092`. Von WOMS über nginx `https://ticket.webklar.com/api/workers/…` (neuer `location`-Block nach Muster `/api/serverpuls/`). Auth: Header `X-Appwrite-JWT` → Appwrite `GET /account` (60 s Cache) → Label `mitarbeiter` oder `admin` nötig; `admin` für Einstellungen. Antworten JSON, Fehler `{ error: '<deutscher Satz>' }`. Basis intern: `http://webklar-workers:8092`. Von WOMS über nginx `https://ticket.webklar.com/api/workers/…` (neuer `location`-Block nach Muster `/api/serverpuls/`). Auth: Header `X-Appwrite-JWT` → Appwrite `GET /account` (60 s Cache) → Label `mitarbeiter` oder `admin` nötig; `admin` für Einstellungen. Antworten JSON, Fehler `{ error: '<deutscher Satz>' }`.