Shop Review A M3: Eingangsbestaetigung G12 je Empfaengeradresse begrenzen (3 je Stunde)

Ueber die gemeinsame Empfaenger-Kappe (darfEmpfaenger) geht an dieselbe Adresse hoechstens dreimal je Stunde ein G12. Darueber hinaus wird der Widerruf trotzdem gespeichert und mit eingang beantwortet, es wird aber keine weitere Mail eingereiht (bestaetigungAt bleibt leer).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-05 09:38:16 +00:00
1 parent c6706f88ff
commit 45487d6c7e
2 files changed
+29 -2

No files matched your search

+4 -2
View File
@@ -1,7 +1,7 @@
import { config } from '../../config.js'
import { createDocument, getDocument, listDocuments, Query, updateDocument } from '../appwriteAdmin.js'
import { withLocks } from '../keyedLock.js'
import { darfWiderrufsversuch, zaehle } from '../termine/limits.js'
import { darfEmpfaenger, darfWiderrufsversuch, zaehle } from '../termine/limits.js'
import { pruefeNow } from '../termine/util.js'
import { datumKurz, uhrzeit } from '../termine/zeit.js'
import { bestellDaten } from './bestellungen.js'
@@ -147,8 +147,10 @@ export async function erfasseWiderruf(ctx, eingabe, { now = new Date(), ip } = {
if (order) await verlaufErgaenzen(order.$id, now)
// G12: Eingangsbestaetigung auf dauerhaftem Datentraeger, sofort; bestaetigungAt nur, wenn die Warteschlange sie angenommen hat
// Pro Empfaengeradresse hoechstens 3 je Stunde (gemeinsame Kappe der Funktionen): sonst liesse sich G12 als Mail-Relay an fremde
// Adressen missbrauchen. Der Widerruf ist gespeichert und beantwortet, die Bestaetigung entfaellt dann (bestaetigungAt bleibt leer).
try {
const g12 = await anKaeufer('G12', ctx, order, { an: email, bookingId: doc.$id, name, bestellnummer, eingang: now, nachricht }, now)
const g12 = !darfEmpfaenger(email.trim().toLowerCase(), now) ? null : await anKaeufer('G12', ctx, order, { an: email, bookingId: doc.$id, name, bestellnummer, eingang: now, nachricht }, now)
if (g12?.ok) await updateDocument(col(), doc.$id, { bestaetigungAt: now.toISOString() })
} catch (err) {
console.warn(`[shop-widerrufe] G12 nicht bestätigt: ${err?.name}`)