discovery-cartella-sito-tlc

star 0

Sub-skill di VerifyBoost TLC. Mappa esaustivamente i file di una cartella di sito TLC italiano (iliad/Cellnex/INWIT/WindTre), inclusi archivi compressi annidati (.zip, .rar, .7z) e file firmati digitalmente (.p7m doppi/tripli). Si attiva quando viene avviata una verifica VerifyBoost o quando l'utente dice "mappa cartella sito", "cosa c'è nella cartella di {codice}", "estrai tutti i file dal sito". Output: lista categorizzata per tipologia documentale (PE, autorizzazioni, deposito GC, realizzato, foto) + segnalazione di archivi/firme da estrarre.

GigiK2A By GigiK2A schedule Updated 6/10/2026

name: discovery-cartella-sito-tlc description: Sub-skill di VerifyBoost TLC. Mappa esaustivamente i file di una cartella di sito TLC italiano (iliad/Cellnex/INWIT/WindTre), inclusi archivi compressi annidati (.zip, .rar, .7z) e file firmati digitalmente (.p7m doppi/tripli). Si attiva quando viene avviata una verifica VerifyBoost o quando l'utente dice "mappa cartella sito", "cosa c'è nella cartella di {codice}", "estrai tutti i file dal sito". Output: lista categorizzata per tipologia documentale (PE, autorizzazioni, deposito GC, realizzato, foto) + segnalazione di archivi/firme da estrarre.

Discovery cartella sito TLC

Mappa esaustivamente la cartella di un sito TLC e categorizza i file per tipologia documentale.

Trigger di attivazione

  • Avvio pipeline VerifyBoost TLC (chiamata dall'orchestratore)
  • "Mappa cartella sito {codice}"
  • "Cosa c'è nella cartella di {codice}"
  • "Discovery sito {codice}"

Quando NON usare

  • Se l'utente vuole solo leggere un file specifico già noto
  • Se la verifica non è ancora stata richiesta (è una sub-skill di pipeline)

Pipeline operativa

Step 1 - Ricerca esaustiva file

Esegui ricerca completa nella cartella sito target con find:

find "<cartella_sito>" -type f 2>/dev/null | sort

Cerca sempre anche file nascosti in archivi:

find "<cartella_sito>" -type f \( -iname "*.zip" -o -iname "*.rar" -o -iname "*.7z" -o -iname "*.p7m" \) 2>/dev/null

Step 2 - Estrazione archivi annidati

Archivi .zip: estrai con Python zipfile:

import zipfile
with zipfile.ZipFile(path) as z:
    z.extractall(dest_dir)

Archivi .7z: richiede py7zr (NON usare 7z CLI che spesso non è disponibile):

pip install py7zr --break-system-packages --quiet
import py7zr
with py7zr.SevenZipFile(path, 'r') as z:
    z.extractall(dest_dir)

Archivi .rar: richiede rarfile + unrar:

pip install rarfile --break-system-packages --quiet

File .p7m (firma digitale CAdES): vedi references/estrazione-p7m-cades.md per snippet completo. ATTENZIONE: gestire wrapping doppi/tripli (.p7m.p7m.p7m) - alcuni file sono firmati più volte.

Step 3 - Categorizzazione automatica

Classifica ogni file in una delle macro-categorie:

Categoria Pattern nomi tipici
PE_progetto_esecutivo PE_*.pdf, *Progetto esecutivo*.pdf, *Relazione tecnica*.pdf
PE_calcolo_strutturale *calcolo*.pdf, *VS*.pdf, Calzavara*.pdf, IBS*.pdf
PE_tavole_grafiche *OC.*pdf, *tav*.pdf, *planimetria*.pdf, *prospetto*.pdf
PDM_autorizzato *PDM*.p7m, *AUTORIZZATO*.pdf
autorizzazione_paesaggistica *paesaggist*, *SABAP*, *1504_2022*
parere_arpat_cem *ARPAT*, *CEM*, *positivo*.msg
nulla_osta_enac *ENAC*
pratica_suap *SUAP*, *CdS*, *Conferenza Servizi*
deposito_genio_civile *Deposito GC*.7z, *PORTOS*, *Sismica*, *Vidimazione*
cil_inizio_lavori *CIL*, *INIZIO LAVORI*
cfl_fine_lavori *CFL*, *FINE LAVORI*
dico_dm37_2008 *Conformit*.pdf, *DiCo*, *conformita*
mat_misura_terra *MAT*, *terra*
ddt_materiali *DDT*, *DOP*, *CE.pdf*
dichiarazione_corretta_installazione *corretta installazione*, *regolare esecuzione*
scala_sicurezza *scala*, *SOLL*, *GlideLoc*
sac_xlsm *SAC*.xlsm
foto_cantiere *.jpg, *.jpeg, *.png (in cartelle FOTO* o estratte da zip foto)
file_accesso_sito *Accesso Sito*
duvri_art_26 *ART 26*, *DUVRI*, *Rischi specifici*

Step 4 - Output strutturato

Produci JSON con questa struttura:

{
  "sito_codice": "FI50144_002",
  "data_discovery": "2026-05-04",
  "totale_file": 87,
  "totale_foto": 70,
  "archivi_estratti": [
    "1.zip", "Doc fine opere.zip", "Foto Belfiore.zip", "Deposito GC.7z"
  ],
  "categorie": {
    "PE_progetto_esecutivo": ["2022.10.10_PE_..."],
    "deposito_genio_civile": ["19_FI144_002_Deposito GC.7z (estratto)"],
    "...": []
  },
  "p7m_estratti": ["PDM AUTORIZZATO.p7m", "Fascicolo_A02.pdf.p7m.p7m"],
  "warning": [
    "Trovati N file p7m con doppio/triplo wrapping",
    "File X non leggibile: corrotto"
  ]
}

Lessons learned

  • Mai assumere che la cartella sia piatta. I siti TLC hanno tipicamente 3-5 livelli di nesting con archivi compressi multipli.
  • Mai saltare i .7z. Spesso il deposito GC è in .7z per dimensioni - se non viene estratto, si salta l'intera verifica strutturale formale.
  • Verifica md5 dei file con stessa dimensione. A volte fascicoli depositati con etichette diverse sono lo stesso file (es. caso PORTOS A07/A08/A09 nel sito FI50144_002).
  • Le foto sono spesso in 2-3 zip diversi. Verificare md5 per evitare di duplicare foto identiche.

Esempio applicato

Sito: FI50144_002 VIALE BELFIORE - cartella su Desktop

find "/path/FI50144_002 VIALE BELFIORE" -type f | wc -l
# 87 file totali

find ... -iname "*.7z"
# trovato: 1/01_Permessi/19_FI144_002_Deposito GC.7z

# estrazione
python3 -c "import py7zr; py7zr.SevenZipFile('19_FI144_002_Deposito GC.7z').extractall('/tmp/GC/')"

# il pacchetto contiene Avviso Vidimazione + 11 fascicoli .p7m (alcuni doppi/tripli) + 3 asseverazioni + 2 ricevute IRIS

Output finale alla skill chiamante

Restituisci:

  • JSON di mappa categorizzata completa
  • Lista warning (file corrotti, p7m problematici, archivi non estraibili)
  • Lista priorità lettura (i 5-10 documenti più rilevanti per la baseline)
Install via CLI
npx skills add https://github.com/GigiK2A/K2-AI --skill discovery-cartella-sito-tlc
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator