Piano pulizia pre-migrazione formazione¶
Data: 2026-09-02
Modalita corrente: inventario/read-only. Nessuna cancellazione eseguita.
Obiettivo¶
Ripulire SafeOps e WooCommerce dalle ricorrenze/date/edizioni create per test o pre-popolamento, senza toccare i discenti e senza perdere il catalogo corsi necessario alla migrazione legacy.
Principio¶
Non cancellare i record corso SafeOps come prima azione.
Motivo: corso e il catalogo di destinazione della migrazione. Inoltre alcune relazioni
su corso hanno cascade verso date, edizioni e partecipazioni. Per non rischiare di
perdere collegamenti discente-corso, la pulizia deve azzerare prima le ricorrenze e le
edizioni, non il catalogo.
Inventario SafeOps¶
DEV tenant_besant:
- corsi catalogo: 34
- date corso: 178
- edizioni corso: 117
- partecipazioni corso: 193
- dipendenti collegati a corsi: 188
- firme: 0
- metadati date
formazione_data_corso_meta: 105 - mappe corso WooCommerce: 34
- mappe iscrizione WooCommerce: 1
- prenotazioni quote: 1
- partecipanti quote: 2
Produzione tenant_besant:
- corsi catalogo: 35
- date corso: 179
- edizioni corso: 118
- partecipazioni corso: 195
- dipendenti collegati a corsi: 189
- firme: 0
- metadati date
formazione_data_corso_meta: 106 - mappe corso WooCommerce: 34
- mappe iscrizione WooCommerce: 6
- prenotazioni quote: 4
- partecipanti quote: 5
File inventario:
/home/safeops/tmp/formazione_cleanup_inventory_20260902/dev/safeops_formazione_cleanup_counts.tsv/home/safeops/tmp/formazione_cleanup_inventory_20260902/dev/safeops_formazione_cleanup_corsi.tsv/home/safeops/tmp/formazione_cleanup_inventory_20260902/prod/safeops_formazione_cleanup_counts.tsv/home/safeops/tmp/formazione_cleanup_inventory_20260902/prod/safeops_formazione_cleanup_corsi.tsv/home/safeops/tmp/formazione_cleanup_inventory_20260902/dev/woo//home/safeops/tmp/formazione_cleanup_inventory_20260902/prod/woo/
Cosa proteggere¶
Non toccare:
- tabella
dipendente; - anagrafiche clienti/aziende;
- anagrafiche docenti;
- partecipazioni
dipendente_corso, salvo decisione esplicita; - documenti/attestati gia caricati;
- richieste WooCommerce gia arrivate, quote e partecipanti quote, salvo reset esplicito.
Corsi con partecipanti da proteggere:
DEV: 9 corsi con 193 partecipazioni.
Produzione: 11 corsi con 195 partecipazioni.
Questi corsi non devono essere cancellati. Le loro date/edizioni possono essere azzerate solo dopo verifica, perche potrebbero servire a registro, calendario o richieste.
Cosa si puo azzerare¶
Pulizia consigliata:
- cancellare collegamenti
edizione_data_corsodelle edizioni da rimuovere; - cancellare
edizione_corsoricorrenze SafeOps; - cancellare
formazione_data_corso_metalegati alle date rimosse; - cancellare
data_corsopianificazioni/ricorrenze; - azzerare su
corsosolo i riferimenti sync/date generati:catalog_sync_status, eventuali note operative, senza cancellare il corso catalogo; - lato WooCommerce: eliminare o disattivare variation generate dalle edizioni SafeOps,
usando la lista
external_variation_id.
Pulizia WooCommerce¶
Inventario locale:
DEV:
- course maps: 34
- edizioni/variation locali: 117
- enrollment maps: 1
- prenotazioni: 1
Produzione:
- course maps: 34
- edizioni/variation locali: 118
- enrollment maps: 6
- prenotazioni: 4
Regola consigliata:
- non cancellare prodotti/corsi WooCommerce padre senza revisione;
- cancellare o disattivare solo variation generate da
edizione_corso.external_variation_id; - prima produrre lista variation con corso SafeOps, edizione, data collegata e presenza ordini;
- se una variation ha ordini o prenotazioni collegate, marcarla
da_revisionaree non cancellarla automaticamente.
Strategia proposta¶
Fase 1 - dry-run¶
Produrre una tabella di pulizia con:
target_system = safeops | woocommercetarget_tabletarget_idsafeops_tenant_keysafeops_corso_idsafeops_codiceaction = delete | deactivate | clear_field | keepreasonblocked_bystatus = dry_run | approved | done | skipped | error
Fase 2 - DEV¶
Eseguire solo su DEV:
- azzerare edizioni/date/metadati per corsi senza partecipanti;
- lasciare intatte partecipazioni e dipendenti;
- lasciare intatti corsi catalogo;
- produrre report post-cleanup;
- controllare che la pagina corsi funzioni;
- controllare che import corsisti e registro non vadano in errore.
Fase 3 - WooCommerce¶
Solo dopo DEV:
- esportare lista variation da rimuovere/disattivare;
- verificare presenza ordini;
- disattivare prima, cancellare solo se sicuro;
- riallineare mappe locali SafeOps.
Fase 4 - Produzione¶
Solo dopo approvazione manuale:
- backup DB produzione;
- export lista target;
- dry-run produzione;
- applicazione controllata;
- verifica post-cleanup.
Test minimi post-cleanup¶
- login SafeOps;
- apertura
/formazione-corsi/; - apertura dettaglio corso catalogo;
- calendario vuoto o coerente;
- creazione nuova pianificazione rapida;
- generazione registro su nuovo corso di test;
- import corsisti senza duplicati;
- coda WooCommerce accessibile;
- nessun dipendente cancellato;
- conteggio
dipendente_corsoinvariato se si decide di non toccare partecipazioni.
Decisione consigliata¶
Non cancellare i corsi catalogo.
Procedere invece con:
- dry-run pulizia DEV;
- cancellazione controllata in DEV di date/edizioni/metadati;
- disattivazione/cancellazione variation WooCommerce solo dopo lista ordini;
- produzione solo dopo conferma esplicita.