/** * Hintergrundlauf fuer Reservierungen, Folgeraten, Zahlungsmethoden und * E-Mails. Im Cluster als Kubernetes-CronJob (k8s/base/cronjob-worker.yaml), * lokal per `pnpm worker`. * * Endet mit Exit-Code 1, wenn etwas fehlschlaegt — der CronJob-Lauf wird * dann als fehlgeschlagen sichtbar statt still im Log zu verschwinden. */ import { getDb } from "@/lib/db"; import { env, requireAppSecret } from "@/lib/env"; import { getGateway } from "@/lib/payment-gateway"; import { runWorker } from "@/lib/worker-jobs"; try { process.loadEnvFile(); } catch { // Im Container kommen die Variablen aus der Umgebung. } const db = getDb(); try { const result = await runWorker(db, getGateway(), { now: new Date(), secret: requireAppSecret(), adminEmail: env().ADMIN_NOTIFY_EMAIL ?? null, }); console.log(`[worker] ${new Date().toISOString()} ${JSON.stringify(result)}`); process.exitCode = result.emails.failed > 0 ? 1 : 0; } catch (error) { console.error(`[worker] Abbruch: ${error instanceof Error ? error.message : "unbekannter Fehler"}`); process.exitCode = 1; } finally { await db.$disconnect(); }