79 lines
4.0 KiB
Markdown
79 lines
4.0 KiB
Markdown
# Implementazione Modulo Formazione (Generale)
|
|
|
|
## Obiettivo
|
|
Creare un modulo generale per la gestione della formazione (Training), permettendo all'utente di definire corsi di diverso tipo (es. Sicurezza, Tecnici, Qualità, Soft Skills) in base alle esigenze del business. Il sistema gestirà scadenze, attestati e partecipanti in modo agnostico rispetto al tipo di corso.
|
|
|
|
## Strategia
|
|
Mapping delle funzionalità sui moduli esistenti:
|
|
1. **Anagrafica Corsi** -> Modulo **Magazzino** (`Articolo`)
|
|
- La radice della Categoria Merceologica sarà "Formazione".
|
|
- Le sottocategorie definiranno il tipo di corso (es. "Sicurezza", "IT").
|
|
2. **Anagrafica Soggetti** -> Modulo **Clienti** (`Cliente` + nuova entità `ClienteContatto`)
|
|
3. **Gestione Attestati e Scadenze** -> Nuovo Modulo **Training** (Formazione)
|
|
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
|
|
- [ ] **Refactoring Categorie (Warehouse)**:
|
|
- Implementare gestione **Gruppi Merceologici a 3 livelli** (Standardizzazione Classificazione).
|
|
- Utilizzare la categoria "Formazione" come root per identificare i corsi.
|
|
- [ ] **Modifica Entity `Articolo`**:
|
|
- Aggiungere gestione **Validità/Scadenza Standard** (es. `int? GiorniValidita`).
|
|
- Il campo sarà utilizzato per calcolare la data di scadenza del corso una volta erogato.
|
|
- [ ] **Nuova Entity `ClienteContatto`**:
|
|
- Proprietà: `Nome`, `Cognome`, `Email`, `Ruolo`, `Telefono`, foreign key a `Cliente`.
|
|
- Aggiornare `Cliente` con collection `Contatti`.
|
|
- [ ] **Nuova Entity `TrainingRecord`**:
|
|
- Rappresenta l'avvenuta formazione per un contatto.
|
|
- Proprietà: `ClienteContattoId`, `ArticoloId` (Corso), `DataEsecuzione`, `DataScadenza` (Calcolata), `AttestatoUrl`, `Stato` (Valid, Expiring, Expired), `Note`.
|
|
- Entità generica per qualsiasi tipo di corso.
|
|
|
|
#### Infrastructure / EF Core
|
|
- [ ] Creare Migrazione EF per le nuove entità e modifiche.
|
|
- [ ] Aggiornare `ApplicationDbContext`.
|
|
|
|
#### API Layer
|
|
- [ ] **Aggiornare `ArticoliController`**: Gestione nuovi campi (Validità, Categorie).
|
|
- [ ] **Gestione Classificazioni**: Implementare API per gestire la gerarchia (o livelli) delle categorie merceologiche.
|
|
- [ ] **Aggiornare `ClientiController`**: Gestione CRUD Contatti.
|
|
- [ ] **Nuovo `TrainingController`**:
|
|
- CRUD TrainingRecords.
|
|
- Upload file attestato.
|
|
- Endpoint `GetExpiringTrainings` per la dashboard (filtri per data, azienda, categoria corso).
|
|
- Endpoint `approve-notification`: Invio email notifiche scadenze.
|
|
|
|
### 3. Frontend (React)
|
|
#### Modulo Training (Nuova App `training`)
|
|
- [ ] **Setup Modulo**: Creare cartella `src/frontend/src/apps/training` e configurare route.
|
|
- [ ] **Componenti**:
|
|
- `TrainingDashboard`: Widget con scadenze imminenti e scadute, grafici per tipologia corso.
|
|
- `CourseRegistry`: Tabella corsi (Articoli filtrati per categoria "Formazione"). Permette di creare nuovi corsi e gestire le sottocategorie (Tipi di corso).
|
|
- `TrainingMatrix`: Vista partecipanti x corsi o lista formazioni.
|
|
- `TrainingForm`: Modale inserimento/modifica formazione (Caricamento file, calcolo automatico scadenza basato sul corso).
|
|
|
|
#### Integrazione Moduli Esistenti
|
|
- [ ] **Magazzino**: Gestione UI per Classificazioni a 3 livelli (Gruppo/Famiglia).
|
|
- [ ] **Magazzino**: Aggiungere campi Validità/Scadenza nel form Articolo.
|
|
- [ ] **Clienti**: Aggiungere Tab "Contatti" nel dettaglio Cliente per gestire i lavoratori/partecipanti.
|
|
|
|
### 4. Workflow e Notifiche
|
|
- [ ] Implementare logica "Human-in-the-loop": Liste "Da Inviare" nella Dashboard.
|
|
- [ ] Integrazione con il Modulo Email per invio solleciti scadenze.
|
|
|
|
### 5. Verifica e Test
|
|
- [ ] Test flusso completo:
|
|
1. Creazione "Tipo Corso" (Sottocategoria).
|
|
2. Creazione Corso con validità.
|
|
3. Creazione Contatto.
|
|
4. Registrazione Formazione.
|
|
5. Verifica Scadenza e Notifica.
|
|
|
|
## Stato Attuale
|
|
- Inizio analisi e setup.
|