Per iniziare
Questa applicazione genera il calendario turni mensile della Polizia Penitenziaria: assegna gli agenti alle postazioni rispettando i vincoli operativi e cercando la massima equità.
Il lavoro su ogni mese segue sempre lo stesso ciclo, nell'ordine:
- Preparazione — carichi i turni già decisi (ferie, malattie, servizi obbligatori).
- Ferie — rivedi e sistemi le ferie del mese.
- Generazione — il solver riempie le caselle vuote.
- Revisione — controlli il risultato nelle varie viste e correggi a mano se serve.
- Consolidamento — congeli il piano come definitivo.
- Esporta — scarichi il file Excel da stampare/distribuire.
Seleziona il mese dall'alto (scope Mese, frecce per mese precedente/successivo). Lo scope Anno apre l'analisi annuale.
1. Preparazione — Preimpostati
I preimpostati sono le caselle già decise prima della generazione: ferie (C), malattie/permessi (CS, CSL, PS…), turni obbligati. Il solver li rispetta e non li modifica.
- Importa Preimpostati: carica i preimpostati da un file Excel (foglio "2^sez"). Le righe con cognome non presente in anagrafica, o agenti fuori servizio nel periodo, vengono saltate e segnalate.
- Salva Preimpostati: registra sul database le modifiche fatte a mano sulla griglia e ne salva una "foto" (snapshot).
Approfondisci — perché salvare prima di generare
Salvare non è tecnicamente obbligatorio, ma è fortemente consigliato: "Genera Turni" legge comunque le caselle correnti, ma se non hai salvato lo snapshot resta quello vecchio. Di conseguenza "Cancella Generati" riporta all'ultimo snapshot salvato e perde le modifiche non salvate.
Dopo "Cancella Generati" i preimpostati restano, ma vengono ripuliti orario, postazione e ore: resta solo il codice (invariante dei "preimpostati puri").
2. Ferie
Dal pulsante Gestione Ferie sistemi le ferie del mese scegliendo tra due modalità:
- Rapida: editor veloce, clic diretti sulle caselle.
- Guidata: proposte con punteggio di equità.
Approfondisci — ferie sospese e annullamento
Le ferie sospese sono ferie tolte temporaneamente perché il sistema non riesce a garantire la copertura quel giorno: appaiono col bordo rosso nella griglia e nell'export Excel.
Annulla Modifiche Ferie riporta allo snapshot dei preimpostati salvato prima delle ultime modifiche (il pulsante è disabilitato se non c'è nulla da annullare). Sulla singola cella, Ripristina riporta al valore dell'ultimo "Salva Preimpostati", anche in una sessione successiva.
3. Generazione
- Genera Turni: avvia il solver, che assegna gli agenti agli slot di copertura rispettando i vincoli (vedi § Regole) e ottimizzando l'equità. Prima di calcolare, segnala eventuali conflitti di copertura (es. troppe ferie nello stesso giorno).
- Cancella Generati: rimuove i turni calcolati ma mantiene i preimpostati.
Approfondisci — verifiche prima di generare
Dal menu Output → Altro:
- Verifica Feasibility: esegue il solver in sola verifica (senza scrivere) per accertare che "Genera Turni" andrà a buon fine.
- Verifica Preimpostati: controlla i vincoli hard sui preimpostati correnti e segnala eventuali conflitti con un banner.
4. Consolidamento
Consolida Piano congela il mese come definitivo e ne salva una "foto" (snapshot) della configurazione. Da quel momento le modifiche alla configurazione (coppie, scenari, pesi) non impattano più il mese consolidato.
Dopo il consolidamento puoi comunque fare correzioni puntuali (override, spostamenti, conversione orari 6h↔8h) — vedi Operazioni puntuali. Infine Esporta Excel per il file da stampare/distribuire.
Vista Turni
La matrice principale agente × giorno con il macroturno di ciascuna casella (M mattina, 3 pomeriggio, 1 prima, S notte; suffisso F = Preposto). È la vista per la maggior parte delle modifiche a mano.
Si modifica con la barra dei pennelli a sinistra: scegli un codice (o la Gomma), poi clic su una casella o trascina su più caselle. Esc deseleziona il pennello.
Approfondisci — annullare e clic destro
Ctrl+Z (o il pulsante Annulla) ripristina le ultime modifiche; lo storico si svuota cambiando mese.
Il clic destro su una casella già corretta apre il menu "Annulla correzione" (annulla scambio, annulla spostamento, ripristina codice originale, annulla conversione orari): serve a tornare indietro su una correzione, non a farne di nuove. Le voci mostrate sono solo quelle realmente applicabili.
Vista Programmato Mensile Personale
Matrice agente × giorno che mostra il codice di ogni casella (M, 3, 1, S, R, C…), pensata come prospetto personale leggibile. Evidenzia le ferie sospese e le correzioni post-generazione.
Questa vista mostra i codici, non gli orari. Per gli orari di inizio/fine usa la vista Carpetta.
Vista Postazioni
Matrice postazione × giorno: ogni cella mostra il cognome dell'agente che copre quella postazione quel giorno. Serve a leggere la copertura reale e individuare gli slot scoperti.
Approfondisci — cosa indicano le celle
- Slot scoperti evidenziati (postazione obbligatoria senza agente).
- Distinzione tra codice preimpostato e generato.
- Bande colorate per gli scambi registrati.
- Scenario 6h/8h rilevato automaticamente dai turni del giorno, con legenda.
Da qui (clic destro su una cella) puoi anche spostare un agente su un'altra postazione.
Vista Carpetta (e Carpetta+)
Mostra un giorno alla volta (navigabile a schede), con coppie/postazioni, orari e agenti assegnati — vicina al formato di stampa. Carpetta+ è una variante sperimentale che affianca il codice del giorno prima e del giorno dopo.
È il punto da cui partono le correzioni di copertura: clic su uno slot scoperto per spostarci un agente.
Approfondisci — la cella "+" verde (conversione 6h↔8h)
La cella "+" verde tratteggiata appare su un macroturno extra disponibile in un altro scenario (es. il "3" quando la coppia è in 8h). Cliccandola apri "Aggiungi agente al macroturno": il sistema può poi proporti la conversione orari 6h↔8h della coppia per quel giorno (vedi Operazioni puntuali).
Vista Analisi
Riepilogo grafico del mese (grafici Chart.js) per controllare equità e copertura. Comprende:
- Distribuzione turni per agente (notti, mattine, prime, pomeriggi).
- Ore totali per agente, confrontate con la media.
- Domeniche lavorate per agente.
- Copertura giornaliera (agenti in servizio per giorno).
- Distribuzione per giorno della settimana e riepilogo assenze.
Viste Snapshot (sola lettura)
Le viste nel gruppo Snapshot sono fotografie congelate dello stato in momenti chiave, in sola lettura. Servono a confrontare lo stato attuale con i passaggi precedenti.
Approfondisci — i cinque snapshot
- Preimpostati — lo stato prima della generazione.
- Post modifica ferie — dopo l'applicazione delle ferie.
- Post generazione — il risultato del solver.
- Configurazione — coppie/scenari/parametri congelati al "Genera Turni".
- Pre-consolidamento — il piano dopo le correzioni manuali, prima di consolidare.
Operazioni puntuali
Correzioni mirate su singole caselle, utilizzabili anche dopo il consolidamento:
- Override cella: forza un codice diverso su una casella (dalla finestra di sostituzione cella).
- Sposta agente: muove un agente su una postazione/slot — dalla vista Carpetta (clic su slot scoperto) o Postazioni.
- Conversione orari 6h↔8h: riallinea al volo gli orari di una coppia in un singolo giorno quando cambia la disponibilità del personale. Parte dalla cella "+" verde in Carpetta; il sistema propone la conversione e attende conferma.
- Annullamenti: clic destro sulla cella corretta → "Annulla correzione" (scambio, spostamento, ripristino codice, conversione orari). In alternativa Ctrl+Z per le modifiche di pennello.
Le azioni proposte sono sempre filtrate in base a ciò che è realmente applicabile sulla casella selezionata.
Glossario
Riferimento rapido di codici e termini ricorrenti.
Macroturni e suffisso F
- M — Mattina (~06:00–14:00)
- 3 — Pomeriggio (~11:30–18:10)
- 1 — Prima/serale (~16:00–00:10)
- S — Notte
- Suffisso F (MF, 3F, 1F, SF) — lo stesso turno svolto come Preposto
- MA — Aule Scolastiche (mattina, solo Lun–Ven)
Riposi e assenze
- R riposo · RD riposo domenicale · RR riposo (variante)
- C congedo ordinario (ferie) · CS/CSL/PS… malattia/permessi
- NS non in servizio (fuori dal periodo di servizio dell'agente)
Termini
- Preimpostato — casella fissata dall'utente, non modificabile dal solver.
- Slot HARD — copertura obbligatoria; extra-risorse (SOFT) — copertura opzionale, riempita per ordine di priorità se ci sono agenti.
- Coppia di postazioni — due postazioni che operano insieme, con scenari orari 6h/8h.
- Ruoli — Preposto, Sezione, Preposto+Sezione (e variante Aule).
Problemi comuni
- "Genera Turni" fallisce / soluzione non trovata: usa Verifica Feasibility per la diagnosi. Cause tipiche: copertura non soddisfacibile o ferie troppo concentrate negli stessi giorni.
- Copertura scoperta: apri la vista Postazioni per vedere quali slot mancano; la vista Analisi aiuta a capire l'equilibrio complessivo.
- Una modifica alla configurazione non si riflette su un mese già consolidato: è voluto — il consolidamento congela la configurazione del mese.
- Ho perso modifiche dopo "Cancella Generati": probabilmente non avevi premuto "Salva Preimpostati"; il comando riporta all'ultimo snapshot salvato.
La logica dei vincoli (cosa il sistema rispetta) è in § Regole; i pesi delle regole preferenziali si regolano in ⚙ Configurazione.