feat(kalender): Hintergrundjobs für Abgleich und Aufräumen

Alle 15 Minuten abgleichen, nachts alte Termine und abgelaufene
WebAuthn-Herausforderungen entfernen. Ohne das Aufräumen bliebe der
Terminspiegel für immer stehen.

Der Riegel über globalThis ist nötig, weil Next im Entwicklungsbetrieb
Module mehrfach lädt — sonst liefen nach ein paar Änderungen ein Dutzend
Zeitpläne parallel. Im Demo-Modus starten gar keine Jobs: die
Screenshot-Instanz soll sich nicht selbst verändern, während sie
abfotografiert wird.

Protokolliert werden nur Zahlen, nie Kontonamen oder Termininhalte.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-09-10 18:05:07 +02:00
co-authored by Claude Opus 5
parent 0c67b73a62
commit 42c98c8b29
2 changed files with 87 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
/**
* Wird von Next einmal beim Hochfahren des Servers ausgeführt.
*
* Nur in der Node-Laufzeit: im Edge-Umfeld gibt es weder Prisma noch
* node-cron. Der Demo-Modus startet bewusst keine Jobs — die
* Screenshot-Instanz soll sich nicht selbst verändern, während sie
* abfotografiert wird.
*/
export async function register(): Promise<void> {
if (process.env.NEXT_RUNTIME !== 'nodejs') return
if (process.env.DEMO_MODUS === 'true') return
const { jobsStarten } = await import('@/server/jobs')
jobsStarten()
}