docs: Add devlogs for safety training and communications modules, and update the main development status index.
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# 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.
|
||||
@@ -0,0 +1,51 @@
|
||||
# Implementazione Modulo Comunicazioni (Ex Email Standard)
|
||||
|
||||
## Obiettivo
|
||||
Implementare il modulo **Comunicazioni** (`communications`), inizialmente focalizzato sulla gestione centralizzata dell'invio email (SMTP).
|
||||
Questo modulo servirà da fondamento per tutte le comunicazioni in uscita (e in futuro interne) del gestionale.
|
||||
|
||||
## Strategia
|
||||
Il modulo gestirà sia l'infrastruttura tecnica (Service Layer per invio mail) sia l'interfaccia utente per la configurazione e il monitoraggio (Log).
|
||||
Sarà allineato alla visione del modulo "Comunicazioni" (Gestione invio mail, chat interna, ecc.).
|
||||
|
||||
## Piano di Lavoro
|
||||
|
||||
### 1. Documentazione
|
||||
- [ ] Aggiornamento piano di lavoro (questo file).
|
||||
- [ ] Aggiornamento `ZENTRAL.md`.
|
||||
|
||||
### 2. Backend (.NET)
|
||||
#### Domain Layer (`Zentral.Domain`)
|
||||
- [ ] **Interfaccia `IEmailSender`**: Contratto standard per l'invio.
|
||||
- [ ] **Entities (Namespace `Communications`)**:
|
||||
- `EmailLog`: Storico invii (`Id`, `Data`, `Mittente`, `Destinatario`, `Oggetto`, `Stato`, `Errore`).
|
||||
- `EmailTemplate` (Opzionale Fase 1): Per standardizzare il layout delle mail.
|
||||
|
||||
#### Infrastructure Layer (`Zentral.Infrastructure`)
|
||||
- [ ] **Implementazione `SmtpEmailSender`**:
|
||||
- Logica di invio tramite MailKit.
|
||||
- Integrazione con `Configurazione` per leggere le credenziali SMTP a runtime.
|
||||
- Salvataggio automatico del log in `EmailLog`.
|
||||
|
||||
#### API Layer (`Zentral.API`)
|
||||
- [ ] **Controller `CommunicationsController`**:
|
||||
- Endpoint per test invio.
|
||||
- Endpoint per consultazione Logs.
|
||||
- Endpoint per salvataggio Configurazione SMTP.
|
||||
|
||||
### 3. Frontend (React)
|
||||
#### Modulo `communications` (`src/apps/communications`)
|
||||
- [ ] **Setup App**: Creazione struttura standard modulo.
|
||||
- [ ] **Settings Page**:
|
||||
- Form per configurazione SMTP (Host, Port, User, Pass, SSL).
|
||||
- Pulsante "Test Connessione".
|
||||
- [ ] **Logs Page**:
|
||||
- Tabella visualizzazione storico email inviate con stato (Successo/Errore).
|
||||
|
||||
## Integrazione
|
||||
- Il servizio `IEmailSender` sarà iniettato negli altri moduli (es. Safety) per l'invio delle notifiche.
|
||||
|
||||
## Verifica
|
||||
- [ ] Configurazione SMTP (es. Mailtrap).
|
||||
- [ ] Test invio mail da interfaccia.
|
||||
- [ ] Verifica scrittura Log su DB.
|
||||
Reference in New Issue
Block a user