fix: Worker übersteht Stripe-Fehler einzelner Buchungen, Rechnungsentwürfe beim Beenden löschen

Befunde aus dem Sicherheits-Review:

- Anhalten, Beenden und Abgleich der Ratenpläne fangen Fehler je Buchung ab.
  Ein Stripe-Fehler bei einer Buchung bricht nicht mehr den ganzen
  Worker-Lauf ab (E-Mails, Reservierungen liefen sonst nicht weiter).
  Teilfehler setzen den Exit-Code 1, damit der CronJob-Lauf sichtbar
  fehlschlägt.
- Beim Beenden eines Plans werden neben offenen Rechnungen auch Entwürfe
  gelöscht. Laut Stripe-Testuhr bleibt ein Entwurf nach dem Beenden zwar
  liegen und wird nicht eingezogen; das Löschen schließt das aus.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5.5 committed 2026-10-06 06:34:20 +02:00
1 parent 1ce7947d93
commit a28d18c3e6
5 files changed
+43 -17

No files matched your search

+5 -1
View File
@@ -25,7 +25,11 @@ try {
adminEmail: env().ADMIN_NOTIFY_EMAIL ?? null,
});
console.log(`[worker] ${new Date().toISOString()} ${JSON.stringify(result)}`);
process.exitCode = result.emails.failed > 0 ? 1 : 0;
// Teilfehler (einzelne Buchungen bei Stripe) machen den Job sichtbar
// fehlgeschlagen, ohne die uebrigen Aufgaben des Laufs zu verhindern.
const partialFailures =
result.emails.failed + result.held.failed + result.schedules.failed + result.installments.failed + result.stopped.failed;
process.exitCode = partialFailures > 0 ? 1 : 0;
} catch (error) {
console.error(`[worker] Abbruch: ${error instanceof Error ? error.message : "unbekannter Fehler"}`);
process.exitCode = 1;