OMOrario Maestro
← Torna all’appInstallazione

GUIDA COMPLETA

Manuale di Orario Maestro

Come raccogliere i dati del plesso, generare un orario scolastico coerente e intervenire quando alcuni elementi non possono essere collocati.

Scuola primariaVersione PHPAggiornato 04/09/2026
01

Come iniziare

Aprire Orario Maestro e creare un nuovo progetto dal riquadro Progetto orario. Ogni nuovo progetto parte dalla configurazione guidata. È consigliabile avere già disponibili l’elenco delle classi, i nomi delle insegnanti, il monte ore di ciascuna, le discipline assegnate e le esigenze personali.

Importante

Il calendario non è il punto di partenza: prima si completano tutte le domande del wizard, poi si genera l’orario.

Inserimento rapido da Excel

Il pulsante “Importa Excel” apre una procedura guidata e permette di scaricare il modello compilabile. Il progetto non viene modificato finché il file non supera i controlli e l’utente non conferma espressamente.

02

Gestire più progetti orario

  1. Creare: premere “+ Nuovo”, indicare un nome riconoscibile e completare il wizard.
  2. Cambiare: scegliere un progetto dal menu laterale. Quello aperto viene salvato prima del passaggio.
  3. Rinominare: usare il pulsante con la matita accanto al selettore.
  4. Eliminare: usare il pulsante × e confermare. L’eliminazione è definitiva.

Un progetto contiene autonomamente plesso, classi, insegnanti, discipline, ore, assegnazioni, vincoli e ultimo orario generato.

03

Le sei fasi della configurazione guidata

I nomi dei sei passaggi nella barra superiore sono pulsanti: si può passare direttamente da una fase all’altra in qualsiasi ordine. Prima del cambio, l’applicazione salva immediatamente i dati della pagina corrente; gli eventuali campi incompleti verranno segnalati nel riepilogo e prima della generazione.

1

Plesso e settimana

Inserire nome del plesso, ora di ingresso, durata delle unità, numero di palestre e laboratori e modalità dell’intervallo. Selezionare liberamente da zero a cinque giorni di rientro; se è previsto almeno un rientro, indicare anche inizio e durata della mensa e scegliere due oppure tre unità pomeridiane, uguali per tutti i giorni selezionati.

2

Classi

Aggiungere tutte le classi o sezioni con nomi brevi, per esempio 1A, 2A e 3B.

3

Insegnanti

Inserire nome, ore settimanali dovute nel plesso, tipologia, massimo numero di pomeriggi, disponibilità a più di una mensa e giornate libere o impegnate in altro plesso. La disponibilità a più mense parte sempre disattivata. Per il personale che svolge soltanto compresenze e mense scegliere “Organico di potenziamento”.

4

Discipline, ore, spazi e accorpamenti

Il programma calcola le unità disponibili usando i giorni di rientro selezionati. Se sono meno delle 30 ore curricolari, è valido sia il totale già adeguato alla griglia, sia il totale di 30 indicando la materia e il numero di unità da ridurre. Per ogni disciplina si indica inoltre se richiede una palestra, un laboratorio oppure nessuno spazio speciale; si scelgono poi i blocchi della stessa materia e gli eventuali gruppi di due o tre materie diverse.

5

Assegnazioni, vincoli e regole attive

Assegnare ogni disciplina a un’insegnante, inserire indisponibilità, fasce da evitare e divieti di mensa, quindi controllare le restrizioni generali. Tutte le regole partono selezionate ma possono essere disattivate singolarmente. Nelle tendine le insegnanti sono mostrate come “COGNOME NOME” e ordinate alfabeticamente per cognome, compresi i cognomi composti.

6

Riepilogo

Leggere controlli e avvisi. Alla domanda finale scegliere se rivedere una sezione oppure confermare e generare.

04

Regole applicate dal generatore

Ordine di priorità

Il modello matematico considera contemporaneamente tutte le insegnanti, ma assegna un costo maggiore alle soluzioni che disperdono il servizio delle figure più vincolate: scavalchi, part-time, Religione e Inglese/Lingua straniera. Nessuna docente viene comunque elaborata “per ultima” perdendo gli spazi occupati dalle precedenti.

  1. Priorità 1 — incompatibilità rigide attive. Indisponibilità, giornate libere, trasferimenti e giornate obbligatorie degli scavalchi, assenza di sovrapposizioni, disponibilità di palestre e laboratori, massimo due insegnanti per classe e ora, divieto di mensa per chi insegna Religione e massimo sette unità consecutive. Una regola selezionata non viene violata; una regola disattivata non partecipa né al calcolo né al controllo qualità.
  2. Priorità 2 — tutte le lezioni frontali. Il generatore colloca prima l’intero monte ore delle discipline. Una frontale non collocata resta riservata alla sua insegnante e non viene mai sostituita o nascosta con una compresenza.
  3. Priorità 2 bis — attività alternativa alla Religione. Quando configurata, è un obbligo sincronizzato con ogni ora di Religione. Se richiede una seconda docente, questa deve essere libera nella stessa fascia e l’attività concorre al suo monte ore.
  4. Priorità 3 — tutte le mense. Ogni classe deve avere la propria copertura. Se la capacità dichiarata è inferiore al fabbisogno, la proposta resta incompleta e indica quante abilitazioni a più mense o quante ore di personale esterno servono.
  5. Priorità 4 — tutto il monte ore delle insegnanti. Dopo frontali e mense, le ore contrattuali residue vengono distribuite globalmente come compresenze; una proposta con una docente sotto il proprio monte ore è incompleta.
  6. Priorità 5 — struttura didattica obbligatoria. Italiano e Matematica ogni giorno, accorpamenti richiesti, pomeriggio affidato a una sola insegnante per classe e, quando attivato, divieto assoluto di ore buche.
  7. Priorità 6 — qualità e preferenze. Eliminazione dei buchi, accorpamenti preferenziali, concentrazione degli scavalchi, Italiano e Matematica preferibilmente al mattino e paletti “Evita se possibile”.
Se due regole entrano in conflitto

Il motore non nasconde ore e non restituisce una falsa soluzione completa. Dimostra l’impossibilità e, seguendo l’ordine impostato, verifica quale regola rende nuovamente risolvibile il modello quando viene rimossa. L’app mostra il nome della regola coinvolta e lascia all’utente la decisione.

Regole parametriche del wizard

Nel passo “Assegnazioni e paletti” il riquadro Regole attive e priorità contiene quattordici caselle. Le frecce su e giù cambiano l’ordine: il numero 1 indica la priorità più alta e il 14 la più bassa. L’ordine viene salvato separatamente per ogni progetto ed è utilizzabile anche da smartphone. Le prime tredici regole sono selezionate per impostazione predefinita; la regola rigida “Non permettere nemmeno un’ora buca” parte invece disattivata nei nuovi progetti.

Come usa l’ordine il generatore

Lezioni frontali, mense e monte ore completo rimangono obblighi superiori e non dipendono dall’elenco. Le regole selezionate vengono applicate nel modello; l’ordine guida la diagnostica dei conflitti e la valutazione delle preferenze ottimizzabili. Indisponibilità e incompatibilità fisiche restano invalicabili.

Blocchi preferenziali delle discipline

Con “Accorpamenti delle discipline” attivo, ogni materia con almeno due unità viene inizialmente organizzata in blocchi da 2 o 3 ore. Se tutti i blocchi non sono compatibili con i vincoli superiori, il motore accetta unità isolate nell’ordine: Inglese/Lingua straniera, Educazione fisica, Storia, Matematica e Italiano. Le altre discipline sono protette prima di queste cinque. Con la relativa regola attiva, in ciascuna classe non possono comunque esserci più di tre ore della stessa disciplina nella medesima giornata.

  • Italiano e Matematica ogni giorno;
  • accorpamenti selezionati, sia delle ore della stessa disciplina sia tra due o tre discipline diverse;
  • massimo tre ore al giorno della stessa disciplina per ciascuna classe; le classi diverse non vengono sommate;
  • nella stessa classe e giornata, più ore della stessa disciplina devono essere consecutive e non possono essere separate da un’altra materia o dalla mensa;
  • unica insegnante per tutte le unità del pomeriggio della classe;
  • insegnanti di Religione escluse dalla mensa;
  • massimo sette unità consecutive di servizio;
  • servizio continuato fino al pomeriggio non prima della terza ora, oppure stacco di almeno tre ore;
  • rispetto del massimo numero di pomeriggi dichiarato per ogni docente;
  • divieto di giornata composta soltanto da compresenze per le docenti ordinarie;
  • giorni liberi, indisponibilità e paletti personali;
  • una sola mensa settimanale, salvo l’autorizzazione individuale a più mense;
  • riduzione dei buchi e preferenza per stacchi di almeno tre ore effettive;
  • non permettere nemmeno un’ora buca: opzione rigida, disattivata per default.
Attenzione quando si disattiva una regola

La disattivazione è intenzionale e vale soltanto per il progetto corrente. Per esempio, togliendo “Religione esclusa dalla mensa” quelle insegnanti diventano candidate; togliendo “Una sola mensa” non serve più la spunta individuale per assegnare la seconda mensa.

Come convivono le due regole sui buchi

“Evita buchi e spezzati brevi” è una preferenza morbida: se il buco non può essere eliminato, accetta uno stacco di almeno tre ore. “Non permettere nemmeno un’ora buca” è invece rigida e assorbe automaticamente la prima. Finché la regola rigida è attiva, quella morbida appare selezionata ma non modificabile. Disattivando la regola rigida, la scelta morbida ritorna al valore che aveva in precedenza.

Restano sempre obbligatori, perché definiscono la validità di base dell’orario: una sola lezione frontale per classe e fascia, nessuna docente in due luoghi contemporaneamente, nessuna palestra o laboratorio usato da più classi rispetto alla quantità disponibile, massimo due insegnanti nella stessa classe e ora, copertura di tutte le lezioni frontali, di tutte le mense e dell’intero monte ore dichiarato.

Struttura della settimana

  • Le lezioni si svolgono da lunedì a venerdì.
  • L’ora di ingresso viene scelta all’inizio del progetto, per esempio 08:10.
  • Gli orari di inizio e fine di ogni unità sono calcolati automaticamente dall’ingresso, dalle durate, dall’intervallo e dalla mensa.
  • L’ora di inizio della mensa è un vincolo rigido e viene richiesta all’avvio del progetto.
  • Se la mensa inizia prima della conclusione teorica delle cinque unità mattutine, viene accorciata esclusivamente la quinta unità.
  • La mensa non può iniziare prima o nello stesso momento dell’inizio della quinta unità.
  • Ogni mattina contiene cinque unità orarie.
  • Le unità possono durare 50, 55 o 60 minuti.
  • I rientri pomeridiani possono essere da zero a cinque. I giorni vengono selezionati liberamente; tutti i rientri scelti hanno lo stesso numero di unità, due oppure tre.
  • Il monte ore settimanale degli alunni è fissato a 30 ore.
  • Il numero di unità disponibili viene ricalcolato in base ai giorni selezionati. Se la griglia contiene meno delle 30 ore curricolari, il wizard indica quante unità devono essere ridotte.
  • Se nella stessa griglia le discipline totalizzano 30, per quella classe deve essere scelta la materia che compare con un’unità in meno.
  • Se non viene scelto alcun rientro, non vengono create né mense né fasce pomeridiane e i relativi campi non bloccano il passaggio successivo.
  • Ogni rientro comprende la mensa, impostabile da 70 a 90 minuti.
  • L’intervallo è dopo la terza ora e può essere aggiuntivo oppure compreso nell’ora dell’insegnante presente.

Classi e presenze

  • Ogni classe può avere una sola disciplina frontale nella stessa ora.
  • Nella stessa classe e ora possono esserci al massimo due insegnanti: una titolare e una in compresenza.
  • Un’insegnante non può trovarsi in due classi nello stesso momento.
  • Durante ogni mensa deve essere presente un’insegnante per ciascuna classe.
  • Tutte le mense devono essere coperte. Una mensa scoperta rende la proposta incompleta e viene mostrata nel controllo qualità con le possibili soluzioni.
  • Le insegnanti assegnate alla disciplina Religione non possono svolgere servizio di mensa.
  • Attività alternativa alla Religione. Nelle Assegnazioni, per ogni classe con Religione si può lasciare l’opzione disattivata oppure scegliere: attività alternativa con docente, studio assistito con docente, uscita anticipata/ingresso posticipato o suddivisione degli alunni tra altre classi.
  • Attività alternativa e studio assistito occupano una seconda docente esattamente nelle stesse fasce di Religione. Le unità valgono nel suo monte ore, rispettano indisponibilità, giornate libere, pomeriggi e massimo sette unità consecutive, e impediscono di aggiungere una terza presenza nella classe.
  • Uscita anticipata/ingresso posticipato non richiede una seconda docente, ma obbliga il motore a collocare Religione alla prima o all’ultima unità utile della giornata. La suddivisione tra altre classi viene annotata nell’orario senza consumare il monte ore di un’altra docente.
  • La scelta viene salvata automaticamente con il progetto. La docente dell’attività deve essere diversa da quella di Religione.
  • In ciascun rientro tutte le unità pomeridiane di una classe devono essere coperte dalla stessa unica insegnante. La mensa resta una fascia separata e può essere affidata a un’altra persona.
  • Nel pomeriggio non vengono collocate compresenze; la regola delle due presenze massime continua a valere per le ore mattutine.
  • Palestre e laboratori sono risorse condivise. In ogni fascia il numero di lezioni che richiedono lo stesso tipo di spazio non può superare la quantità dichiarata. Con una palestra è possibile una sola lezione contemporanea di Educazione fisica/motoria; con due palestre sono possibili due lezioni. Lo stesso criterio vale per i laboratori.
  • Educazione fisica è preimpostata su “Palestra”; Scienze e Informatica su “Laboratorio”. L’associazione è modificabile per qualsiasi disciplina nella fase 4 e vale anche per materie aggiunte successivamente.

Insegnanti e monte ore

  • Le ore settimanali indicate sono quelle dovute nel plesso, non necessariamente l’intera cattedra.
  • Lezioni frontali, mense e compresenze concorrono al conteggio settimanale.
  • Le compresenze non sono ore di disciplina.
  • Le ore frontali hanno precedenza assoluta sulle compresenze. Se una docente ha quattro ore nel plesso e quattro ore disciplinari assegnate, non riceve compresenze. Anche un’ora frontale temporaneamente non collocabile resta riservata e non libera spazio per una compresenza.
  • Organico di potenziamento. Le X ore indicate nel monte ore vengono collocate esclusivamente come compresenze e/o mense. Questa tipologia non compare nelle tendine di assegnazione delle discipline e non può ricevere lezioni frontali, neppure tramite modifica manuale.
  • Per l’organico di potenziamento è ammessa una giornata composta soltanto da compresenze, perché la compresenza costituisce la sua funzione specifica. Per tutte le altre tipologie resta vietata la giornata di sola compresenza.
  • Una compresenza non può essere l’unico servizio giornaliero di un’insegnante. Le compresenze vengono collocate soltanto nei giorni in cui la docente ha già almeno una lezione frontale o una mensa.
  • Se le ore contrattuali residue non possono essere collocate senza creare una giornata di sola compresenza, restano segnalate come ore mancanti e il sistema propone di spostarle, modificare le assegnazioni o rivedere il monte ore nel plesso.
  • Il generatore non assegna a un’insegnante più ore del monte ore indicato.
  • Il generatore deve anche assegnare tutto il monte ore indicato. Un carico inferiore al valore contrattuale rende la proposta incompleta; il controllo qualità evidenzia in rosso quante ore mancano.
  • Ogni insegnante può svolgere al massimo sette unità consecutive di servizio. Lezione, mensa e compresenza interrompono o proseguono la sequenza in base alla loro posizione nella griglia.
  • Chi prosegue con servizio continuato fino al pomeriggio non può iniziare prima della terza ora. La prima o la seconda ora sono ammesse soltanto se il servizio non è continuato e prima della ripresa esiste uno stacco reale di almeno tre unità di servizio. Questa regola resta vincolante anche quando si consentono le ore buche.
  • Per ogni insegnante si può indicare un massimo personale da zero a cinque pomeriggi; il limite effettivo non può naturalmente superare i rientri selezionati per il plesso.
  • “Disponibile a più di una mensa” permette alla stessa insegnante di coprire la mensa in più giorni della settimana. L’opzione è disattivata per impostazione predefinita; se resta disattivata, la docente può ricevere al massimo una mensa settimanale.
  • La mensa non conta come pomeriggio. La disponibilità a una o più mense è indipendente da “Max pomeriggi”: anche una docente impostata su “Nessuno” può coprire una mensa, se non ha altri divieti o indisponibilità.
  • Il limite “Max pomeriggi” comprende esclusivamente le unità didattiche o di servizio collocate dopo la mensa; non comprende la mensa stessa.
  • Le giornate libere di part-time e scavalchi sono indisponibilità rigide.
  • Trasferimenti tra plessi. Per ogni docente a scavalco si indica il plesso di provenienza o destinazione e il tempo minimo necessario per raggiungerlo. Questi dati sono salvati insieme al progetto.
  • Per ogni giorno si può richiedere la presenza obbligatoria in questo plesso, riservare l’intera giornata all’altro plesso oppure dividere la giornata scegliendo “mattina qui → pomeriggio altrove” o “mattina altrove → pomeriggio qui”. Le tre scelte sono alternative.
  • Una giornata intera nell’altro plesso blocca lezioni, compresenze e mensa in questa scuola. Una presenza obbligatoria qui richiede almeno un servizio effettivamente assegnato.
  • Ogni insegnante a scavalco può lavorare in più plessi. Aggiungere tutti gli altri plessi, indicando per ciascuno il tempo di viaggio da questo plesso. Per ogni giorno scegliere se lavora interamente qui, interamente in uno degli altri plessi oppure se si sposta durante la giornata verso uno specifico plesso.
  • Nelle giornate divise la mensa non viene attribuita alla docente in trasferimento. Il motore usa il tempo di viaggio del plesso selezionato per escludere le fasce troppo vicine al passaggio. L’opzione “Impedisci lezioni consecutive in plessi diversi”, attiva per impostazione predefinita, lascia almeno un’intera unità libera fra i due servizi, anche quando il viaggio dichiarato è più breve.
  • Le giornate segnate nella tabella principale come “altro plesso” vengono recuperate automaticamente come giornate intere obbligatorie nell’altra sede. Modificare la scheda dettagliata aggiorna anche quei pulsanti, senza perdere i dati precedenti.
  • Per gli scavalchi le ore vengono concentrate nel minor numero possibile di giornate compatibili con presenze obbligatorie, trasferimenti e monte ore.
  • Il personale esterno può essere inserito anche come “da nominare”, indicando soltanto le ore necessarie nel plesso.

Discipline e qualità didattica

  • Le ore richieste per ogni disciplina sono definite separatamente per ciascuna classe. Con una griglia da 30 unità devono totalizzare 30; con una griglia da 29 sono validi sia il totale già pari a 29 sia il totale di 30 con una disciplina ridotta.
  • Quando la griglia contiene meno di 30 unità, la materia scelta conserva il proprio monte ore curricolare nel riepilogo ma occupa nel calendario il numero di unità compatibile con la griglia. Se il totale è già adeguato, non viene applicata un’ulteriore riduzione.
  • Italiano e Matematica devono essere presenti in ogni classe tutti i giorni, dal lunedì al venerdì. Il generatore riserva prima una collocazione quotidiana per entrambe e soltanto dopo distribuisce le ore rimanenti.
  • Ogni classe deve quindi disporre di almeno cinque unità effettive di Italiano e cinque di Matematica. La materia ridotta non può scendere sotto questa soglia.
  • Prima della generazione viene controllato che l’insegnante assegnata a Italiano o Matematica sia disponibile almeno in una fascia di ciascun giorno. Le eventuali impossibilità vengono indicate con classe, disciplina e giornata.
  • Nel passo “Discipline” la colonna Ore proprie consecutive riguarda una singola materia. È preimpostata per Scienze, Arte e immagine e Informatica, ma la scelta resta modificabile.
  • Quando “Ore proprie consecutive” è attivo e la disciplina ha più di un’unità, tutte le sue ore vengono collocate nello stesso giorno e senza interruzioni. Il generatore colloca l’intero blocco oppure lo segnala come non soddisfatto, senza considerarlo valido se le ore sono sparse.
  • Un blocco della stessa materia può comprendere al massimo tre unità nella stessa classe e giornata. Le ore che l’insegnante svolge in altre classi non partecipano a questo conteggio.
  • Il riquadro Accorpamenti tra materie crea invece un blocco formato da discipline diverse. Si scelgono una prima e una seconda materia; la terza è facoltativa.
  • Per ogni classe il gruppo usa una singola unità di ciascuna materia scelta. Per esempio “Scienze + Informatica” occupa due ore consecutive; aggiungendo “Arte e immagine” il blocco occupa tre ore. Il generatore può scegliere l’ordine interno più adatto.
  • Le ore settimanali che non partecipano al gruppo vengono distribuite normalmente. Una disciplina può entrare in più gruppi soltanto se, in ogni classe, dispone di almeno tante unità quanti sono i gruppi che la utilizzano.
  • Quando una materia viene inserita in un gruppo con altre discipline, l’opzione “Ore proprie consecutive” viene disattivata per evitare due richieste strutturali in conflitto.
  • Italiano e Matematica sono inizialmente impostate per evitare il pomeriggio. È una preferenza forte: il generatore prova prima a non usarle nei rientri, ma può collocarle al pomeriggio quando è indispensabile per coprire tutte le classi e tutte le ore frontali.
  • Il generatore privilegia blocchi di due ore consecutive quando possibile.
  • In una singola classe possono essere svolte al massimo tre unità della medesima disciplina nella stessa giornata. Il limite riparte separatamente per ogni classe.
  • Il generatore evita i buchi nell’orario giornaliero delle insegnanti e penalizza gli spezzati, cioè i rientri in servizio dopo una o più unità libere.
  • Se tra due servizi resta un buco, il generatore prova prioritariamente a coprirlo con una compresenza, senza superare due insegnanti contemporanee nella classe.
  • Se lo spezzato è inevitabile, il generatore preferisce uno stacco di almeno tre ore effettive: il calcolo usa gli orari reali di fine e ripresa del servizio, includendo la durata della mensa. Uno stacco lungo consente all’insegnante di lasciare il plesso.
  • Quando uno spezzato non è eliminabile a causa degli altri vincoli, viene indicato nella sezione “Verifica e soluzioni” con insegnante, giorno e durata reale. Se l’avviso dice “stacco troppo breve”, significa che il tentativo di eliminarlo o portarlo a tre ore non è riuscito; il testo descrive sempre il risultato finale, non un’elaborazione ancora in corso.
  • Se viene attivata “Non permettere nemmeno un’ora buca”, non esistono più stacchi accettabili. La proposta con anche un solo buco viene rifiutata, non sostituisce l’orario precedente e il wizard indica insegnanti e giornate incompatibili. Il generatore prova prima a eliminare lo stacco o a coprirlo con una compresenza, senza sacrificare lezioni frontali, mense o monte ore.
  • Nella vista a livelli, una casella bianca tratteggiata indica una fascia esistente ma libera per quella docente. Una casella grigia con “Non previsto” indica invece che in quel giorno il plesso non ha mensa o rientro pomeridiano.
  • Gli altri vincoli vengono rispettati senza creare sovrapposizioni.

Vincoli personali

  • Non disponibile è un divieto rigido per giorno e fascia.
  • Evita se possibile è una preferenza: può essere usata soltanto se serve a completare l’orario.
  • Mai mensa esclude l’insegnante dalla sorveglianza della mensa nel giorno indicato o per tutta la settimana.
05

Generare l’orario

Prima di avviare il motore, il riepilogo esegue un controllo preventivo. Calcola quante ore servono per frontali e mense, confronta il monte ore complessivo con gli spazi disponibili, verifica per ogni insegnante le fasce utilizzabili, controlla matematicamente la capacità delle mense e cerca almeno una finestra per ciascun blocco disciplinare obbligatorio. Un problema certo blocca immediatamente la generazione e porta alla sezione da correggere; un avviso segnala invece una configurazione con poco margine senza impedire la ricerca.

Al termine del riepilogo scegliere “No, va bene: genera l’orario”. Nel passo precedente si indica il tempo massimo di ottimizzazione da 10 a 600 secondi; il valore predefinito è 90 secondi. Non è più un numero di tentativi casuali: entro quel tempo OR-Tools CP-SAT esplora sistematicamente l’albero delle soluzioni ed elimina interi rami matematicamente incompatibili.

Lezioni frontali, mense e monte ore di ogni insegnante vengono risolti contemporaneamente e sono obbligatori. Il motore non restituisce più un calendario dichiarato completo con ore mancanti. L’esito può essere: ottimale, quando è stata anche dimostrata l’assenza di una soluzione migliore; completo, quando tutti gli obblighi sono coperti ma il tempo è terminato prima della prova di ottimalità; impossibile, quando il modello dimostra che i vincoli attivi non possono convivere; oppure tempo esaurito, quando non ha ancora trovato una soluzione completa né una prova d’impossibilità.

Quando l’ottimo è stato dimostrato e resta tempo disponibile, il risolutore cerca fino a quattro calendari realmente diversi con lo stesso identico punteggio ottimale. Nella pagina Orario compare il confronto tra le alternative: ore buche, stacchi brevi, unità disciplinari isolate, preferenze “Evita” utilizzate, giornate complessive di servizio e numero di caselle diverse dalla soluzione attiva. Premendo “Usa questa soluzione” il calendario scelto diventa quello ufficiale del progetto e viene salvato immediatamente. Se il tempo termina prima della prova di ottimalità, non vengono presentate alternative come se fossero equivalenti.

Le restrizioni selezionate entrano nel modello matematico. In caso d’impossibilità il programma ripete una verifica diagnostica seguendo l’ordine di priorità impostato dall’utente e indica una regola che partecipa al conflitto. Per esempio può stabilire che la configurazione torna risolvibile disattivando “Non permettere nemmeno un’ora buca”. Questo non significa che la regola venga disattivata automaticamente: la decisione resta alla persona che prepara l’orario.

Il motore assegna una sola lezione frontale per classe e fascia, al massimo una compresenza, una sola attività contemporanea per insegnante e una copertura per ogni mensa. Rispetta inoltre ore frontali per disciplina, indisponibilità, giorni liberi, rientri, limiti individuali e vincoli manuali. Il vecchio generatore locale con scambi concatenati resta disponibile soltanto come fallback tecnico se Python o OR-Tools non possono essere avviati.

Installazione del motore e dei report

Il computer deve avere Python, OR-Tools e ReportLab. Dalla cartella del progetto eseguire solver\install.bat, oppure il comando python -m pip install -r solver/requirements.txt. Per PHP, Python, estensioni, verifiche e backup consultare il manuale completo d’installazione.

Un orario generato è una proposta

Prima dell’uso ufficiale deve essere controllato dalla persona responsabile del plesso, soprattutto per esigenze non inserite nell’app.

06

Leggere e consultare l’orario

  • Per classe: mostra disciplina, insegnante titolare e presenza in compresenza.
  • Per insegnante: mostra lezioni, classi, mense e compresenze della singola persona. Su computer l’insegnante si sceglie da una tendina compatta e l’intera settimana viene adattata alla larghezza e all’altezza della schermata, senza barre di scorrimento del calendario.
  • Vista a livelli: sovrappone un piano per ogni insegnante. Quella scelta viene portata in primo piano quasi a tutta area e mostra in modo leggibile mattino, mensa, pomeriggio, carico, buchi, compresenze e scavalchi.
  • Stampa: disponibile nel pannello Verifica.
  • Esporta PDF: prepara una pagina orizzontale per ogni classe e apre la finestra di stampa; scegliere “Salva come PDF” come destinazione.
  • Report finale di conformità PDF: nella sezione Verifica il pulsante “Scarica report di conformità PDF” produce direttamente un vero file PDF per la soluzione attiva. Quando sono disponibili più soluzioni ottimali, ogni scheda dispone inoltre del proprio pulsante “Report PDF”. Il documento identifica la soluzione, riepiloga lezioni, mense e monte ore, elenca l’esito di ogni regola attiva, riporta le regole disattivate, dettaglia il carico di ogni insegnante e conclude con le eventuali osservazioni del generatore.
  • Esporta Excel: genera un vero file .xlsx OpenXML compatibile con Microsoft Excel. Il foglio riepiloga i cinque giorni in verticale, usa due righe per classe per distinguere lezione e compresenza, include mensa, pomeriggi, orari, colori disciplinari e legenda delle insegnanti.
  • Esporta JSON: crea un backup portabile dell’intero progetto, comprensivo di configurazione, regole, assegnazioni, vincoli e orario attivo.
  • Importa JSON: controlla e ripristina un backup completo nel progetto corrente soltanto dopo un’anteprima e una conferma esplicita.
  • Modifica diretta per classe: nell’orario per classe, fare clic su una lezione o su una fascia vuota, scegliere disciplina e insegnante e premere “Salva e ricalcola”. La cella resta fissata e tutte le altre vengono rigenerate.
  • Spostamento nell’orario insegnanti: nella vista “Per maestra”, fare clic su una lezione frontale e scegliere la nuova posizione nel calendario settimanale. “Maestra libera” indica che la docente da spostare non ha servizio in quella fascia, anche se nella classe è già presente un’altra lezione: quest’ultima viene indicata chiaramente e sarà ricollocata durante il ricalcolo. “Maestra occupata” indica invece l’attività già svolta dalla docente e rende la fascia non selezionabile. Anche le indisponibilità e le ore già fissate sono disabilitate. Disciplina, classe e insegnante non cambiano.
  • Scambio tra discipline della stessa insegnante: nella vista “Per maestra”, fare clic su una lezione frontale e scegliere “Scambia con un’altra mia disciplina”. Sono proposte soltanto le altre discipline assegnate alla stessa docente nella stessa classe, anche in giorni diversi. Per esempio, un’ora di Italiano può essere scambiata con un’ora di Matematica. Lo scambio lascia invariati insegnante, classe e monte ore, fissa entrambe le posizioni e viene rifiutato se viola Italiano/Matematica quotidiani, il massimo giornaliero, la continuità o un accorpamento obbligatorio.
  • Collocazione di elementi mancanti: nel pannello “Verifica e soluzioni”, aprire “Collocazione manuale degli elementi mancanti” e premere “Colloca manualmente”. Per una frontale si sceglie giorno e ora; per il monte ore residuo si scelgono classe e fascia della compresenza; per una mensa si sceglie l’insegnante.
  • La collocazione viene controllata prima del salvataggio e mantenuta come vincolo durante il ricalcolo. Nello stesso pannello, “Rimuovi vincolo” restituisce al generatore le compresenze e le mense fissate manualmente.
  • Le celle fissate sono riconoscibili dall’etichetta “Fissata”. Con “Ripristina automatico” il vincolo manuale viene eliminato e l’intero orario viene nuovamente ottimizzato.
07

Verifica e proposte di soluzione

Il pannello Verifica riporta ore delle discipline, mense coperte, carico di ogni insegnante, massimo numero di persone presenti nella stessa classe e ora ed eventuali spezzati. Gli stacchi inferiori a tre ore effettive sono indicati come troppo brevi; quelli di almeno tre ore sono segnalati come spezzati inevitabili ma adeguati.

Quando qualcosa non è collocabile, il sistema propone azioni concrete, per esempio:

  • consentire eccezionalmente una disciplina al pomeriggio;
  • rimuovere o spostare un’indisponibilità;
  • cambiare l’insegnante assegnata alla disciplina;
  • consentire un secondo pomeriggio;
  • spostare una compresenza in un’altra ora;
  • correggere il monte ore dovuto nel plesso;
  • aggiungere personale esterno per il numero di ore mancanti.
08

Salvataggio, persistenza e riservatezza

  • Il salvataggio è automatico dopo ogni modifica e viene completato immediatamente a ogni passaggio del wizard, sia con “Continua” sia con “Indietro”.
  • Quando si riapre una fase dal riepilogo, tutte le risposte già inserite vengono conservate.
  • L’elenco dei progetti è conservato in data/projects.json.
  • Ogni progetto è salvato separatamente in data/projects/<identificativo>.json.
  • Il browser mantiene una copia locale di emergenza se il server PHP non risponde.
  • Le mappe di ore, riduzioni e assegnazioni vengono conservate come strutture nominative; se una vecchia versione le aveva trasformate in liste vuote, l’app tenta il recupero automatico dall’ultimo orario generato.
  • I salvataggi sul server vengono eseguiti in sequenza, così una richiesta precedente non può sovrascrivere una configurazione più recente.
  • Un vecchio salvataggio singolo viene migrato automaticamente e conservato come copia recuperabile.
  • I file con i dati scolastici sono esclusi da Git e non vengono pubblicati nel repository.
Backup consigliato

Usare periodicamente “Esporta → Copia JSON” e conservare il file in una posizione protetta. Per ripristinarlo usare “Importa → Da backup JSON”. Se due schede modificano contemporaneamente lo stesso progetto, prevale l’ultimo salvataggio.

08 bis

Importazione guidata da Excel

Usare il pulsante “Importa Excel” nella parte alta dell’applicazione. La finestra contiene il collegamento al modello ufficiale `.xlsx`, che è già predisposto con intestazioni, formati e menu di scelta.

  1. Compilare CLASSI con una riga per ogni classe o sezione.
  2. Compilare INSEGNANTI con Nome e Cognome, ore dovute nel plesso, tipo di contratto, massimo pomeriggi e disponibilità a più mense. Per gli scavalchi si possono indicare anche altro plesso e minuti di trasferimento.
  3. Compilare DISCIPLINE con ore predefinite, preferenza sul pomeriggio, eventuale accorpamento delle ore e risorsa richiesta.
  4. Usare ORE_CLASSI soltanto quando una classe ha un numero di ore diverso dal valore predefinito della disciplina. Se il foglio resta vuoto, tutte le classi ereditano le ore predefinite.
  5. Inserire in DISPONIBILITA una riga per ogni indisponibilità, preferenza “Evita”, divieto di mensa o giornata nell’altro plesso.
  6. Compilare ASSEGNAZIONI associando classe, disciplina e insegnante. I nomi devono coincidere con quelli presenti negli altri fogli.

Dopo il caricamento viene mostrata un’anteprima con il numero di elementi trovati. Duplicati, nomi non riconosciuti, ore fuori limite, fogli mancanti e file che non sono veri `.xlsx` impediscono la conferma e vengono indicati con la riga da correggere.

La conferma sostituisce soltanto i dati importabili: classi, insegnanti, discipline, ore, disponibilità e assegnazioni. Restano invece le impostazioni generali del plesso e le regole. L’orario precedente, le riduzioni e i fissaggi manuali vengono azzerati perché non sarebbero coerenti con la nuova configurazione. Al termine l’app riapre il passo Discipline per controllare i totali e scegliere l’eventuale materia ridotta.

Non rinominare fogli e colonne

Per evitare interpretazioni ambigue, utilizzare sempre il modello scaricato dall’app. Il caricamento accetta file fino a 8 MB e soltanto nel formato Excel `.xlsx`.

08 ter

Ripristino completo da JSON

Aprire “Importa → Da backup JSON” e scegliere un file precedentemente creato con “Esporta → Copia JSON”. Il file viene letto localmente e il progetto corrente non cambia durante il controllo.

  1. L’app verifica che siano presenti configurazione, classi, insegnanti, discipline, paletti, ore e assegnazioni.
  2. Identificativi mancanti o duplicati, sezioni non valide, file malformati e dimensioni superiori a 8 MB bloccano il ripristino.
  3. L’anteprima mostra scuola, quantità principali, presenza dell’orario generato e dimensione del backup.
  4. Soltanto il pulsante “Conferma ripristino” sostituisce l’intero contenuto del progetto corrente.
Sostituzione completa

Il ripristino JSON comprende anche regole, vincoli manuali ed eventuale orario generato. Gli altri progetti restano invariati. Prima di importare un vecchio backup è consigliabile esportare una copia dello stato corrente.

09

Problemi frequenti

Il sistema non colloca tutte le discipline

Controllare che la somma sia compatibile con le unità disponibili indicate nel riepilogo; se si parte da 30, scegliere la materia da ridurre quando richiesto. Verificare inoltre che l’insegnante assegnata abbia ore sufficienti e non abbia troppe indisponibilità.

Manca la copertura di una mensa

Verificare giornate libere, divieti di mensa e monte ore già esaurito. La mensa non conta come pomeriggio: per coprire entrambi i giorni basta attivare “Disponibile a più di una mensa”, senza modificare “Max pomeriggi”. Se necessario aggiungere personale esterno.

A un’insegnante mancano ore

Controllare che il monte ore riguardi soltanto questo plesso. Le ore restanti vengono cercate come compresenze, ma non possono creare una terza presenza nella stessa classe.

Un’insegnante ha un buco o uno spezzato

Rigenerare per provare una diversa combinazione. Il sistema tenta prima di eliminare il buco o coprirlo con una compresenza; normalmente, se non è possibile, cerca di lasciare almeno tre ore effettive di stacco. Attivando “Non permettere nemmeno un’ora buca”, qualunque stacco residuo rende invece l’orario incompleto ed è elencato in “Verifica e soluzioni”.

Le modifiche non risultano salvate

Controllare che Apache sia attivo e che la cartella data sia scrivibile da PHP. Lo stato in basso a sinistra indica se il salvataggio è sul server o soltanto nel browser.

Voglio provare una soluzione alternativa

Se il motore ha trovato più calendari ottimali, usare il pannello “Soluzioni equivalenti” sopra l’orario e confrontarne gli indicatori prima di premere “Usa questa soluzione”. Le alternative restano salvate nel progetto. Dopo una modifica manuale vengono ricalcolate, perché quelle precedenti non rispettano necessariamente il nuovo vincolo.

10

Procedura di lavoro consigliata

  1. Raccogliere i dati ufficiali e creare un progetto.
  2. Completare le sei fasi senza saltare le domande.
  3. Correggere gli avvisi del riepilogo, iniziando da ore e assegnazioni.
  4. Generare la prima proposta.
  5. Aprire Verifica e risolvere prima mense e sovrapposizioni, poi gli stacchi brevi e la qualità dei blocchi.
  6. Controllare le viste per classe e per insegnante; nella vista tridimensionale scegliere ogni insegnante dalla tendina e leggere il livello ingrandito.
  7. Esportare una copia JSON e stampare l’orario approvato.