Vitruvyan Docs
AICOMSEC — Flusso di Ingestione: Esempio Concreto (Excel Assessment)
Last updated: Feb 27, 2026 14:00 UTC Tipo: Walkthrough tecnico — esempio reale per onboarding File sorgente:
assessment_contursi_feb25.xlsx— Impianto di Linea Contursi, Snam S.p.A. Documento correlato: AICOMSEC_BRAINSTORM_REPORT.md
Il file sorgente
Un workbook Excel di assessment di sicurezza fisica/cyber con 7 fogli interdipendenti:
| Foglio | Contenuto |
|---|---|
| Informazioni generali Asset | Anagrafica: denominazione, tipologia, società, settore, comune, provincia, regione, data assessment |
| Data Validation | Lookup list: livelli implementazione, tipologie asset, società del gruppo (Snam, Snam Rete Gas, GNL Italia…) |
| Checklist 1 - Rischio inerente | Criteri (a) geografici/territoriali, (b) vulnerabilità strutturale, (c) criticità business → calcola RISCHIO INERENTE |
| Checklist 2 - Misure di sicurezza | ~50 misure distribuite su 8 ambiti → livello AS-IS vs baseline → GAP |
| SCOPERTURA MISURE | % copertura per categoria (AS-IS e TO-BE), visualizzata come radar chart |
| CALCOLO RI_RR | Formula finale: Rischio Residuo AS-IS e TO-BE (matrice probabilità × impatto) |
| FINDIGS | Raccomandazioni con stima economica per ogni gap aperto |
Asset di riferimento in questo esempio:
Stadio 1 — Oculus Prime riceve il file
Oculus Prime (port 8050) è il pre-epistemic intake: non fa NER, non fa embedding, non interpreta il significato. Smonta il workbook foglio per foglio ed emette un Evidence Envelope sul bus Redis.
Nota: le celle
#NOME?visibili nel file originale sono errori di formula Excel (baseline non ancora compilata). Oculus Prime li cattura come stringa"#NOME?". Codex Hunters li marcheràdata_quality: incomplete— la pipeline non si blocca.
Stadio 2 — Codex Hunters → PostgreSQL
Codex Hunters consuma codex.entity.bound e produce due tipi di entità da questo file: l'asset principale + una entità per ogni gap aperto.
Tabella codex_entities
Tabella codex_lineage
Stadio 3 — Babel Gardens + Pattern Weavers → Qdrant
Collection: aicomsec.snam_infrastrutture.chunks
Vengono creati vettori distinti per cluster tematico — non uno per riga Excel, ma uno per gruppo di misure affini (più efficiente per la retrieval semantica).
Stadio 4 — Query via Graph: tre esempi
Query 1 — Gap analysis completa
Input del consulente (chat H2M):
"Quali sistemi di sicurezza mancano completamente all'impianto di Contursi?"
LangGraph flow:
Query Qdrant:
Risposta generata:
Query 2 — Compliance check NIS2
Input (API M2M):
LangGraph flow:
Risposta:
Query 3 — Evidence Chain Constructor
Input:
Risposta (pacchetto prove per auditor):
Riepilogo per il collega
| Componente | Cosa contiene dopo l'ingestione |
|---|---|
PostgreSQL codex_entities | 1 record asset + ~35 record gap, ciascuno con metadata strutturato (ambito, misura, livello AS-IS, raccomandazione) |
PostgreSQL codex_lineage | Traccia: da quale foglio Excel viene ogni entità, quale pipeline l'ha processata |
Qdrant aicomsec.snam_infrastrutture.chunks | 5–7 vettori 768-dim per cluster tematico, ricercabili semanticamente con filtri (gap_open, coverage_pct, norm_refs, ambito_id) |
| OpenMetadata | DAG di lineage: file Excel → entity → chunk → embedding — usato dall'Evidence Chain Constructor per costruire il pacchetto prove NIS2 |
Punto chiave: il file Excel entra come documento opaco. Dopo ~30 secondi è interrogabile semanticamente — "quali sistemi mancano?", "siamo conformi NIS2?", "costruisci il pacchetto prove per l'auditor" — senza riaprire il file.