Vai al contenuto

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:

  • Documento
  • Categoria
  • Allegato
  • 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.py
  • app/modules/documentale/views.py
  • app/modules/documentale/workspaces/
  • app/modules/documentale/document_workspace_registry.py
  • app/modules/anagrafiche/views.py

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.py
  • app/services/print_engine/adapters/ras.py
  • app/services/print_engine/renderers/ras_vertical_v2.py
  • tests/test_dynamic_gallery_answer_normalization.py
  • tests/test_dynamic_gallery_metadata.py
  • tests/test_ras_gallery_print_adapter.py
  • tests/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:

  • qid valido;
  • 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/status
  • POST /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:

  1. audit readonly Safecondo/Besant;
  2. validatori deterministici;
  3. Evidence Hub readonly;
  4. AI assistita;
  5. 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.eu
  • MINIO_SECURE: True
  • MINIO_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
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.
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.JPG
  • 100_3300.JPG
  • 100_3302.JPG
  • 100_3802.JPG
  • 100_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 da stored_files.

Prime Anomalie da Governare

Safecondo:

  1. 515 documenti senza categoria.
  2. 15 documenti senza cliente.
  3. 137 documenti scaduti.
  4. 6 documenti con minio_key senza record stored_files.
  5. 9 allegati con minio_key senza record stored_files.
  6. 776 riferimenti gallery local:* su 70 documenti.
  7. 8 chiavi gallery non trovate in stored_files.

Besant:

  1. 5 documenti senza categoria.
  2. 1 documento senza cliente.
  3. Nessuna anomalia MinIO rilevata su documenti/allegati/gallery.
  4. Presenza di documenti RAS legacy e test clone da trattare in sola lettura.

Echos:

  1. Nessun dato documentale o gallery rilevato.

Impatto sul Piano

Prima implementazione consigliata:

  1. Validatore deterministic readonly/report per Safecondo produzione:
  2. documenti senza categoria;
  3. documenti senza cliente;
  4. local:* in gallery;
  5. key MinIO mancanti.
  6. Validatore Besant produzione in modalita' warning:
  7. documenti senza categoria;
  8. documento senza cliente;
  9. nessun blocco su storico.
  10. Validatore Echos pilota secondario per provare regole prima di applicarle ai tenant produzione.
  11. Evidence Hub deve leggere:
  12. DB documentale;
  13. stored_files;
  14. gallery da legacy_dynamic_answer;
  15. 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:

  1. RAS Safecondo con riferimenti gallery local:*;
  2. chiavi gallery non presenti in stored_files;
  3. 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.

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:

  • 515 documenti 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 Extrabit solo Safecondo;
  • RAS / Pacchetti Extrabit solo 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:

  • 5 documenti 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:

  1. produrre un report CSV/HTML readonly per Safecondo produzione con:
  2. 70 documenti local:*;
  3. conteggio per domanda;
  4. conteggio key MinIO valide nello stesso documento;
  5. link interno al documento se disponibile.
  6. produrre un report readonly dei 515 senza categoria, ma raggruppato per classe operativa;
  7. decidere se creare categorie tecniche RAS per artefatti Safecondo Extrabit/NC/Legacy;
  8. per Besant preparare solo una lista di 5 casi da verificare manualmente.
  9. 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 mirror detail.gallery.items[] e images[];
  • risultato deduplicato: 92 documenti, 565 riferimenti logici local:*;
  • breakdown riferimenti: 472 su sottoschede sec_, 61 su __LIBRETTO__, 32 su __SUBSECTION_GALLERY__;
  • nessun match diretto trovato su stored_files usando 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 2 candidati applicativi;
  • tutti i 16 object 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 425 e' 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_files con 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, scadenza 2027-04-28;
  • 403 - CONDOMINIO AMBIVERI A - verifica potabilita' acqua;
  • 433 - CONDOMINIO ARIETE - Verifica acqua, scadenza 2028-04-18;
  • 839 - CONDOMINIO COINBERG - Relazione tecnica altezza antincendio;
  • 854 - CONDOMINIO COINBERG - ispezione periodica impianto elettrico, scadenza 2027-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;
  • 1159 e 1160 - 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:

  1. Safecondo: proposta categorie tecniche per legacy_dynamic_ras, Extrabit e Schede NC.
  2. Safecondo: esclusione automatica dai fix dei PDF P1 manuali, che restano lista di approvazione.
  3. Besant: solo proposta manuale per i 2 PDF DVR; nessuna azione su test clone o RAS legacy.
  4. 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;
  • 1126 ha 113 risposte legacy RAS e va mantenuto readonly;
  • 1159 e 1160 sono test clone e non vanno categorizzati come documenti operativi;
  • 2257 e 2258 sono PDF approvati, collegati al cliente Cat - 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

  1. Completato report readonly Safecondo P1 local:*.
  2. Completato report readonly Safecondo P1 documenti 425 e 608.
  3. Completato report readonly Besant 5 documenti senza categoria.
  4. Completato report readonly Safecondo P2 515 documenti senza categoria.
  5. Completato report readonly Safecondo P2 25 PDF pdf_other.
  6. Completata tassonomia categorie tecniche RAS per tenant, con Extrabit solo Safecondo.
  7. Completato dry-run solo proposta per Safecondo categorie tecniche.
  8. Completato dry-run solo proposta per Besant 2 PDF DVR.
  9. Preparato piano validazione tassonomia e warning su Echos con seed/test, non dati produzione.
  10. 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 489 categorie tecniche Safecondo;
  • Besant resta manuale, in particolare i documenti 2257 e 2258;
  • esclusi automatici: local:*, mapping ambiguo 425/608, PDF manuali, documenti senza stored_files, test clone e RAS legacy Besant.

Gate obbligatori:

  1. conferma tassonomia;
  2. conferma CSV dry-run;
  3. export/backup dati coinvolti;
  4. applicazione Safecondo tracciata con batch id;
  5. report readonly post-apply;
  6. 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.service riavviato 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_access a Assistente AI e Produttivita per ROLE_PROFILE_TECNICO;
  • sync permessi eseguita e servizio web riavviato.

Correzione errore pagina AI:

  • accesso diretto /ai/assistant generava 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 302 verso login, non 500.

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 jeme individuato come gestore formazione Besant;
  • aggiunto a SAFEOPS_AI_ENABLED_USERS;
  • aggiunto ROLE_PROFILE_FORMAZIONE_OPERATORE ai permessi menu Assistente 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 DVR come Video Recording Device;
  • corretto prompt di sistema: in SafeOps/Besant DVR significa Documento di Valutazione dei Rischi;
  • se il prompt indica Besant, l'AI non deve citare Safecondo salvo richiesta esplicita;
  • DVR_Agricoltori puo' 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_Azienda solo come categoria candidata/manuale da confermare.