Files
zentral/docs/development/devlog/2025-12-12-105500_safety_training_schedule.md

3.0 KiB

Implementazione Gestione Scadenzario Formazione Sicurezza

Obiettivo

Configurare il flusso per la gestione dello scadenzario della formazione sicurezza, accentrando dati e scadenze, abbandonando file Excel disconnessi.

Strategia

Mapping delle funzionalità sui moduli esistenti:

  1. Anagrafica Corsi -> Modulo Magazzino (Articolo)
  2. Anagrafica Soggetti -> Modulo Clienti (Cliente + nuova entità ClienteContatto)
  3. Gestione Attestati e Scadenze -> Nuovo Modulo Safety (o estensione Eventi/Qualità)
  4. Workflow Notifiche -> Human-in-the-loop tramite Dashboard dedicato.

Piano di Lavoro

1. Documentazione e Analisi

  • Creazione piano di lavoro (questo file).
  • Aggiornamento ZENTRAL.md.

2. Backend (.NET)

Domain Layer

  • Modifica Entity Articolo:
    • Aggiungere int? DurataValiditaAnni (Validità del corso).
    • Aggiungere bool IsCorsoFormazione (Flag identificativo).
  • Nuova Entity ClienteContatto:
    • Proprietà: Nome, Cognome, Email, Ruolo, Telefono, foreign key a Cliente.
    • Aggiornare Cliente con collection Contatti.
  • Nuova Entity TrainingRecord (Safety):
    • Proprietà: ClienteContattoId, ArticoloId (Corso), DataEsecuzione, DataScadenza (Calcolata), AttestatoUrl, Stato (Valid, Expiring, Expired).
    • Note e audit log.

Infrastructure / EF Core

  • Creare Migrazione EF per le nuove entità e modifiche.
  • Aggiornare ApplicationDbContext.

API Layer

  • Aggiornare ArticoliController: Gestione nuovi campi.
  • Aggiornare ClientiController: Gestione CRUD Contatti.
  • Nuovo TrainingController:
    • CRUD TrainingRecords.
    • Upload file attestato.
    • Endpoint GetExpiringTrainings per la dashboard (filtri per data, azienda).
    • Endpoint approve-notification: Utilizza il nuovo servizio IEmailSender per inviare le notifiche.

3. Frontend (React)

Modulo Safety (Nuova App safety)

  • Setup Modulo: Creare cartella src/frontend/src/apps/safety e configurare route.
  • Componenti:
    • SafetyDashboard: Widget con scadenze imminenti e scadute.
    • CourseRegistry: Tabella corsi (Articoli filtrati).
    • TrainingMatrix: Vista lavoratori x corsi o lista formazioni.
    • TrainingForm: Modale inserimento/modifica formazione (Caricamento file, calcolo automatico scadenza).

Integrazione Moduli Esistenti

  • Magazzino: Aggiungere campi Validità nel form Articolo.
  • Clienti: Aggiungere Tab "Contatti" nel dettaglio Cliente per gestire i lavoratori.

4. Workflow e Notifiche

  • Implementare logica "Human-in-the-loop": Liste "Da Inviare" nella Dashboard.
  • Integrazione con il Modulo Email Standard: Chiamata al servizio di invio email reale.

5. Verifica e Test

  • Test flusso completo: Creazione Corso -> Creazione Lavoratore -> Registrazione Formazione -> Verifica Scadenza -> Notifica.

Stato Attuale

  • Inizio analisi e setup.