Vai al contenuto

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:

  1. cancellare collegamenti edizione_data_corso delle edizioni da rimuovere;
  2. cancellare edizione_corso ricorrenze SafeOps;
  3. cancellare formazione_data_corso_meta legati alle date rimosse;
  4. cancellare data_corso pianificazioni/ricorrenze;
  5. azzerare su corso solo i riferimenti sync/date generati: catalog_sync_status, eventuali note operative, senza cancellare il corso catalogo;
  6. 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_revisionare e non cancellarla automaticamente.

Strategia proposta

Fase 1 - dry-run

Produrre una tabella di pulizia con:

  • target_system = safeops | woocommerce
  • target_table
  • target_id
  • safeops_tenant_key
  • safeops_corso_id
  • safeops_codice
  • action = delete | deactivate | clear_field | keep
  • reason
  • blocked_by
  • status = 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_corso invariato se si decide di non toccare partecipazioni.

Decisione consigliata

Non cancellare i corsi catalogo.

Procedere invece con:

  1. dry-run pulizia DEV;
  2. cancellazione controllata in DEV di date/edizioni/metadati;
  3. disattivazione/cancellazione variation WooCommerce solo dopo lista ordini;
  4. produzione solo dopo conferma esplicita.