> 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/progetto.md).

# Il progetto in breve

Orario aiuta a costruire e gestire l'orario settimanale di un istituto con più plessi. Il problema consiste nel collocare gli insegnamenti richiesti dalle classi rispettando contemporaneamente disponibilità dei docenti, calendari, risorse e regole organizzative.

Una casella libera nella griglia non basta: il docente potrebbe essere in un altro plesso, una classe potrebbe partecipare a una lezione condivisa oppure la materia potrebbe richiedere due periodi consecutivi. L'applicazione mette queste relazioni a disposizione sia della ricerca automatica sia di chi interviene manualmente.

## Chi lo usa

L'area di lavoro richiede un account e distingue i ruoli `admin` ed `editor`. Le operazioni più incisive, tra cui l'avvio della generazione e l'approvazione per la pubblicazione, richiedono il ruolo amministrativo. I controlli sono applicati sul server: la disponibilità di un pulsante non sostituisce l'autorizzazione dell'operazione.

La consultazione dell'orario pubblicato è una superficie distinta e richiede lo stesso accesso dell'applicazione. Chi la apre vede la fotografia approvata, mentre il gruppo di lavoro può continuare a modificare la bozza.

## Tre attività che vanno tenute separate

| Attività                | Domanda                                           | Risultato                                               |
| ----------------------- | ------------------------------------------------- | ------------------------------------------------------- |
| Descrivere la scuola    | Che cosa va insegnato, a chi e con quali risorse? | Anagrafiche, curricoli, cattedre, calendari e vincoli   |
| Costruire una soluzione | Quando possono svolgersi le lezioni?              | Una bozza, completa o ancora da correggere              |
| Approvare una soluzione | Questa bozza può diventare l'orario consultabile? | Una pubblicazione verificata e conservata nello storico |

Il generatore colloca le attività sulla base delle cattedre confermate. L'assegnazione del docente a un insegnamento rimane una decisione esplicita: le proposte di cattedra devono essere confermate per diventare operative.

## Completo, valido e soddisfacente

Sono tre proprietà diverse. Un orario è **completo** quando copre quanto richiesto; è **valido rispetto alle regole rigide** quando non viola le condizioni inderogabili; è migliore secondo le **preferenze** quando riduce gli inconvenienti misurati dai vincoli flessibili.

Per esempio, coprire tutte le ore di una classe non basta se un docente ha due lezioni incompatibili nello stesso periodo. Viceversa, una bozza può rispettare i vincoli rigidi ma lasciare ore da collocare. Una soluzione completa e valida può ancora contenere buche o altre preferenze insoddisfatte.

La ricerca ha un tempo assegnato. Un arresto per tempo esaurito non dimostra che il problema sia impossibile, né che il miglior risultato trovato sia ottimo. Le metriche e il motivo di arresto vanno letti insieme.

## Cosa comprende il progetto

L'applicazione comprende la configurazione dei dati scolastici, la verifica di compatibilità, la generazione e il miglioramento della bozza, le correzioni manuali e assistite, le versioni e la pubblicazione. Il workbook Excel permette di trasferire dati attraverso un formato strutturato. La diagnosi AI è un'area separata, con configurazione propria, e non coincide con il motore di generazione.

La guida descrive il codice versionato; non certifica che un'istanza in produzione esegua lo stesso commit o usi gli stessi dati. Il progetto è gestito come beta: procedure e limiti vanno letti alla luce di questo stato.

## Prossima lettura

Passa al [dominio scolastico](/orario/comprendere-orario/dominio.md) per comprendere gli oggetti che il generatore deve coordinare, oppure alla [mappa dell'architettura](/orario/comprendere-orario/architettura.md) per orientarti nel codice.

## Riscontri nel repository

* [Composizione del server](https://github.com/lsponta/orario/blob/3bf5b58/src/server.js) e [operazioni sull'orario](https://github.com/lsponta/orario/blob/3bf5b58/src/routes/timetable.js).
* [Cattedre usate dal generatore](https://github.com/lsponta/orario/blob/3bf5b58/src/timetable/solver/CattedreBuilder.js).
* [Consultazione della pubblicazione](https://github.com/lsponta/orario/blob/3bf5b58/src/services/publicScheduleService.js).

Per data e criteri della revisione, vedi [Come leggere questa guida](/orario/riferimenti-della-guida/come-leggere.md).
