Match corsi legacy SecureHub -> SafeOps¶
Data audit: 2026-09-02
Modalita: sola lettura su legacy 10.200.0.251 e database SafeOps.
Artefatti CSV prodotti:
/home/safeops/tmp/formazione_legacy_match_20260902/dev/legacy_corsi.csv/home/safeops/tmp/formazione_legacy_match_20260902/dev/safeops_corsi.csv/home/safeops/tmp/formazione_legacy_match_20260902/dev/match_legacy_safeops_corsi.csv/home/safeops/tmp/formazione_legacy_match_20260902/prod/match_legacy_safeops_corsi.csv
Nessuna migrazione, scrittura DB o restart eseguiti.
Sintesi¶
Il legacy contiene 654 record in corsi; SafeOps Besant contiene 34 corsi catalogo in DEV
e 35 in produzione. Il match non deve essere trattato come corso legacy = corso SafeOps
uno-a-uno: nel legacy molti record corsi rappresentano edizioni storiche/eventi, mentre
in SafeOps il modello corrente usa il corso come catalogo e collega date, partecipanti,
registro e attestati.
Correzione criterio dopo revisione: il match operativo principale deve essere
categorie_corsi legacy -> corso SafeOps. I record legacy corsi sono da trattare
come eventi/edizioni storiche ripetute, collegate alla categoria corso.
Match categoria legacy -> corso SafeOps:
- categorie legacy totali: 59
- categorie con alias forte: 36
- categorie da revisionare: 9
- categorie non usate: 14
- iscrizioni coperte da alias forte: 4.324 su 4.695
- documenti discente coperti da alias forte: 3.391
- registri coperti da alias forte: 723
CSV corretto per la revisione:
/home/safeops/tmp/formazione_legacy_match_20260902/dev/match_legacy_categorie_safeops_corsi.csv/home/safeops/tmp/formazione_legacy_match_20260902/prod/match_legacy_categorie_safeops_corsi.csv
Primo match automatico DEV:
- match forte: 7
- match probabile: 88
- match debole: 172
- non trovato: 387
Primo match automatico produzione:
- match forte: 7
- match probabile: 88
- match debole: 172
- non trovato: 387
Perche il match sui record corsi non basta¶
Solo 7 corsi legacy hanno un codice direttamente sovrapponibile al codice catalogo
SafeOps. Il campo legacy codice e spesso un identificativo evento, esempio
CRSIN-...; il campo Codice_corso contiene spesso codici storici progressivi o alias
non identici a SafeOps, esempio BLSD 01, ANTLIV2 04, PSGRBC 08.
Quindi il match corretto deve usare questa priorita:
Codice_corso/codicelegacy normalizzati controcorso.codiceSafeOps.- categoria legacy
categorie_corsi.nomeecategoria_documentale_id. - titolo legacy
corsi.nomenormalizzato. - durata, date e tipo come controlli di coerenza, non come chiave primaria.
- revisione manuale per categorie generiche come
ALTRI CORSI,CORSI SPECIFICI,SICUREZZA LAVORATORI, PREPOSTI E DIRIGENTI.
Nota: la priorita sopra va applicata partendo da categorie_corsi, non dai singoli
record corsi.
Peso migrazione per categoria legacy¶
Categorie principali per numero iscrizioni:
- Corso sicurezza lavoratori aziende ad alto rischio specifico: 537 iscrizioni, 12 documenti
- Preposti per la sicurezza: 431 iscrizioni, 415 documenti
- Antincendio livello 2 formazione: 277 iscrizioni, 249 documenti
- Aggiornamento lavoratori e preposto: 277 iscrizioni, 254 documenti
- Sicurezza lavoratori alto rischio: 232 iscrizioni, 190 documenti
- Aggiornamento primo soccorso gruppo A: 230 iscrizioni, 222 documenti
- DPI terza categoria e lavori in quota: 229 iscrizioni, 222 documenti
- Spazi confinati: 177 iscrizioni, 167 documenti
- Aggiornamento antincendio livello 3: 155 iscrizioni, 145 documenti
- Aggiornamento primo soccorso gruppo B/C: 152 iscrizioni, 141 documenti
- Carrelli elevatori formazione: 147 iscrizioni, 146 documenti
- Altri corsi: 143 iscrizioni, 139 documenti
- Aggiornamento carrelli elevatori: 142 iscrizioni, 128 documenti
- Primo soccorso gruppo A: 122 iscrizioni, 108 documenti
- Aggiornamento antincendio livello 2: 113 iscrizioni, 103 documenti
Categorie con iscritti da revisionare manualmente:
ALTRI CORSI: 143 iscrizioni, 139 documentiCORSI SPECIFICI: 106 iscrizioni, 91 documentiCorso di Formazione Sicurezza Dirigenti: 28 iscrizioni, 28 documentiCORSO PALA CARICATRICE FRONTALE: 28 iscrizioni, 28 documentiCORSO AGGIORNAMENTO PALA CARICATRICE FRONTALE: 22 iscrizioni, 19 documentiCORSO DI FORMAZIONE PARTE GENERALE LAVORATORI: 20 iscrizioni, 0 documenticorsi: 19 iscrizioni, 12 documentiADDETTO AI LAVORI ELETTRICI: 4 iscrizioni, 4 documentiANTINCENDIO: 1 iscrizione, 1 documento
Regola dati consigliata¶
La migrazione deve creare una tabella di ponte, non affidarsi a match impliciti:
legacy_source = securehublegacy_corso_idsafeops_corso_idsafeops_tenant_keymatch_status:codice,categoria_alias,titolo,manuale,nuovo_corsomatch_scorereviewed_byreviewed_atnote
Questa tabella permette di importare in modo ricostruibile:
- date legacy ->
data_corso/edizioni storiche SafeOps; - iscrizioni legacy ->
dipendente_corso; - attestati/certificati legacy -> documenti del libretto sicurezza;
- registri legacy -> archivio corso;
- categorie/scadenze legacy -> scadenze attestato dove coerenti.
Proposta match semantico iniziale¶
Mappare con alias controllati, da approvare prima della migrazione:
- BLSD / Aggiornamento BLSD ->
BLSD,AGGFORBLS,CORFORBLS - Antincendio livello 1/2/3 ->
CORANTLV1,CORANTLV2,CORANTLV3 - Aggiornamento antincendio livello 1/2/3 ->
AGGANTLV1,AGGANTLV2,AGGANTLV3 - Primo soccorso gruppo A ->
CORPRSGRA,AGGCPSGRA - Primo soccorso gruppo B/C ->
CORPSGRBC,AGGCPSGBC - Sicurezza lavoratori basso/medio/alto ->
CORLAVRBR,CORLAVRMR,CORLAVRAL - Aggiornamento lavoratori ->
AGGSICLAVoAGGLAVEDIse edile - Preposti ->
CORFORPRE,AGGCRSPRE - PES/PAV ->
CORPESPAV,AGGPESPAV - PLE ->
CORFORPLE,AGGCRSPLE - Carrelli elevatori ->
CORCARELE,AGGCRSCAR - Spazi confinati ->
CORSPACON,AGGSPACON - DPI/lavori in quota ->
CORDPILVQ - Gru autocarro ->
CORGRUAUT - Privacy ->
CORFORPRI - Gas tossici ->
CORGASTOS
Rischi¶
- I match fuzzy possono produrre falsi positivi, soprattutto tra formazione e aggiornamento o tra livelli rischio/livelli antincendio.
- Alcuni corsi legacy sono categorie generiche o corsi esterni/non gestiti: non vanno forzati su un catalogo SafeOps sbagliato.
- Il legacy non ha tenant: va importato nel perimetro
tenant_besantsolo dopo controllo. - Il legacy non ha esito iscrizione: completamento e scadenza vanno dedotti da attestato/certificato collegato.
- Date anomale gia rilevate nel legacy, anni
206e2206, devono essere escluse o corrette.
Prossimo passo consigliato¶
- Validare la mappa alias
categorie_corsilegacy -> SafeOps corso. - Rieseguire il matcher usando alias approvati e separare:
auto_match,da_revisionare,creare_nuovo_corso,non_migrare. - Produrre anteprima migrazione con conteggi per corso SafeOps: date, partecipanti, attestati, registri.
- Fare import solo su DEV con tabella ponte e dry-run obbligatorio.
- Validare campioni reali prima di allineare produzione.