Commit Graph
2 Commits
Author SHA1 Message Date
Harlekin 7052238db7 Lebenszeichen des Workers zeitzonenfest pruefen
Der Healthcheck meldete den Worker dauerhaft als krank, obwohl er im
Sekundentakt schrieb: "Lebenszeichen 7214 s alt" - und 7214 Sekunden sind genau
zwei Stunden, der Abstand zwischen CEST und UTC.

`ServiceHeartbeat.at` ist ein timestamp ohne Zeitzone, und Prisma schreibt UTC
hinein. node-postgres liest so einen Wert aber als *lokale* Zeit; im Container
steht TZ=Europe/Berlin, und damit war jedes frisch geschriebene Lebenszeichen
beim Lesen schlagartig zwei Stunden alt.

Das Alter wird jetzt in der Datenbank gerechnet, gegen `now() AT TIME ZONE
'UTC'` - also in derselben Form, in der der Wert gespeichert ist. Die Rechnung
stimmt damit unabhaengig davon, welche Zeitzone im Container oder in der
Datenbank eingestellt ist.

Auffallen konnte das nur im Betrieb: lokal laeuft die Datenbank auf UTC, dort
ist die Abweichung null.
2026-09-04 10:45:38 +02:00
Harlekin 8375d1cb03 Worker- und PDF-Dienst
Der Worker hängt am Discord-Gateway und schreibt alle 30 Sekunden sein
Lebenszeichen in die Datenbank, damit /api/health im Web-Container den
Gateway-Zustand kennt, ohne selbst mit Discord zu sprechen. healthcheck.js
prüft genau dieses Lebenszeichen. Der eigentliche Rollen-Abgleich kommt in
Phase 1.

Der PDF-Dienst rendert die Druckansicht über Playwright. Kein PDF-Layout von
Hand, die Gestaltung kommt aus @media print der Seite selbst. Er kennt keine
Rechte: wer darf, entscheidet die Web-App, bevor sie hier anfragt, und schickt
das Sitzungs-Cookie des Abrufers mit, damit die gerenderte Seite dessen
Freigabestufe sieht.
2026-09-01 00:01:49 +02:00