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

66 lines
3.0 KiB
Markdown

# 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.