66 lines
3.0 KiB
Markdown
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.
|