Modello Privacy — Confine ZDR
Factum Parse usa semantica zero-retention per il testo diretto e il mapping PII, mentre gli artefatti upload e i risultati deterministici dei job hanno comportamenti di storage/TTL espliciti. Sono garanzie diverse e sono documentate separatamente di proposito.
Testo diretto / percorso semantico
Sezione intitolata “Testo diretto / percorso semantico”Per input text diretto, il backend evita esplicitamente di creare un ParseJob
o di persistare il payload della richiesta. Il mapping è restituito da Rizzo,
usato localmente da restore(), ed è di proprietà del processo di richiesta.
Confine di privacy
Sezione intitolata “Confine di privacy”L’invariante critico è:
Quando RIZZO_PII_REQUIRED=true (default di produzione), il fallimento del sidecar
è fail-closed: l’API restituisce 503 piuttosto che inviare testo in chiaro al
modello esterno.
L’implementazione di rizio_pii.restore() nel backend è locale e sincrona; non
esiste una chiamata remota /restore. Il mapping non viene quindi inviato al
provider LLM.
Lo storage upload NON è zero-retention
Sezione intitolata “Lo storage upload NON è zero-retention”Non confondere la garanzia del mapping PII con il ciclo di vita degli upload.
POST /v1/uploads può persistare l’XML/PDF originale in object storage e crea
un job. La configurazione backend corrente definisce:
- limite trasporto/upload: 10 MiB;
- ciclo di vita object-storage: 1 giorno di default;
- TTL cache documenti: 30 giorni di default;
- i risultati deterministici XML FatturaPA possono essere persistiti nella cache documenti / record job;
- i risultati LLM per testo diretto non sono persistiti come job.
L’affermazione accurata è quindi:
Mapping PII: in RAM, scope richiesta. Testo diretto: stateless. Upload: TTL-governato.
Qualunque affermazione più forte richiede una configurazione di deployment verificata separatamente.
Comportamento fail-closed
Sezione intitolata “Comportamento fail-closed”| Condizione | Comportamento |
|---|---|
| Rizzo disponibile | pseudonymize → estrazione esterna → restore locale |
| Rizzo non disponibile + required | 503, nessun fallback in chiaro |
text diretto |
nessun ParseJob; risultato nella risposta HTTP |
| XML upload | parse deterministico può persistare risultato/metadata job e artefatto storage |
| PDF upload | ingestion crea un job; estrazione semantica eseguita da /v1/parse |
Controlli osservabili
Sezione intitolata “Controlli osservabili”Il backend espone metriche Prometheus tra cui:
rizzo_pii_uprizzo_pii_calls_totalrizzo_pii_timeout_totalrizzo_pii_entities_detectedrizzo_pii_pseudonymize_duration_secondsrizzo_pii_restore_duration_seconds
Queste metriche dimostrano l’attività runtime; non sono di per sé una certificazione legale.
