5.0 KiB
5.0 KiB
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:
- Anagrafica Corsi -> Modulo Magazzino (
Articolo)- Viene introdotta una Classificazione Specifica tramite property
Tipo(Standard,Corso,Servizio). - I Corsi saranno
ArticoloconTipo = Corso. - La
Categoria(Merceologica) sarà usata per il raggruppamento (es. "Sicurezza", "IT"). - Il campo
GiorniValiditagestirà la durata della validità dell'attestato.
- Viene introdotta una Classificazione Specifica tramite property
- Anagrafica Soggetti -> Modulo Clienti (
Cliente+ nuova entitàClienteContatto) - Gestione Attestati e Scadenze -> Nuovo Modulo Training (Formazione)
- 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.
- Aggiungere gestione Validità/Scadenza Standard (es.
- Nuova Entity
ClienteContatto:- Proprietà:
Nome,Cognome,Email,Ruolo,Telefono, foreign key aCliente. - Aggiornare
Clientecon collectionContatti.
- Proprietà:
- 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
GetExpiringTrainingsper 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/traininge 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). (Implementato selezione sottocategorie in RegistryPage)
- Magazzino: Aggiungere campi Validità/Scadenza nel form Articolo.
- Clienti: Aggiungere Tab "Contatti" nel dettaglio Cliente per gestire i lavoratori/partecipanti.
- UI: Aggiungere "Training" a
Sidebar.tsxeSearchBar.tsx.
4. Workflow e Notifiche
- Implementare logica "Human-in-the-loop": Liste "Da Inviare" nella Dashboard. (Aggiunto pulsante invio notifica)
- Integrazione con il Modulo Email per invio solleciti scadenze.
5. Verifica e Test
- Test flusso completo:
- Creazione "Tipo Corso" (Sottocategoria).
- Creazione Corso con validità.
- Creazione Contatto.
- Registrazione Formazione.
- Verifica Scadenza e Notifica.
Stato Attuale
- Implementazione Core (Backend/Frontend) completata.
- Integrazione Modulo Comunicazioni completata (Controllo attivazione app + invio email).
- 2025-12-12-174800_rimosse_tab_interne_modulo_formazione: Rimosse le tab interne (Dashboard, Registry, Matrix) dal layout del modulo Formazione in quanto ridondanti rispetto alla navigazione principale.
- 2025-12-12-185000_integrazione_comunicazioni_formazione: Implementata integrazione formale con modulo Comunicazioni (Check AppService + logging).
- 2025-12-12-190500_fix_seed_db: Risolto bug mancata creazione categoria "Formazione" (TRAIN) nel seed del database per database esistenti.