> For the complete documentation index, see [llms.txt](https://sponta.gitbook.io/orario/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sponta.gitbook.io/orario/comprendere-orario/verifica.md).

# Verifica dei dati e della bozza

Un orario può essere impossibile da costruire oppure può avere una bozza che non rispetta ancora le richieste. Sono due situazioni diverse: la pagina **Verifica dati e vincoli** le presenta nei fogli **Dati** e **Bozza**.

## Dati: la configurazione prima della ricerca

Questo foglio esamina curricoli e blocchi, cattedre, calendari, disponibilità, presenze nei plessi, profili delle classi e vincoli rigidi. Le lezioni già collocate nella bozza non entrano in questi controlli.

I controlli cercano, fra le altre cose:

* ore e blocchi del curricolo incoerenti o incompatibili con il profilo;
* docenti senza capacità sufficiente rispetto a contratto, disponibilità, giorni di lavoro, trasferimenti e limiti rigidi;
* blocchi senza finestre consecutive utilizzabili, anche con compresenza;
* requisiti mattutini senza materie, blocchi idonei o giornate sufficienti;
* richieste che competono per un insieme troppo piccolo di posizioni.

Le incompatibilità rilevate bloccano l'avvio della generazione. Gli avvisi, come una cattedra da confermare o un controllo non concluso, sono distinti dagli errori. I controlli integrati non coprono ancora tutte le combinazioni delle Articolazioni: il rapporto lo segnala senza dichiarare impossibile un caso che non ha potuto verificare.

**Zero incompatibilità rilevate non è una prova di fattibilità.** Il risolutore considera congiuntamente le collocazioni e tutti i vincoli rigidi; può dimostrare un'impossibilità che questi controlli non hanno individuato. Il rapporto preventivo non viene automaticamente trasformato in una lista delle cause responsabili di quell'esito.

## Bozza: le lezioni presenti

Con almeno una lezione, questo foglio mostra le violazioni rigide della bozza attuale. Un requisito di presenza può risultare violato anche senza sovrapposizioni: per esempio, manca il blocco di Matematica nelle prime due ore. Su una bozza parziale può semplicemente trattarsi di lavoro da completare.

Con **zero lezioni**, il controllo della bozza è sospeso. La pagina mostra:

> Nessuna lezione presente: non c’è ancora una bozza da verificare.

Il contatore riporta un trattino. Non significa che sia stato verificato un orario valido: non c'è ancora un orario da valutare. I controlli del foglio Dati restano disponibili. Inserendo lezioni o conservando un risultato, la verifica della bozza riprende normalmente.

## Dashboard: conflitti e copertura

La dashboard applica lo stesso criterio alle violazioni dell'orario vuoto. Può comunque mostrare problemi indipendenti dalle collocazioni, come cattedre mancanti, docenti non abilitati alle cattedre, capienze o laboratori insufficienti. Queste segnalazioni riguardano la configurazione scolastica.

Il pannello precisa quando la bozza è vuota e quando restano segnalazioni sui dati. Senza altre segnalazioni, elenco e contatore hanno uno stato neutro. La copertura del curricolo continua correttamente a mostrare zero ore collocate rispetto alle ore richieste.

## Dopo una generazione senza risultato

Se la costruzione si ferma per incompatibilità senza produrre un orario, la bozza precedente resta invariata. Se era vuota, rimane vuota anche dopo **Chiudi**. Le eventuali violazioni di una bozza precedente non sono la diagnosi dell'impossibilità della nuova ricerca.

La verifica per **approvare e pubblicare** è un controllo distinto e completo: non viene alleggerita dalle regole di presentazione della bozza vuota. Il risolutore continua a dover soddisfare i requisiti di presenza.

## Riscontri nel repository

* [Rapporto di compatibilità](https://github.com/lsponta/orario/blob/3bf5b58/src/services/compatibilityService.js), [finestre e contesa](https://github.com/lsponta/orario/blob/3bf5b58/src/services/preflightDomainService.js), [capacità settimanale](https://github.com/lsponta/orario/blob/3bf5b58/src/services/teacherWeeklyCapacityService.js).
* [Elenco dei conflitti](https://github.com/lsponta/orario/blob/3bf5b58/src/timetable/conflictEngine.js), [dashboard](https://github.com/lsponta/orario/blob/3bf5b58/public/js/views/dashboard.js), [approvazione](https://github.com/lsponta/orario/blob/3bf5b58/src/services/scheduleApprovalService.js).
