🔗 Apri nel BackOffice​
🎯 Cosa fa​
Definisce la struttura stabile dei corsi formativi: categorie
tematiche, argomenti formativi (topic) di alto livello (es.
"Antincendio", "Primo soccorso"), varianti normative (la
declinazione di un topic in funzione di livello di rischio / CCNL /
base-aggiornamento) e i corsi veri e propri (un'offerta
commerciale per uno specifico organizer e una specifica variante).
Questa è la "parte statica" del modulo Formazione: ciò che si offre,
indipendentemente da quando e dove viene erogato.
🕒 Quando usarlo​
- Aggiungere un nuovo corso al catalogo.
- Creare o modificare una categoria di corsi.
- Definire un nuovo topic formativo (es. "Lavori in quota").
- Aggiungere una variante normativa a un topic esistente (es.
"Antincendio R.A. — aggiornamento").
- Configurare il colore con cui un topic viene mostrato nel
calendario.
- Ritirare un corso dal catalogo quando non piĂą valido.
🧩 Concetti​
- Categoria — tassonomia piatta (es. "Sicurezza", "Sanità ").
- Topic (
trainingTopic) — la formazione di alto livello (es.
"Antincendio"). Porta i metadati normativi macro: requireUpdates,
fullRetrainingYears, ats, e il colore mostrato nel calendario.
- Variante (
trainingVariant) — declinazione concreta di un
topic. Una variante combina topic Ă— livello di rischio Ă— CCNL Ă—
flag base/aggiornamento. Es. "Antincendio Rischio Alto — Base",
"Antincendio Rischio Alto — Aggiornamento".
- Corso (
course) — l'offerta del singolo organizer per una
specifica variante. Stesso topic+variante possono esistere come
piĂą corsi se organizer diversi.
- Argomento di dettaglio (
trainingArgument) — voce
granulare del programma effettivo (es. "Estintori e idranti",
"Esercitazione pratica"). Usato in
trainingSessionsCoursesArguments per registrare cosa è stato
trattato nella sessione.
Il modello "lezione atomica con propedeuticità " è stato
rimosso dal redesign del 2026-05-08: la durata e la
propedeuticitĂ vivono ora sulla variante normativa
(minimumHours, validitySpan) e gli argomenti effettivamente
erogati sono registrati per ciascun corso erogato dentro la
sessione.
👣 Passi​
Creare una categoria​
- Apri il menu Formazione → Categorie.
- Crea nuova categoria.
- Inserisci il Nome (es. "Sicurezza", "SanitĂ ").
- Salva.
- Apri il menu Formazione → Argomenti formativi.
- Crea nuovo topic.
- Compila:
- Codice identificativo (es.
ANT, PS).
- Nome (es. "Antincendio").
- Descrizione (libera).
- Categoria di appartenenza.
- Rischio coperto (opzionale).
- Richiede aggiornamenti — flag normativo.
- Normato — default sì. Se no, la durata è solo consigliata.
- Anni per riformazione completa (oltre questo intervallo
non basta l'aggiornamento).
- Accreditato ATS — flag.
- Colore (hex, es.
#e53935). Mostrato nel calendario
per gli appuntamenti delle sessioni di questo topic. Lascia
vuoto per il colore neutro.
- Salva.
Creare una variante normativa​
- Apri il menu Formazione → Varianti formative.
- Crea nuova variante.
- Compila:
- Topic di riferimento.
- Codice (es.
ANT-A-BASE).
- Nome (es. "Antincendio Rischio Alto — Base").
- Descrizione (libera).
- Livello di rischio (opzionale: NULL = non dipende dal
livello).
- CCNL (opzionale: NULL = applicabile a tutti i CCNL).
- Aggiornamento — flag: variante "base" (no) o
"aggiornamento" (sì).
- Ore minime richieste dalla norma.
- Durata di validitĂ in mesi.
- Richiede aula attrezzata — flag: se acceso, solo le aule
listate in
locationsTrainingVariants sono utilizzabili per
la sessione (es. prove pratiche).
- Salva.
Creare un corso​
- Apri il menu Formazione → Corsi.
- Crea nuovo corso.
- Compila:
- Codice (identificativo breve stabile, es.
ANT-A-BASE-3SD).
- Nome completo.
- Descrizione (opzionale).
- Organizzatore (l'ente che eroga il corso).
- Variante normativa (vincolo di legge applicabile).
- Numero massimo partecipanti (se previsto dalla normativa).
- Soglia istruttore aggiuntivo (oltre N partecipanti serve
un secondo docente).
- In catalogo — flag: il corso è offerto pubblicamente.
- E-learning — flag: erogato in modalità asincrona online.
- Prezzo a iscritto — listino in euro (0 se gratuito; lo
sconto convenzione si applica in fase di stima costi e
fattura).
- Salva.
Aggiungere argomenti di dettaglio​
- Apri il menu Formazione → Argomenti di dettaglio.
- Crea nuovo argomento.
- Compila:
- Etichetta (es. "Esercitazione pratica").
- Descrizione.
- Rischio (opzionale).
- Salva.
Gli argomenti di dettaglio diventano disponibili come voci da
selezionare in fase di sessione: il sistema registra cosa è stato
effettivamente trattato per ciascun corso erogato nella giornata
(tabella trainingSessionsCoursesArguments).
🗂️ Campi chiave​
Categoria​
| Campo | Obbligatorio | Note |
|---|
| Nome | Sì | Testo libero. |
| Campo | Obbligatorio | Note |
|---|
| Codice | Sì | Stringa breve. |
| Nome | Sì | Descrizione completa. |
| Categoria | Sì | FK. |
| Rischio coperto | No | FK opzionale verso job.risks. |
| Richiede aggiornamenti | Sì | Flag normativo. |
| Normato | No | Default: sì. |
| Anni riformazione completa | No | Oltre = serve corso base, non basta aggiornamento. |
| ATS | No | Default: no. |
| Colore | No | Hex (es. #e53935). Usato dal calendario. |
Variante normativa​
| Campo | Obbligatorio | Note |
|---|
| Topic | Sì | FK. |
| Codice | No | |
| Nome | No | |
| Descrizione | No | |
| Livello di rischio | No | NULL = non dipende dal livello. |
| CCNL | No | NULL = applicabile a tutti i CCNL. |
| Aggiornamento | Sì | Default: no (base). |
| Ore minime | No | Durata minima normativa. |
| ValiditĂ (mesi) | No | Periodo di validitĂ dell'attestato. |
| Richiede aula attrezzata | Sì | Default: no. |
| Campo | Obbligatorio | Note |
|---|
| Codice | Sì | Identificativo breve, stabile. |
| Nome | Sì | Descrizione completa. |
| Organizzatore | Sì | Ente erogatore. |
| Variante normativa | Sì | Riferimento al decreto applicabile. |
| Descrizione | No | Testo libero. |
| Max partecipanti | No | Limite normativo. |
| Soglia istruttore aggiuntivo | No | Oltre N partecipanti serve un secondo docente. |
| In catalogo | No | Default: sì. |
| E-learning | No | Default: no. |
| Prezzo a iscritto | Sì | Default 0 (corso gratuito). In euro. Lo sconto convenzione si applica in fase di stima costi e fattura. |
| Attivo | No | Default: sì. Per ritirare un corso dal catalogo. |
Argomento di dettaglio​
| Campo | Obbligatorio | Note |
|---|
| Etichetta | Sì | Testo libero. |
| Descrizione | Sì | Testo libero. |
| Rischio | No | FK opzionale verso job.risks. |
⚡ Casi particolari​
- Ritirare un corso dal catalogo. Deseleziona il flag Attivo
o In catalogo. Le sessioni giĂ pianificate restano valide per
lo storico.
- PiĂą corsi per la stessa variante. Organizzatori diversi
possono offrire la stessa variante normativa: si creano corsi
distinti (stesso
trainingVariantId, organizerSlug differenti).
Il prezzo a iscritto, la soglia istruttore, il flag e-learning
sono per-corso.
- Variante senza CCNL o senza livello di rischio. Lasciali a
NULL quando la variante è universale; il vincolo univocitĂ
consente al piĂą una variante "base / aggiornamento" per ogni
combinazione (topic Ă— riskLevel Ă— CCNL Ă— isUpdate).
- Aula attrezzata. Se la variante ha
requiresEquippedRoom = 1,
in pianificazione potrai scegliere solo le aule presenti nella
whitelist locationsTrainingVariants. Altrimenti tutte le aule
sono ammesse.
- Corso gratuito. Lascia il prezzo a 0. Il riepilogo costi
della pianificazione mostrerà 0,00 € sulle iscrizioni e le
convenzioni non avranno effetto.
- Soglia istruttore aggiuntivo. Se in una sessione il numero di
partecipanti supera la soglia del corso, il sistema segnala il
conflitto
teacher_threshold come warning (non bloccante) via
SessionPlanner.DetectConflictsAsync.
⚠️ Domande aperte​
🔗 Vedi anche​