RAS Evidence Hub - Audit e Piano Interattivo¶
Data: 2026-07-10
Obiettivo¶
Integrare in modo controllato:
- documenti condominio caricati nel documentale;
- checklist documentale;
- foto e gallery RAS;
- RAS dinamico;
- controlli AI locali tramite gateway SafeOps/Ollama.
La decisione architetturale e' di separare la gestione dei dati ma integrare il contesto operativo.
Decisione Architetturale¶
Non unire documenti condominio e foto RAS nello stesso archivio funzionale.
Struttura target:
Archivio Documenti Condominio
- documento
- categoria
- scadenza
- obbligatorieta'
- checklist
- fascicolo
RAS Photo Workspace
- foto sopralluogo
- foto sottoscheda
- gallery
- didascalie
- note
- flag stampa
RAS Evidence Hub
- vista integrata
- controlli incrociati
- anomalie
- suggerimenti AI
- audit decisionale
Stato Attuale Rilevato¶
Documentale Condominio¶
Elementi gia' presenti:
DocumentoCategoriaAllegato- associazioni documento/categoria/cliente;
data_scadenza;- viste documentali per tenant/workspace;
- checklist documentale cliente/condominio;
- audit workflow documentale;
- upload documento e versioning.
Punti codice principali:
app/modules/documentale/models.pyapp/modules/documentale/views.pyapp/modules/documentale/workspaces/app/modules/documentale/document_workspace_registry.pyapp/modules/anagrafiche/views.py
RAS Dinamico e Gallery¶
Elementi gia' presenti:
- RAS dinamico con draft e risposte;
- endpoint API RAS v2;
- upload immagini;
- normalizzazione payload immagini;
- gallery su sottoscheda in
detail.gallery; - metadati gallery sul template;
- stampa gallery nel print engine;
- test dedicati su gallery e stampa.
Punti codice principali:
app/modules/documentale/views.pyapp/services/print_engine/adapters/ras.pyapp/services/print_engine/renderers/ras_vertical_v2.pytests/test_dynamic_gallery_answer_normalization.pytests/test_dynamic_gallery_metadata.pytests/test_ras_gallery_print_adapter.pytests/test_ras_gallery_vertical_renderer.py
Documento operativo gia' presente:
docs/operativo/ras_gallery_subschede_template6_readme.md
Regola Fondamentale¶
L'AI non deve modificare direttamente dati di produzione.
L'AI puo':
- suggerire;
- classificare;
- evidenziare incoerenze;
- proporre didascalie;
- produrre riepiloghi;
- proporre collegamenti documento/foto/RAS.
La conferma rimane utente, salvo errori deterministici bloccanti.
Differenza Tenant¶
Besant¶
Tenant gia' operativo in produzione.
Policy iniziale:
- nessuna correzione automatica;
- nessuno spostamento automatico di documento/foto;
- warning con conferma utente;
- audit log obbligatorio;
- prima fase solo su nuove azioni, non rielaborazione massiva dello storico;
- eventuale analisi storico solo in modalita' readonly.
Safecondo¶
Tenant operativo in produzione per RAS condominio.
Policy iniziale:
- nessuna correzione automatica sullo storico;
- nessuno spostamento automatico di documento/foto;
- warning deterministici e AI sempre tracciati;
- eventuali blocchi solo su nuove azioni e solo per errori certi;
- controllo stretto su gallery e finalizzazione RAS in modalita' report/warning nella prima fase;
- analisi
local:*, key mancanti e categorie solo readonly fino ad approvazione esplicita; - prima di qualunque bonifica: export, dry-run, revisione documento per documento o per classe approvata.
Echos¶
Tenant pilota secondario AI.
Policy iniziale:
- abilitazione AI come Besant, ma senza forzare workflow RAS finche' non viene deciso il perimetro operativo.
Matrice Eventi, Controlli e Azioni¶
Upload Documento Condominio¶
Evento:
- utente carica un documento in categoria documentale.
Controlli deterministici:
- tenant corrente;
- permessi utente;
- cliente/condominio associato;
- categoria esistente e ammessa;
- file presente;
- estensione e MIME consentiti;
- dimensione massima;
- checksum duplicato;
- scadenza richiesta dalla categoria/policy;
- categoria coerente con workspace tenant.
Controlli AI:
- nome file e testo sembrano coerenti con categoria scelta;
- suggerimento categoria alternativa;
- identificazione tipo documento;
- estrazione scadenza probabile;
- warning se documento sembra appartenere a impianto diverso.
Azione:
- blocco per errori certi;
- warning per incoerenza probabile;
- conferma obbligatoria su tenant di produzione;
- audit evento.
Cambio Categoria Documento¶
Evento:
- utente sposta documento da una categoria a un'altra.
Controlli deterministici:
- permesso di spostamento;
- categoria destinazione ammessa;
- policy tenant;
- documento non bloccato da workflow;
- relazione cliente/tenant valida.
Controlli AI:
- documento sembra coerente con nuova categoria;
- documento sembra piu' coerente con categoria precedente o altra categoria;
- rischio perdita checklist.
Azione:
- blocco se categoria non ammessa;
- warning se AI rileva incoerenza;
- conferma utente;
- audit con vecchia/nuova categoria.
Upload Foto RAS¶
Evento:
- tecnico carica una foto durante compilazione RAS.
Controlli deterministici:
- documento RAS modificabile;
- lease/editor valido;
- tenant valido;
- sezione/sottoscheda valida;
- gallery abilitata nello schema;
- numero foto entro
gallery_max_items; - file immagine valido;
- dimensione massima;
- oggetto sincronizzato su storage;
- key non vuota;
- niente
local:*in finalizzazione.
Controlli AI:
- suggerimento didascalia;
- suggerimento sottoscheda;
- rilevamento possibile duplicato visivo;
- rilevamento foto non pertinente alla sottoscheda;
- rilevamento qualità bassa/non leggibile.
Azione:
- blocco per schema non abilitato o limite superato;
- warning per foto sospetta;
- utente conferma didascalia/sottoscheda;
- audit.
Salvataggio Risposta RAS¶
Evento:
- utente salva una risposta o una sottoscheda RAS.
Controlli deterministici:
qidvalido;- sezione valida;
- payload JSON valido;
- gallery normalizzata;
- sort order gallery coerente;
- item con key mancante marcato errore;
- NC sincronizzate se previste.
Controlli AI:
- coerenza testo risposta rispetto a foto;
- coerenza risposta rispetto a documenti condominio disponibili;
- segnalazione documenti mancanti correlati.
Azione:
- salvataggio consentito salvo errori strutturali;
- warning contestuale;
- nessuna modifica automatica in produzione.
Finalizzazione RAS¶
Evento:
- utente finalizza versione RAS.
Controlli deterministici:
- documento modificabile/finalizzabile;
- nessuna immagine locale non sincronizzata;
- sezioni obbligatorie presenti;
- risposte obbligatorie presenti;
- gallery entro limiti;
- stampa producibile;
- documento finale salvabile in categoria RAS;
- tenant/workspace coerente.
Controlli AI:
- riepilogo anomalie;
- evidenze fotografiche senza documento correlato;
- documenti checklist mancanti citati nel RAS;
- foto stampabili senza didascalia;
- possibili incoerenze tra categoria documentale e contenuto RAS.
Azione:
- blocco solo per errori certi;
- warning riepilogativo per AI;
- conferma utente;
- audit finale.
Modalita' di Severita'¶
Blocco¶
Usare solo per errori deterministici:
- permesso mancante;
- tenant errato;
- categoria inesistente/non ammessa;
- duplicato checksum identico se policy lo vieta;
- file non valido;
- immagine locale non sincronizzata in finalizzazione;
- gallery non abilitata;
- limite massimo foto superato.
Warning¶
Usare per incoerenze probabili:
- categoria sospetta;
- documento forse nel posto sbagliato;
- foto forse non pertinente;
- didascalia mancante;
- scadenza probabile non valorizzata;
- documento checklist mancante ma citato nel RAS.
Suggerimento¶
Usare per aiuto operativo:
- categoria consigliata;
- didascalia foto;
- sottoscheda consigliata;
- riepilogo RAS;
- collegamento documento/foto.
AI Locale¶
Gateway SafeOps gia' predisposto:
GET /api/ai/statusPOST /api/ai/chat
Provider iniziale:
- Ollama;
- modello
llama3.1:8b; - tenant abilitati:
tenant_besant,tenant_echos.
Per analisi immagini serve una fase successiva:
- modello vision locale;
- oppure pipeline OCR/immagine separata;
- evitare upload immagini sensibili a servizi esterni.
Fasi Proposte¶
Fase 0 - Audit Readonly¶
Obiettivo:
- mappare documenti, categorie, checklist, RAS, gallery e foto per Safecondo/Besant.
Output:
- elenco categorie chiave;
- elenco RAS con gallery;
- conteggio foto;
- immagini
local:*; - item gallery senza key;
- documenti senza categoria;
- documenti in categoria RAS;
- documenti scaduti/mancanti per condominio.
Nessuna modifica dati.
Fase 1 - Validatori Deterministici¶
Obiettivo:
- introdurre controlli certi senza AI.
Validazioni:
- upload documento;
- cambio categoria;
- upload foto RAS;
- salvataggio gallery;
- finalizzazione RAS.
Output:
- warning/blocchi strutturati;
- audit log.
Fase 2 - Evidence Hub Readonly¶
Obiettivo:
- creare vista integrata per condominio/RAS.
Mostra:
- documenti checklist;
- documenti RAS;
- foto gallery;
- stato scadenze;
- anomalie deterministiche.
Nessuna azione automatica.
Fase 3 - AI Assistita¶
Obiettivo:
- aggiungere suggerimenti AI non vincolanti.
Funzioni:
- classificazione documento;
- suggerimento categoria;
- riepilogo anomalie;
- didascalie foto;
- correlazione RAS/checklist.
Fase 4 - Workflow Interattivo¶
Obiettivo:
- rendere i warning azionabili.
Esempi:
- conferma categoria sospetta;
- accetta didascalia;
- collega foto a sottoscheda;
- apri documento mancante;
- crea task di integrazione.
Rischi¶
- produzione Besant e Safecondo: evitare modifiche automatiche;
- dati storici RAS legacy: non fidarsi dei mapping immagini senza audit;
- template RAS legacy condivisi: rischio mismatch qid/schema;
- AI con modello solo testo: limitata per foto finche' non si aggiunge vision;
- privacy: prompt e contenuti devono restare locali e auditati.
Decisione Operativa¶
Procedere prima con:
- audit readonly Safecondo/Besant;
- validatori deterministici;
- Evidence Hub readonly;
- AI assistita;
- workflow interattivo.
Non implementare correzioni automatiche sui dati Besant o Safecondo in questa fase.
Audit Readonly DB/MinIO - 2026-07-10¶
Audit eseguito con sole query SELECT.
Configurazione MinIO¶
MINIO_ENDPOINT:safe-minio.nxt-sense.euMINIO_SECURE:TrueMINIO_BUCKET_PREFIX:safeops
Bucket logici attesi:
| Tenant | Bucket |
|---|---|
tenant_safecondo |
safeops-tenant-safecondo-data |
tenant_besant |
safeops-tenant-besant-data |
tenant_echos |
safeops-tenant-echos-data |
Nota: i documenti e gli allegati mantengono minio_key; il metadato completo vive in stored_files.object_key con bucket_name.
Sintesi Documentale¶
| Tenant | Documenti | Senza categoria | Senza cliente | Scaduti | In scadenza 60gg | Allegati |
|---|---|---|---|---|---|---|
tenant_safecondo |
2123 | 515 | 15 | 137 | 1 | 13315 |
tenant_besant |
17 | 5 | 1 | 0 | 0 | 29 |
tenant_echos |
0 | 0 | 0 | 0 | 0 | 0 |
Sintesi Stored Files¶
| Tenant | Stored files attivi | Bytes MinIO indicizzati | Note |
|---|---|---|---|
tenant_safecondo |
36382 | 51445064441 | forte volume RAS/legacy |
tenant_besant |
583 | 299631099 | volume ridotto, legacy import presente |
tenant_echos |
0 | 0 | nessun oggetto |
Top prefissi Safecondo:
| Prefix | File | Bytes |
|---|---|---|
ras-print |
14320 | 30847465263 |
legacy-dynamic |
13762 | 3179920526 |
documenti |
5741 | 2972427553 |
legacy-import |
1664 | 777552323 |
commerciale |
525 | 12626971517 |
ras-draft-docx |
204 | 769134493 |
Top prefissi Besant:
| Prefix | File | Bytes |
|---|---|---|
legacy-import |
472 | 222268702 |
legacy-dynamic |
65 | 3880446 |
documenti |
23 | 26880206 |
ras-print |
20 | 45803804 |
branding |
2 | 782746 |
formazione |
1 | 15195 |
Link DB -> Stored Files¶
| Tenant | Documento keys | Documento key senza stored_file | Allegato keys | Allegato key senza stored_file |
|---|---|---|---|---|
tenant_safecondo |
2122 | 6 | 13315 | 9 |
tenant_besant |
17 | 0 | 29 | 0 |
tenant_echos |
0 | 0 | 0 | 0 |
Interpretazione:
- Besant e' coerente sui riferimenti MinIO documenti/allegati.
- Safecondo ha pochi riferimenti documentali/allegati senza metadato
stored_files; vanno analizzati prima di qualunque blocco forte.
Gallery RAS / Dynamic Answers¶
| Tenant | Risposte con potenziale immagine/gallery | Risposte con gallery | Gallery items | Unique MinIO keys | Keys trovate | Keys mancanti | Ref local:* |
Documenti con local:* |
|---|---|---|---|---|---|---|---|---|
tenant_safecondo |
37868 | 26160 | 12144 | 11339 | 11331 | 8 | 776 | 70 |
tenant_besant |
2373 | 113 | 37 | 204 | 204 | 0 | 0 | 0 |
tenant_echos |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Sample chiavi gallery Safecondo mancanti da stored_files:
100_3299.JPG100_3300.JPG100_3302.JPG100_3802.JPG100_3804.JPG
Interpretazione:
- Safecondo ha una criticita' reale sui riferimenti
local:*: 776 riferimenti distribuiti su 70 documenti. - Le key MinIO gallery Safecondo sono quasi tutte tracciate in
stored_files: solo 8 mancanti su 11339. - Besant e' pulito lato gallery: nessun
local:*e nessuna key gallery mancante dastored_files.
Prime Anomalie da Governare¶
Safecondo:
- 515 documenti senza categoria.
- 15 documenti senza cliente.
- 137 documenti scaduti.
- 6 documenti con
minio_keysenza recordstored_files. - 9 allegati con
minio_keysenza recordstored_files. - 776 riferimenti gallery
local:*su 70 documenti. - 8 chiavi gallery non trovate in
stored_files.
Besant:
- 5 documenti senza categoria.
- 1 documento senza cliente.
- Nessuna anomalia MinIO rilevata su documenti/allegati/gallery.
- Presenza di documenti RAS legacy e test clone da trattare in sola lettura.
Echos:
- Nessun dato documentale o gallery rilevato.
Impatto sul Piano¶
Prima implementazione consigliata:
- Validatore deterministic readonly/report per Safecondo produzione:
- documenti senza categoria;
- documenti senza cliente;
local:*in gallery;- key MinIO mancanti.
- Validatore Besant produzione in modalita' warning:
- documenti senza categoria;
- documento senza cliente;
- nessun blocco su storico.
- Validatore Echos pilota secondario per provare regole prima di applicarle ai tenant produzione.
- Evidence Hub deve leggere:
- DB documentale;
stored_files;- gallery da
legacy_dynamic_answer; - presigned URL solo al momento della visualizzazione.
Regola confermata:
- MinIO resta source of truth per il binario.
- DB resta source of truth per metadati, relazioni, checklist, RAS e audit.
Audit Dettaglio Anomalie - 2026-07-10¶
Audit readonly di approfondimento sui punti prioritari:
- RAS Safecondo con riferimenti gallery
local:*; - chiavi gallery non presenti in
stored_files; - documenti senza categoria Safecondo/Besant.
Safecondo - Documenti RAS con local:*¶
Totale:
- documenti coinvolti:
70; - riferimenti
local:*:776.
I casi principali per numero di riferimenti:
| Documento | Oggetto | File | Ref local:* |
MinIO keys gia' presenti | Note |
|---|---|---|---|---|---|
| 357 | RAS - CONDOMINIO PAGANINI | legacy_dynamic_ras_121.json |
92 | 144 | caso ad alta priorita' |
| 830 | RAS - CONDOMINIO VIA POZZOBONELLI N.2 | legacy_dynamic_ras_176.json |
91 | 53 | caso ad alta priorita' |
| 364 | RAS - CONDOMINIO ANITA | legacy_dynamic_6.json |
74 | 48 | gia' noto come problematico gallery |
| 566 | RAS - CONDOMINIO STELLA ALPINA | legacy_dynamic_ras_148.json |
46 | 87 | criticita' media/alta |
| 419 | RAS - CONDOMINIO BERGAMO PIU' - FABBRICATO A | legacy_dynamic_ras_146.json |
36 | 61 | presente anche su flussi NC |
| 544 | RAS - CONDOMINIO RESIDENZA LA PISCINA | legacy_dynamic_ras_125.json |
36 | 127 | criticita' media |
| 415 | RAS - Condominio AMBRA | legacy_dynamic_ras_26.json |
34 | 81 | criticita' media |
| 486 | RAS - CONDOMINIO CAMPAGNOLA | legacy_dynamic_ras_67.json |
32 | 124 | criticita' media |
| 422 | RAS - CONDOMINIO DEMO RAS | demo_ras_condominio_demo_ras_a7916ddd.json |
19 | 152 | demo/test |
| 6794 | RAS - CONDOMINIO SCARPATEC 1° | legacy_dynamic_ras_235.json |
19 | 100 | recente |
Osservazione:
- molti documenti hanno sia riferimenti
local:*sia molte key MinIO valide; - quindi non sembra assenza totale di immagini, ma residuo/migrazione incompleta di alcuni riferimenti;
- prima di qualunque fix bisogna capire se il riferimento
local:*ha una corrispondenza recuperabile nello stesso documento.
Safecondo - Chiavi Gallery Mancanti da stored_files¶
Totale:
- chiavi mancanti:
8; - documenti coinvolti:
2.
Dettaglio:
| Chiave | Documenti |
|---|---|
100_3299.JPG |
425 |
100_3300.JPG |
425 |
100_3302.JPG |
425 |
Vista_dallalto.jpg |
425 |
100_3802.JPG |
608 |
100_3804.JPG |
608 |
100_3806.JPG |
608 |
Vista_dallalto.png |
608 |
Interpretazione:
- sono nomi file semplici, non object key MinIO normalizzate;
- probabilmente arrivano da import legacy o mapping immagini non convertito;
- non vanno corretti a mano senza confronto con oggetti MinIO disponibili, backup legacy o JSON sorgente.
Safecondo - Documenti Senza Categoria¶
Totale:
515documenti senza categoria.
Classificazione:
| Classe | Totale | Lettura operativa |
|---|---|---|
legacy_dynamic_ras |
194 | RAS dinamici/import legacy senza categoria documentale |
extrabit_package_zip |
131 | pacchetti ZIP Extrabit RAS, solo Safecondo |
extrabit_payload_json |
128 | payload JSON Extrabit RAS, solo Safecondo |
ras_nc_schede |
36 | output schede non conformita' RAS |
pdf_other |
25 | PDF non classificati, da verificare |
other |
1 | caso singolo da verificare |
Interpretazione:
- la maggioranza non e' archivio condominio classico;
- molti sono artefatti tecnici RAS/Extrabit/NC nel perimetro Safecondo;
- serve una categoria tecnica o policy di presentazione, non necessariamente spostamento nella checklist condominio ordinaria.
Possibili categorie/policy target:
RAS / Artefatti tecnici;RAS / Payload Extrabitsolo Safecondo;RAS / Pacchetti Extrabitsolo Safecondo;RAS / Schede NC;RAS / Legacy Dynamic;
Queste categorie andrebbero valutate come categorie di servizio, non come documenti condominio obbligatori.
Nota tenant:
- Extrabit e' perimetro Safecondo;
- Besant non deve ereditare categorie o regole Extrabit;
- Echos puo' validare interfaccia/regole, ma senza assumere dati o categorie Extrabit come standard cross-tenant.
Besant - Documenti Senza Categoria¶
Totale:
5documenti senza categoria.
Classificazione:
| Classe | Totale | Lettura operativa |
|---|---|---|
ras_clone_test |
2 | test clone struttura/immagini |
pdf_other |
2 | documenti PDF produzione/formazione/DVR da verificare |
legacy_dynamic_ras |
1 | RAS legacy reale |
Dettaglio noto:
2258-Allegati DVR BAJRAM BAHA 14.04.2025.pdf;2257-DOCUMENTO DI VALUTAZIONE DEI RISCHI FAVILLA RISTORANTE 2026.pdf;1160- test clone struttura e immagini v2;1159- test clone struttura e immagini;1126- RAS CONDOMINIO DI VIA SAFFI 8-10-12-14.
Policy consigliata:
- Besant: nessun fix automatico;
- Safecondo: nessun fix automatico;
- i 2 PDF vanno proposti come ricategorizzazione manuale;
- i test clone vanno eventualmente nascosti/archiviati solo dopo conferma;
- il RAS legacy 1126 va trattato readonly finche' non e' chiaro il flusso produttivo.
Raccomandazione Prossima¶
Prima di implementare validatori o fix:
- produrre un report CSV/HTML readonly per Safecondo produzione con:
- 70 documenti
local:*; - conteggio per domanda;
- conteggio key MinIO valide nello stesso documento;
- link interno al documento se disponibile.
- produrre un report readonly dei 515 senza categoria, ma raggruppato per classe operativa;
- decidere se creare categorie tecniche RAS per artefatti Safecondo Extrabit/NC/Legacy;
- per Besant preparare solo una lista di 5 casi da verificare manualmente.
- provare eventuali regole su Echos come pilota secondario prima di abilitarle su Besant/Safecondo.
Nessuna azione di scrittura consigliata in questa fase.
Matrice Remediation Readonly - 2026-07-10¶
Questa matrice serve a decidere cosa analizzare, cosa proporre e cosa non toccare sui tenant di produzione.
Regola generale:
- Safecondo e Besant sono produzione;
- Echos e' pilota secondario per validare regole e interfacce;
- nessuna modifica DB/MinIO prima di export, dry-run e approvazione esplicita;
- l'AI puo' suggerire classificazioni e anomalie, ma non deve applicare correzioni.
Priorita'¶
| Priorita' | Ambito | Motivo | Azione ammessa ora | Azione non ammessa ora |
|---|---|---|---|---|
| P1 | Safecondo local:* su gallery RAS |
rischio evidenze non apribili o non consolidate in RAS | report readonly per documento/domanda/ref | sostituzione automatica ref |
| P1 | Safecondo key gallery mancanti documenti 425/608 | 8 riferimenti non tracciati in stored_files |
confronto con MinIO, backup legacy, JSON sorgente | inventare mapping o rinominare a mano |
| P1 | Besant 5 documenti senza categoria | tenant produzione formazione/DVR | revisione manuale lista breve | auto-categorizzazione |
| P2 | Safecondo 515 documenti senza categoria | molti sono artefatti tecnici RAS/Extrabit solo Safecondo | classificazione per classe operativa | spostamento in categorie condominio ordinarie |
| P2 | Safecondo documenti senza cliente | rischio oggetti orfani o visibilita' errata | lista readonly e verifica relazione | assegnazione cliente automatica |
| P2 | Safecondo documenti scaduti | possibile impatto checklist/documentale | report scadenze per categoria/cliente | blocco retroattivo workflow |
| P3 | Echos abilitazione regole | ambiente pilota secondario | test validatori e UI warning | usare come fonte dati produzione |
Safecondo P1 - local:*¶
Dataset noto:
- documenti coinvolti:
70; - riferimenti
local:*:776; - top casi gia' identificati: documenti
357,830,364,566,419,544,415,486.
Report P1 generato:
- Markdown:
docs/processo/report/safecondo_ras_local_refs_p1_2026-07-10.md; - CSV:
docs/processo/report/safecondo_ras_local_refs_p1_2026-07-10.csv.
Il report P1 usa un criterio piu' operativo rispetto al primo audit:
- scansiona tutte le risposte Safecondo con
local:*; - deduplica lo stesso valore
local:*dentro la singola risposta, per non contare due volte i mirrordetail.gallery.items[]eimages[]; - risultato deduplicato:
92documenti,565riferimenti logicilocal:*; - breakdown riferimenti:
472su sottoschedesec_,61su__LIBRETTO__,32su__SUBSECTION_GALLERY__; - nessun match diretto trovato su
stored_filesusando il valore locale come filename/key normalizzata.
Il dato iniziale 70/776 resta utile come baseline preliminare; il report P1 e' il riferimento operativo per la revisione documento/domanda.
Output da produrre prima di ogni intervento:
- documento RAS;
- cliente/condominio associato;
- domanda o sezione RAS;
- valore raw della gallery;
- numero riferimenti
local:*; - numero key MinIO valide nello stesso documento;
- eventuale filename normalizzato candidato;
- stato candidato:
nessun match,match singolo,match ambiguo,gia' migrato parzialmente.
Criterio decisionale:
match singolo: puo' diventare proposta di fix in dry-run;match ambiguo: serve revisione manuale;nessun match: cercare backup/import legacy prima di dichiarare perdita;gia' migrato parzialmente: verificare duplicati e ordinamento gallery.
Safecondo P1 - Key Mancanti 425/608¶
Chiavi:
- documento
425:100_3299.JPG,100_3300.JPG,100_3302.JPG,Vista_dallalto.jpg; - documento
608:100_3802.JPG,100_3804.JPG,100_3806.JPG,Vista_dallalto.png.
Report P1 generato:
- Markdown:
docs/processo/report/safecondo_missing_gallery_keys_p1_2026-07-10.md; - CSV:
docs/processo/report/safecondo_missing_gallery_keys_p1_2026-07-10.csv.
Esito:
- le 8 chiavi non risultano perse;
- tutte hanno candidati in
stored_files; - ogni chiave ha
2candidati applicativi; - tutti i
16object key candidati risultano presenti fisicamente in MinIO; - stato operativo:
match_ambiguo_stored_files.
Interpretazione:
- il problema non e' assenza del binario;
- il problema e' mapping legacy ambiguo tra filename raw nel JSON e object key normalizzate;
- non si puo' scegliere automaticamente il candidato corretto senza confronto su immagine, ordine originale o sorgente legacy;
- il documento
425e' coerente con la strategia di recovery gia' esistente: caso noto di mapping immagini.
Verifica richiesta:
- cercare oggetti MinIO con filename uguale sotto prefissi legacy/import/gallery;
- controllare se esistono record
stored_filescon nome originale simile ma object key diversa; - confrontare JSON sorgente del RAS;
- produrre esito per singola chiave.
Nessuna correzione consentita senza prova oggettiva del mapping.
Safecondo P2 - 515 Senza Categoria¶
Classi operative:
| Classe | Totale | Policy proposta |
|---|---|---|
legacy_dynamic_ras |
194 | categoria tecnica RAS / Legacy Dynamic o vista tecnica Evidence Hub |
extrabit_package_zip |
131 | categoria tecnica Safecondo RAS / Pacchetti Extrabit |
extrabit_payload_json |
128 | categoria tecnica Safecondo RAS / Payload Extrabit |
ras_nc_schede |
36 | categoria tecnica RAS / Schede NC |
pdf_other |
25 | revisione manuale per capire se sono documenti condominio reali |
other |
1 | revisione manuale |
Report P2 generato:
- Markdown:
docs/processo/report/safecondo_uncategorized_p2_2026-07-10.md; - CSV:
docs/processo/report/safecondo_uncategorized_p2_2026-07-10.csv.
Esito:
- documenti senza categoria:
515; - documenti con metadato
stored_files:511; - documenti senza metadato
stored_files:4; - documenti senza cliente collegato:
2; - documenti con risposte legacy RAS:
119; - classificazione confermata:
legacy_dynamic_ras:194;extrabit_package_zip:131, solo Safecondo;extrabit_payload_json:128, solo Safecondo;ras_nc_schede:36;pdf_other:25;other:1.
Documenti senza metadato stored_files:
| Documento | Classe | Oggetto | MinIO key |
|---|---|---|---|
| 397 | legacy_dynamic_ras |
RAS - Condominio Tnema Bota | documenti/legacy-dynamic/legacy_dynamic_ras_20.json |
| 398 | legacy_dynamic_ras |
RAS - Condominio Tnema Bota Pal. B | documenti/legacy-dynamic/legacy_dynamic_ras_21.json |
| 400 | legacy_dynamic_ras |
RAS - Condominio Via Giovanni Xxiii° | documenti/legacy-dynamic/legacy_dynamic_ras_22.json |
| 812 | legacy_dynamic_ras |
RAS SANDBOX OFFLINE - CONDOMINIO VIA CANETTA |
Report PDF pdf_other generato:
- Markdown:
docs/processo/report/safecondo_pdf_other_p2_2026-07-10.md; - CSV:
docs/processo/report/safecondo_pdf_other_p2_2026-07-10.csv.
Esito PDF:
- PDF
pdf_other:25; - con metadato
stored_files:25; - approvati:
12; - in bozza:
13; - priorita' manuale P1:
8.
Classificazione PDF:
| Sottoclasse | Totale | Lettura operativa |
|---|---|---|
modulo_ordine_ras |
7 | commerciale RAS, non checklist condominio |
dvr_export |
6 | export tecnico DVR, vista tecnica |
contratto_portale |
4 | commerciale/portale |
verifica_acqua |
3 | possibile documento condominio reale |
verifica_ascensore |
2 | possibile documento impianto ascensore |
contratto_gestione_piscina |
1 | possibile contratto servizio piscina |
relazione_antincendio |
1 | possibile documento tecnico antincendio |
verifica_impianto_elettrico |
1 | possibile documento impianto elettrico |
PDF P1 manuali:
| Documento | Cliente | Oggetto | Sottoclasse | Scadenza |
|---|---|---|---|---|
| 365 | CONDOMINIO ANITA | rapporto prova acqua | verifica_acqua |
|
| 373 | CONDOMINIO ALEX | Contratto ascensori scala B | verifica_ascensore |
|
| 377 | CONDOMINIO ARIETE | Rapporto verifica ascensore | verifica_ascensore |
2027-04-28 |
| 403 | CONDOMINIO AMBIVERI A | verifica potabilita' acqua | verifica_acqua |
|
| 433 | CONDOMINIO ARIETE | Verifica acqua | verifica_acqua |
2028-04-18 |
| 839 | CONDOMINIO COINBERG | Relazione tecnica altezza antincendio | relazione_antincendio |
|
| 854 | CONDOMINIO COINBERG | ispezione periodica impianto elettrico | verifica_impianto_elettrico |
2027-07-14 |
| 1195 | CONDOMINIO RESIDENZA LA PISCINA | Contratto gestione piscina | contratto_gestione_piscina |
Nota:
- queste categorie non devono essere confuse con gli obblighi documentali ordinari del condominio;
- potrebbero vivere in una sezione tecnica Evidence Hub, separata dal documentale operativo.
- le categorie Extrabit sono solo Safecondo e non vanno abilitate automaticamente su Besant.
Tassonomia Tecnica per Tenant¶
Safecondo:
RAS / Legacy Dynamic;RAS / Payload Extrabit;RAS / Pacchetti Extrabit;RAS / Schede NC;RAS / Test e staging, solo se serve separare prove/import temporanei.
Besant:
Legacy RAS;DVR;Test clone, preferibilmente come stato/visibilita' tecnica e non come categoria documentale operativa.
Besant esclusioni:
- nessuna categoria Extrabit;
- nessuna regola Extrabit;
- nessuna ereditarieta' automatica dalla tassonomia Safecondo.
Echos:
- usare solo per validare menu, warning e comportamento Evidence Hub;
- non usare Echos per dedurre mapping o categorie produzione;
- eventuali categorie tecniche su Echos devono essere seed di test, non standard globale.
Matrice Decisionale Finale¶
Questa matrice traduce i report in decisioni operative. Non autorizza modifiche dati: serve per stabilire cosa puo' entrare in dry-run e cosa resta solo report/revisione.
| Ambito | Tenant | Volume | Decisione | Azione ammessa ora | Blocco |
|---|---|---|---|---|---|
local:* RAS/gallery |
Safecondo | 92 documenti / 565 ref | report tecnico P1, non fix automatico | preparare vista Evidence Hub con warning e dettaglio domanda/ref | sostituzione automatica riferimenti |
| key raw 425/608 | Safecondo | 8 key / 16 candidati | mapping ambiguo, binari presenti | confronto visuale/manuale candidati | scelta automatica candidato |
legacy_dynamic_ras senza categoria |
Safecondo | 194 | categoria tecnica o vista RAS / Legacy Dynamic |
dry-run di sola proposta categoria tecnica | aggancio a checklist condominio ordinaria |
extrabit_package_zip |
Safecondo | 131 | categoria tecnica RAS / Pacchetti Extrabit |
dry-run proposta categoria tecnica Safecondo | abilitazione su Besant/Echos produzione |
extrabit_payload_json |
Safecondo | 128 | categoria tecnica RAS / Payload Extrabit |
dry-run proposta categoria tecnica Safecondo | abilitazione su Besant/Echos produzione |
ras_nc_schede |
Safecondo | 36 | categoria tecnica RAS / Schede NC |
dry-run proposta categoria tecnica o vista Evidence Hub | miscelare con documenti obbligatori condominio |
PDF pdf_other tecnici |
Safecondo | 8 P1-manuale | revisione manuale documento per documento | preparare lista approvazione manuale | ricategorizzazione massiva |
| PDF commerciali/tecnici | Safecondo | 17 P2 | viste commerciali/tecniche, non checklist | mantenere separati in Evidence Hub | categorie obbligatorie condominio |
documenti senza stored_files |
Safecondo | 4 | anomalia storage metadata | report tecnico e verifica esistenza oggetto | backfill senza controllo MinIO |
| documenti senza categoria | Besant | 5 | revisione manuale produzione | 2 PDF DVR proponibili, 2 test clone da archiviare/nascondere, 1 RAS readonly | auto-categorizzazione |
Categorie Tecniche Candidate¶
Safecondo candidate:
| Categoria tecnica | Origine | Note |
|---|---|---|
RAS / Legacy Dynamic |
194 RAS legacy senza categoria | puo' essere anche solo vista Evidence Hub se si vuole evitare categorie fisiche |
RAS / Payload Extrabit |
128 payload JSON Extrabit | solo Safecondo |
RAS / Pacchetti Extrabit |
131 ZIP Extrabit | solo Safecondo |
RAS / Schede NC |
36 output schede non conformita' | categoria tecnica o vista tecnica |
RAS / Test e staging |
casi sandbox/test/import temporanei | usare solo se serve nascondere dal flusso operativo |
Besant candidate:
| Categoria/Stato | Origine | Note |
|---|---|---|
DVR |
documenti 2257/2258 | solo dopo conferma manuale |
Legacy RAS |
documento 1126 | readonly finche' non e' chiaro il flusso produttivo |
Test clone |
documenti 1159/1160 | preferibile stato/visibilita' tecnica, non categoria operativa |
Casi da Revisione Manuale¶
Safecondo PDF P1 manuali:
365- CONDOMINIO ANITA - rapporto prova acqua;373- CONDOMINIO ALEX - Contratto ascensori scala B;377- CONDOMINIO ARIETE - Rapporto verifica ascensore, scadenza2027-04-28;403- CONDOMINIO AMBIVERI A - verifica potabilita' acqua;433- CONDOMINIO ARIETE - Verifica acqua, scadenza2028-04-18;839- CONDOMINIO COINBERG - Relazione tecnica altezza antincendio;854- CONDOMINIO COINBERG - ispezione periodica impianto elettrico, scadenza2027-07-14;1195- CONDOMINIO RESIDENZA LA PISCINA - Contratto gestione piscina.
Besant manuali:
2257- DOCUMENTO DI VALUTAZIONE DEI RISCHI FAVILLA RISTORANTE 2026.pdf;2258- Allegati DVR BAJRAM BAHA 14.04.2025.pdf;1159e1160- test clone da valutare per archiviazione/nascondimento;1126- RAS legacy da mantenere readonly.
Regola per il Prossimo Dry-run¶
Il primo dry-run deve essere solo proposta, senza scrittura:
- Safecondo: proposta categorie tecniche per
legacy_dynamic_ras, Extrabit e Schede NC. - Safecondo: esclusione automatica dai fix dei PDF P1 manuali, che restano lista di approvazione.
- Besant: solo proposta manuale per i 2 PDF DVR; nessuna azione su test clone o RAS legacy.
- Echos: validazione interfaccia e warning con dati seed/test, non dati produzione.
Dry-run Proposta Categorie - 2026-07-10¶
Dry-run generato:
- Markdown:
docs/processo/report/ras_category_proposal_dry_run_2026-07-10.md; - CSV:
docs/processo/report/ras_category_proposal_dry_run_2026-07-10.csv.
Regola applicata:
- nessuna scrittura DB/MinIO;
- Safecondo: proposta automatica solo per categorie tecniche RAS;
- Safecondo PDF/manuali: esclusi dalla proposta automatica;
- Besant: solo proposta manuale per i 2 PDF DVR;
- Extrabit solo Safecondo.
Esito:
- righe totali valutate:
520; - Safecondo valutati:
515; - Besant valutati:
5; - proposte categoria Safecondo tecniche:
489; - proposte manuali Besant DVR:
2; - esclusi/manual review/no category:
29.
Azioni:
| Azione | Totale |
|---|---|
propose_category |
489 |
manual_review_only |
26 |
readonly_no_category |
3 |
manual_proposal_only |
2 |
Categorie proposte:
| Categoria | Totale | Applicazione |
|---|---|---|
RAS / Legacy Dynamic |
194 | Safecondo proposta tecnica |
RAS / Pacchetti Extrabit |
131 | Safecondo proposta tecnica |
RAS / Payload Extrabit |
128 | Safecondo proposta tecnica |
RAS / Schede NC |
36 | Safecondo proposta tecnica |
DVR_Agricoltori |
2 | Besant proposta manuale |
Il dry-run non e' piano di scrittura: e' una proposta da approvare/correggere.
Besant P1 - 5 Senza Categoria¶
Lista da verificare manualmente:
| Documento | Nome | Proposta |
|---|---|---|
| 2258 | Allegati DVR BAJRAM BAHA 14.04.2025.pdf |
verificare categoria DVR/formazione |
| 2257 | DOCUMENTO DI VALUTAZIONE DEI RISCHI FAVILLA RISTORANTE 2026.pdf |
verificare categoria DVR |
| 1160 | test clone struttura e immagini v2 | valutare archiviazione/nascondimento test |
| 1159 | test clone struttura e immagini | valutare archiviazione/nascondimento test |
| 1126 | RAS CONDOMINIO DI VIA SAFFI 8-10-12-14 | trattare readonly fino a conferma flusso |
Report P1 generato:
- Markdown:
docs/processo/report/besant_uncategorized_p1_2026-07-10.md; - CSV:
docs/processo/report/besant_uncategorized_p1_2026-07-10.csv.
Esito:
- tutti i 5 documenti hanno metadato
stored_files; - nessuno dei 5 e' collegato direttamente a un corso;
1126ha113risposte legacy RAS e va mantenuto readonly;1159e1160sono test clone e non vanno categorizzati come documenti operativi;2257e2258sono PDF approvati, collegati al clienteCat - Baha Bajram, con proposta manuale categoria DVR;- categoria esistente candidata per i due PDF:
DVR_Agricoltori.
Policy:
- nessun fix automatico;
- ogni proposta deve essere confermata da utente amministratore;
- mantenere audit log della decisione.
Echos - Pilota Secondario¶
Uso consigliato:
- validare struttura menu Evidence Hub;
- validare warning deterministici;
- validare categorie tecniche RAS con perimetro tenant esplicito;
- validare comportamento AI locale su descrizioni e suggerimenti;
- verificare che i report non espongano dati cross-tenant.
Echos non deve essere usato per dedurre automaticamente mapping sui tenant produzione.
Piano validazione generato:
- Markdown:
docs/processo/report/echos_evidence_hub_validation_plan_2026-07-10.md.
Regole Echos:
- usare solo seed/test sintetici;
- nessun dato Safecondo/Besant;
- Extrabit non operativo su Echos;
- warning visibili ma nessuna modifica automatica;
- validare menu, categorie tecniche generiche e warning prima di qualunque piano applicativo.
Sequenza Operativa Consigliata¶
- Completato report readonly Safecondo P1
local:*. - Completato report readonly Safecondo P1 documenti
425e608. - Completato report readonly Besant 5 documenti senza categoria.
- Completato report readonly Safecondo P2 515 documenti senza categoria.
- Completato report readonly Safecondo P2 25 PDF
pdf_other. - Completata tassonomia categorie tecniche RAS per tenant, con Extrabit solo Safecondo.
- Completato dry-run solo proposta per Safecondo categorie tecniche.
- Completato dry-run solo proposta per Besant 2 PDF DVR.
- Preparato piano validazione tassonomia e warning su Echos con seed/test, non dati produzione.
- Preparato piano di applicazione controllata, senza autorizzare scritture produzione.
Piano Applicazione Controllata - 2026-07-10¶
Piano generato:
- Markdown:
docs/processo/report/ras_evidence_hub_application_plan_2026-07-10.md.
Regole principali:
- nessuna scrittura DB/MinIO senza approvazione esplicita;
- Safecondo e Besant sono produzione;
- Echos resta pilota secondario solo con seed/test sintetici;
- Extrabit resta solo Safecondo;
- applicazione candidata solo per
489categorie tecniche Safecondo; - Besant resta manuale, in particolare i documenti
2257e2258; - esclusi automatici:
local:*, mapping ambiguo425/608, PDF manuali, documenti senzastored_files, test clone e RAS legacy Besant.
Gate obbligatori:
- conferma tassonomia;
- conferma CSV dry-run;
- export/backup dati coinvolti;
- applicazione Safecondo tracciata con batch id;
- report readonly post-apply;
- eventuali azioni Besant solo manuali e separate.
Batch id proposto:
ras_evidence_hub_categories_2026_07_10_safecondo_v1
Piano AI Besant/Safecondo - 2026-07-10¶
Piano generato:
- Markdown:
docs/processo/report/ai_besant_safecondo_integration_plan_2026-07-10.md.
Decisione:
- usare l'AI soprattutto su Besant e Safecondo;
- Echos resta solo banco prova tecnico;
- Besant risulta gia' abilitato in configurazione AI;
- Safecondo e' stato abilitato in configurazione AI il 2026-07-10;
- prima fase solo assistente readonly, nessuna scrittura DB/MinIO;
- output AI ammesso: sintesi, warning, categoria suggerita, motivazione, confidenza;
- output AI non ammesso: applicazione automatica categorie, modifica documenti, modifica checklist, spostamento file.
Verifica tecnica:
- Ollama raggiungibile su
http://192.168.192.162:11434; - modello disponibile:
llama3.1:8b; safeops-web.serviceriavviato e attivo;- configurazione tenant AI:
tenant_besant,tenant_echos,tenant_safecondo; - configurazione utenti AI:
emma; - voce menu aggiunta:
Produttivita -> Assistente AI, visibile solo per tenant AI abilitati e utente autorizzato.
Utente pilota AI:
- username:
emma; - email:
emanuele.matteucci@besantsrl.it; - perimetro: Besant e Safecondo, sola lettura/suggerimento.
- username:
jeme; - email:
formazione@besantsrl.it; - perimetro: Besant formazione, sola lettura/suggerimento.
Correzione menu:
- Emma non vedeva
Produttivita -> Assistente AI; - causa: label menu non ancora registrata nei permessi strutturali AppBuilder per
ROLE_PROFILE_TECNICO; - correzione applicata:
menu_accessaAssistente AIeProduttivitaperROLE_PROFILE_TECNICO; - sync permessi eseguita e servizio web riavviato.
Correzione errore pagina AI:
- accesso diretto
/ai/assistantgenerava errore 500; - causa: template AppBuilder renderizzato senza variabile
appbuilder; - correzione applicata nella blueprint AI;
- test gateway passati;
- servizio web riavviato;
- controllo anonimo locale ora restituisce
302verso login, non500.
Guardrail AI:
- primo test Emma funzionante ma risposta troppo generica;
- aggiunto prompt di sistema server-side per SafeOps;
- vietate proposte di modifiche automatiche a DB, categorie, checklist, mapping, documenti o MinIO;
- vietate proposte di sostituzione/correzione/spostamento immagini legacy;
- per mapping ambiguo: solo revisione manuale, blocco applicazione automatica e audit;
- test gateway passati:
6.
Guardrail tassonomia:
- secondo test Safecondo prudente ma con categoria inventata;
- aggiunte al prompt di sistema le sole categorie tecniche ammesse:
RAS / Legacy Dynamic,RAS / Pacchetti Extrabit,RAS / Payload Extrabit,RAS / Schede NC; - vietato inventare nomi categoria;
- Extrabit esplicitamente solo Safecondo;
- se non c'e' match con categoria ammessa, l'AI deve proporre revisione manuale.
Abilitazione Jeme:
- utente
jemeindividuato come gestore formazione Besant; - aggiunto a
SAFEOPS_AI_ENABLED_USERS; - aggiunto
ROLE_PROFILE_FORMAZIONE_OPERATOREai permessi menuAssistente AI; - guardrail Besant estesa: Besant ha sia RAS sia formazione, niente logiche Safecondo/Extrabit automatiche su Besant.
Correzione guardrail Besant DVR:
- il modello ha interpretato erroneamente
DVRcomeVideo Recording Device; - corretto prompt di sistema: in SafeOps/Besant
DVRsignificaDocumento di Valutazione dei Rischi; - se il prompt indica Besant, l'AI non deve citare Safecondo salvo richiesta esplicita;
DVR_Agricoltoripuo' essere citata solo come categoria candidata/manuale da confermare per i documenti Besant pertinenti.- ulteriore correzione: su Besant non usare categorie Safecondo
RAS / ...salvo documento esplicitamente RAS; - per un DVR Besant non suggerire mai
RAS / Legacy Dynamic. - ulteriore correzione: per DVR Besant non dedurre categoria dal cliente, ma dal settore/oggetto del documento;
- categorie DVR esistenti rilevate:
DVR_Agricoltori,DVR_Azienda,DVR_Condominio; - per ristorante/bar/attivita' commerciale non suggerire
DVR_Agricoltori; - per DVR ristorante citare eventualmente
DVR_Aziendasolo come categoria candidata/manuale da confermare.