Da review avversariale indipendente:
- Retry invio email (trySend, 3 tentativi backoff) per ricevuta cliente e notifica merchant.
- Webhook GDPR implementati (erano stub) con idempotenza (skip se gia' processed):
* customers/redact: pseudonimizza PII (nome/email/dichiarazione) nelle
WithdrawalRequest del cliente, mantiene il record legale (ordine+timestamp)
come prova art. 54-bis (base art. 17(3) GDPR).
* shop/redact: purge completa dei dati shop (Settings/Exclusion/Withdrawal/
Session/AuditLog + WebhookEvent stale).
* customers/data_request: registra la richiesta + n. record (merchant li recupera
dalla dashboard Recessi).
- Rate-limit: pruning periodico del bucket in-memory (fix memory leak).
- Ricevuta fallita: messaggio di successo onesto (successMessage riceve receipt.ok)
invece del falso 'ti abbiamo inviato la ricevuta'.
- PII: rimossa dai detail audit persistiti degli errori SMTP (ricevuta/notifica).
Non modificati (verificati): off-by-1 finestra = permissivo, non blocca a torto;
'doppio escape' = falso allarme (template e valori escapati una volta ciascuno).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mv83a29B4eFv5ixoj6PoE1