# Occorrenze

> La cronologia duratura di ogni fronte di occorrenza, osservato dal giudice di una prova o dal sorvegliante Always fuori prova, con la condizione congelata che sta dietro a ciascuno.

La scheda Occorrenze di [Eventi](events) (`/events?view=occurrences`) è la cronologia duratura di
ciò che hanno fatto gli oggetti sotto prova: una riga per **fronte di occorrenza**, che l'abbia
osservato il giudice di una prova o il sorvegliante **Sempre** fuori prova. Vederla richiede
**Visualizzare gli eventi**; esportare richiede **Esportare/importare gli storici**. Le occorrenze
si definiscono per modello sotto
[Process > Allestimento > Occorrenze](process-occurrences); questa scheda ne legge lo storico e non cambia
nulla.

Segue la condotta comune alle tre cronologie descritta su
[Eventi](events#how-the-three-timelines-behave): 500 righe per pagina con un impaginatore sotto, un
periodo, una ricerca ritardata, l'aggiornamento in tempo reale, un solo pannello di dettaglio,
l'esportazione in CSV e JSON dell'intero periodo.

## Che cos'è una riga {#what-one-row-is}

Un'occorrenza è una condizione booleana sui canali di un modello, con un ritardo di attivazione e un
ritardo di disattivazione. Una riga è una delle quattro transizioni di una **sessione di
osservazione**:

| Transizione | Significato |
| --- | --- |
| Attivata | La condizione è salita e si è mantenuta per il ritardo di attivazione. |
| Rientrata | La condizione è caduta e si è mantenuta per il ritardo di disattivazione. |
| Non disponibile | Uno o più canali richiamati dalla condizione hanno smesso di consegnare un valore. Il giudice tiene la sua ultima condizione confermata e non inventa mai un rientro. |
| Ripristinata | Ogni canale richiamato consegna di nuovo; la condizione è valutata da capo e il suo ritardo riparte. |

Ogni riga dice anche in quale **ambito** è stata osservata e perché la sua sessione è cominciata:

| Campo | Valori | Significato |
| --- | --- | --- |
| Ambito | **Prova**, **Fuori prova** | Prova: il giudice proprio di una prova, armato dalla procedura; il fronte è scritto anche nel file di quella prova. Fuori prova: il sorvegliante Always che legge i collegamenti dell'unità fra una prova e l'altra. |
| Motivo | **Esecuzione avviata**, **Esecuzione ripresa**, **Sorveglianza avviata**, **Osservazione fuori esecuzione ripresa**, **Definizione modificata** | Perché è cominciata una nuova sessione di osservazione: una prova è partita; una prova è stata ripresa dopo il riavvio dell'applicazione; il sorvegliante Always è partito per questa occorrenza e questa unità; l'unità è tornata all'osservazione fuori prova dopo una prova; oppure la condizione, i ritardi, i canali richiamati, lo stato di abilitazione o il modo di armamento sono stati modificati. |

Una sessione nuova comincia dal nulla: nessuno stato di condizione, di disponibilità o di
antirimbalzo attraversa un intervallo non osservato, quindi una condizione già vera può produrre
un'altra **Attivata** quando parte una prova o quando l'applicazione ritorna, e in questa cronologia
non c'è alcuna riga sintetica di "sessione iniziata". Il file proprio della prova registra il
confine della sessione anche quando non segue alcuna transizione; Storici e rapporti lo usano per
classificare come Interrotta un'attivazione aperta più vecchia. Quel segno resta fuori da questa
cronologia e non solleva alcuna notifica. Le modifiche di sola visualizzazione (nome, messaggio,
gravità) mantengono la sessione e cambiano solo le istantanee successive.

## Ricerca e filtro {#search-and-filter}

| Comando | Valori | Che cosa fa |
| --- | --- | --- |
| Ricerca | Testo segnaposto "Cerca per nome, messaggio, modello, unità o procedura" | Confronto "contiene" sul nome dell'occorrenza, sul suo messaggio, sul nome del modello, sul nome dell'unità e sul nome della procedura, come fotografati in quel momento. |
| Gravità | **Tutte le gravità** (predefinito), **Critica**, **Avviso**, **Informazione** | Tiene solo le transizioni di occorrenze che portavano quella gravità quando sono avvenute. |
| Aggiorna | | Rilegge il diario; suggerimento "Aggiorna le occorrenze". |
| Esporta | **Esporta come CSV…**, **Esporta come JSON…** | Scrive ogni transizione che la ricerca, la gravità e il periodo raggiungono, pagina dopo pagina, non solo le righe attualmente elencate. Disegnato solo con **Esportare/importare gli storici**; in grigio finché l'elenco è vuoto. |

## Le righe {#the-rows}

| Parte della riga | Contenuto |
| --- | --- |
| Ora | Data e ora in cui il giudice ha osservato il fronte (per una prova, l'istante proprio del campione giudicato). |
| Punto | Il tono della gravità: critico per Critica, cautela per Avviso, neutro per Info. |
| Nome | Il nome dell'occorrenza in quel momento. |
| Riepilogo | "Transizione · oss. N (Motivo) · Modello / Unità · contesto", dove N è la posizione del fronte nella sua sessione e il contesto è "Prova · " seguito dal nome della procedura (o soltanto "Prova" quando non è stato registrato alcun nome di procedura) oppure "Fuori prova". Esempio: "Attivata · oss. 1 (Esecuzione avviata) · Furnace / Line 2 · Prova · Bake 180". |
| Livello | La parola della gravità. |

Il messaggio che una riga porta è il messaggio proprio dell'occorrenza per **Attivata** e
**Rientrata** (vuoto quando la definizione non ne ha, mostrato come "Nessun messaggio registrato." nel
pannello) e, per i fronti di disponibilità, "Segnale non disponibile:" o "Segnale ripristinato:"
seguito dai nomi dei canali interessati, separati da virgole.

## Il pannello di dettaglio {#the-detail-panel}

Selezionare una riga apre il pannello con il distintivo della gravità e il nome, l'istante completo,
la riga di riepilogo, il messaggio e quattro riquadri:

| Riquadro | Campo | Contenuto |
| --- | --- | --- |
| EVENTO | Livello | La gravità. |
| EVENTO | ID dell'evento | L'identità di questo fronte nel diario. Per un'osservazione di prova è lo stesso id che tiene il file della prova. |
| ISTANTANEA DELL'OCCORRENZA | Transizione | Attivata, Rientrata, Non disponibile o Ripristinata. |
| ISTANTANEA DELL'OCCORRENZA | Modello | Il nome del modello in quel momento. |
| ISTANTANEA DELL'OCCORRENZA | Unità | Il nome dell'unità in quel momento. |
| ISTANTANEA DELL'OCCORRENZA | Ambito | Prova o Fuori prova. |
| ISTANTANEA DELL'OCCORRENZA | Procedura | Solo per l'ambito Prova: il nome della procedura, o un trattino quando non ne è stato registrato alcuno. |
| ISTANTANEA DELL'OCCORRENZA | ID della prova | Solo per l'ambito Prova: l'id della prova, lo stesso che mostra Storici. |
| ISTANTANEA DELL'OCCORRENZA | ID del modello, ID unità, ID dell'occorrenza | Gli id stabili dietro ai nomi, che una rinomina non cambia. |
| SESSIONE DI OSSERVAZIONE | Sequenza del diario | Il numero di inserimento della riga nel diario, che ordina le righe con lo stesso istante. |
| SESSIONE DI OSSERVAZIONE | ID dell'osservazione | L'identità della sessione che ha osservato il fronte; ogni fronte di una sessione la condivide. |
| SESSIONE DI OSSERVAZIONE | Sequenza della transizione | La posizione del fronte nella sessione, a partire da uno. Un salto significa un fronte che il diario non è riuscito a rendere persistente. |
| SESSIONE DI OSSERVAZIONE | Avviata | Quando è cominciata la sessione, come istante completo. |
| SESSIONE DI OSSERVAZIONE | Motivo | Esecuzione avviata, Esecuzione ripresa, Sorveglianza avviata, Osservazione fuori esecuzione ripresa o Definizione modificata. |
| CONFIGURAZIONE CONGELATA | Condizione sorvegliata | La condizione JavaScript che la sessione ha effettivamente giudicato. |
| CONFIGURAZIONE CONGELATA | Ritardo all'attivazione / al rientro | "x ms / y ms", l'antirimbalzo che la sessione ha usato. |
| CONFIGURAZIONE CONGELATA | ID dei canali referenziati | Gli id dei canali che condizionavano l'espressione, separati da punti e virgola. |

**Copia l'evento** copia una sola riga: "istante | Occorrenza | gravità | nome | riepilogo |
messaggio | EventId=… | OccurrenceId=… | ObservationId=… | ObservationSequence=… |
ObservationStartedAt=… | ObservationReason=… | Condition=… | OnDelayMs=… | OffDelayMs=… |
ReferencedChannelIds=…".

## Colonne dell'esportazione {#export-columns}

CSV e JSON portano gli stessi campi, in questo ordine: `Timestamp` (l'intestazione del CSV aggiunge
il riferimento temporale, "Timestamp (UTC-03:00)"), `JournalSequence`, `Severity`, `Name`,
`Transition`, `Scope`, `Model`, `ModelId`, `Unit`, `UnitId`, `Procedure`, `RunId`, `Message`,
`EventId`, `OccurrenceId`, `ObservationId`, `ObservationSequence`, `ObservationStartedAt`,
`ObservationReason`, `Condition`, `OnDelayMs`, `OffDelayMs` e `ReferencedChannelIds` (separati da
punto e virgola nel CSV, un array nel JSON). Il JSON è una busta con `TimeZone` ed `Events`. I nomi
dei file sono `occurrence-history-<yyyyMMdd-HHmmss>.csv` e `.json`. Il CSV segue la preferenza di
separatore decimale della stazione come ogni altra esportazione: con i decimali a punto il
separatore di elenco è `,`, con i decimali a virgola è `;`. Una cella che comincia con `=`, `+`, `-`
o `@` è preceduta da un apostrofo perché un foglio di calcolo la legga come testo.

## Dove altro un'occorrenza è registrata {#where-else-an-occurrence-is-recorded}

Un'osservazione di prova è scritta prima nel file proprio della prova, poi copiata qui con lo stesso
id di evento e il contesto della prova; se la copia fallisce, il file della prova tiene comunque il
fronte e Console porta una riga Errore che lo dice. Un'osservazione fuori prova esiste soltanto qui.
Ogni fronte lascia anche una riga in Console sotto l'area Process: un'attivazione al livello della
sua gravità (Critica come errore, Avviso come avviso, Info come informazione), una perdita di
segnale allo stesso livello, un rientro e un ripristino come informazione. Un'attivazione solleva in
più una notifica dentro la finestra intitolata "Occorrenza · " seguita dal nome dell'unità e, per
un'attivazione Avviso o Critica osservata durante una prova, una notifica
del sistema operativo mentre la finestra è nascosta o ridotta a icona.

## Stati vuoti e riga di stato {#empty-states-and-the-status-line}

- "Nessuna occorrenza finora" con "Compariranno qui le transizioni delle occorrenze delle prove e
  del monitoraggio continuo fuori prova."
- "Questi filtri non trovano occorrenze" con "Modificare il filtro gravità o i termini di
  ricerca per allargare questo storico."
- La riga di stato dice "N mostrati · pagina 1", poi " · filtrate" quando una ricerca, una gravità
  o un periodo è in vigore; a destra, "1 selezionata" e "Aggiornato hh:mm:ss".

## Che cosa la scheda Occorrenze non fa {#what-the-occurrences-tab-does-not-do}

- Non definisce, non arma e non modifica un'occorrenza
  ([Process > Allestimento > Occorrenze](process-occurrences)).
- Non appaia i fronti in episodi con una durata: quella vista derivata, con le sue classificazioni
  Interrotta e Incompleta, sta in [Storici](histories) per una prova e sui pannelli propri
  dell'unità.
- Non ha filtro per unità, prova, ambito o data; cerca per nome di unità, di modello o di procedura,
  oppure apri la prova in Storici.
- Non mostra alcuno stato dal vivo: se un'occorrenza è attiva adesso si legge sul pannello
  dell'unità, non qui.
