Calendario di conservazione (retention schedule)
Versione: 2026-05-04 Base normativa: art. 5.1.e GDPR (limitazione della conservazione), art. 109 TULPS, D.Lgs. 32/2023 (DAC7), Codice Civile artt. 2214–2220 (scritture contabili).
Ogni categoria di dati personali trattati da inRegola è soggetta a un termine massimo di conservazione, oltre il quale i dati vengono cancellati o anonimizzati in modo automatico o su evento.
Questo calendario è la fonte di verità operativa per gli automated retention jobs (cron schedulati su Vercel) che implementano l'art. 5.1.e in produzione.
Tabella di conservazione
| # | Categoria | Conservazione massima | Base normativa | Implementazione | Cron / Trigger |
|---|---|---|---|---|---|
| R1 | Account utente (email, nome, telefono) | Durata del rapporto contrattuale + 30 giorni di backup | art. 6.1.b GDPR — esecuzione del contratto | Anonimizzazione su deleteAccountAction (cancellazione manuale dall'utente) o sweep dopo deletedAt + 30 giorni |
prune-deleted-accounts (TODO: ancora da implementare) |
| R2 | Credenziali Alloggiati Web cifrate | Durata del rapporto contrattuale | art. 6.1.b GDPR | Eliminate immediatamente al primo dei seguenti eventi: (a) deleteAccountAction, (b) disconnectAlloggiati, (c) chiusura account per mancato pagamento dopo 90 giorni |
Sincrono con deleteAccountAction |
| R3 | Dati ospite + schedine inviate | 5 anni dalla data di check-out | art. 109 TULPS — obbligo di conservazione | Mantenuti fino alla scadenza, poi cancellazione automatica | prune-old-guests (TODO: cron annuale) |
| R4 | Ricevute PDF Polizia di Stato | 5 anni dalla data di submission | art. 109 TULPS — prova legale di adempimento | Stessa scadenza di R3 (allineata) | prune-old-receipts (TODO) |
| R5 | Voci tassa di soggiorno | 10 anni dalla data di emissione (versamento) | artt. 2214–2220 c.c. — scritture contabili | Mantenute, poi cancellazione automatica | prune-old-tassa (TODO) |
| R6 | Voci DAC7 (matching ricavi OTA) | 10 anni dalla data di chiusura dell'anno fiscale | D.Lgs. 32/2023 — obblighi DPI / DAC7 | Stessa logica di R5 | prune-old-dac7 (TODO) |
| R7 | Alert generati dal motore di compliance | 365 giorni dalla risoluzione | Legittimo interesse — audit trail di sicurezza | Cron giornaliero che cancella Alert con resolvedAt < now - 365d |
/api/cron/prune-old-alerts (TODO) |
| R8 | Webhook deliveries (corpo + risposta) | 30 giorni dall'invio | Diagnostica + supporto | Cron giornaliero che cancella WebhookDelivery con createdAt < now - 30d |
/api/cron/prune-webhook-deliveries ✅ implementato |
| R9 | Eventi Stripe processati (idempotency) | 90 giorni | Antifrode + reconciliation | Cron giornaliero | /api/cron/prune-stripe-events ✅ implementato |
| R10 | Hit di rate-limit | 24 ore | Antiabuso | Cron giornaliero | /api/cron/prune-rate-limit-hits ✅ implementato |
| R11 | Log di accesso magic-link (Supabase Auth) | 7 giorni (configurazione progetto Supabase) | Antifrode + supporto | Gestito da Supabase | n/a |
| R12 | Log applicativi Sentry | 90 giorni | Diagnostica | Gestito da Sentry | n/a |
| R13 | Esportazioni DSAR (zip generati su richiesta) | 7 giorni dalla generazione | Sicurezza — finestra di download limitata | Cron giornaliero | prune-dsar-exports (TODO) |
| R14 | Cookie tecnici (inregola_session, inregola_owner, inregola_ref) |
Vedi Cookie Policy — sessione fino a 30 giorni | art. 122 Codice Privacy — esenti da consenso | Browser-side | n/a |
Eccezioni e proroghe
I termini sopra possono essere prolungati nei seguenti casi documentati:
- Contenzioso attivo o probabile — sospensione di tutti i job di cancellazione fino a chiusura definitiva (art. 17.3.e GDPR);
- Richiesta dell'autorità giudiziaria — congelamento del dato fino al provvedimento;
- Verifica fiscale in corso — dati R5/R6 prolungati fino a scadenza dei termini di accertamento (art. 43 DPR 600/1973).
Ogni proroga è registrata nell'audit log interno con motivazione, data inizio, data fine prevista.
Implementazione (sintesi tecnica)
| Implementato ✅ | TODO 🔴 |
|---|---|
prune-stripe-events (R9) |
prune-old-guests (R3) |
prune-webhook-deliveries (R8) |
prune-old-receipts (R4) |
prune-rate-limit-hits (R10) |
prune-old-tassa (R5) |
prune-old-tassa (R6) |
|
prune-old-alerts (R7) |
|
prune-deleted-accounts (R1) |
|
prune-dsar-exports (R13) |
I cron mancanti sono tracciati in docs/operational-readiness-audit-2026-05-04.md
e devono essere implementati prima del lancio commerciale.
Questo calendario integra l'Informativa Privacy ai sensi dell'art. 13.2.a GDPR (durata della conservazione).