Friggitrici

Le friggitrici e i loro controlli sulla qualità dell'olio — due collezioni, e perché il valore misurato può mancare mentre la decisione non manca mai.

L'olio di frittura si degrada con l'uso, e oltre un certo punto deve essere filtrato o buttato. Il ristorante lo analizza, decide cosa fare, e registra entrambe le cose. Due collezioni: le friggitrici, e i controlli effettuati su di esse.

CollezioneAmbitoChe cos'è un record
fryer-equipmentfryer-equipment:readUna friggitrice.
fryer-checksfryer-checks:readUn controllo della qualità dell'olio su una di esse, e cosa è stato deciso.

Entrambe condividono l'involucro di istantanea: id, deleted, capturedAt, receivedAt, sequence e gli altri stanno accanto al data descritto qui sotto.

fryer-equipment

Le friggitrici stesse, come le elenca il ristorante. Un record breve — un nome, una posizione nell'elenco, e dove si trova.

CampoTipoSignificato
indexintero, obbligatorioLa posizione della friggitrice nell'elenco, nell'ordine in cui le dispone l'app.
namestringa, obbligatorioCome la chiama il ristorante.
areaIdstringa | nullL'area in cui si trova. null in un ristorante che non si suddivide in aree.
isDeletedbooleano, obbligatorioLa cancellazione logica propria dell'app. Legga la nota qui sotto.
{
  "id": "6b1d0f54-8e27-4c93-a7b0-52fd3e1c9a86",
  "collection": "fryer-equipment",
  "deleted": false,
  "capturedAt": "1789598411206",
  "receivedAt": "1789598603471",
  "sequence": "1",
  "data": {
    "index": 1,
    "name": "Friteuse gauche",
    "areaId": "7d2c0b61-4e8a-49f3-9c27-5a1b8e60d3f4",
    "isDeleted": false
  }
}

Qui non ci sono soglie. A differenza delle apparecchiature, una friggitrice non porta alcun min e alcun max: niente nel record dice quale sia una buona lettura dell'olio. Se un controllo sia stato accettabile è un giudizio del ristorante, e l'unica traccia che ne resta è l'azione che ha intrapreso.

isDeleted non è il deleted dell'involucro. Una friggitrice che il ristorante ha rimosso torna con isDeleted: true e deleted: false: è ancora un record vivo, che descrive una friggitrice non più in servizio. Filtri su entrambi, e conservi quelle rimosse — i vecchi controlli le indicano ancora.

fryer-checks

Un controllo su una friggitrice: cosa ha mostrato il test, e cosa è stato fatto di conseguenza.

CampoTipoSignificato
timestampstringa, obbligatorioQuando è stato effettuato il controllo, millisecondi dall'epoch come stringa.
testValuestringa | nullCosa ha mostrato il test, come testo. null quando non è stato misurato nulla.
actionstringa, obbligatorioCosa è stato deciso sull'olio — filtrarlo, cambiarlo, lasciarlo com'è.
fryerEquipmentIdstringa, obbligatorioLa friggitrice controllata.
userIdstringa | nullIl membro del personale che ha effettuato il controllo, quando l'app ne ha registrato uno.
{
  "id": "e07a5c92-4f61-48b8-9d3a-b18c60e5427f",
  "collection": "fryer-checks",
  "deleted": false,
  "capturedAt": "1789777348215",
  "receivedAt": "1789777510964",
  "sequence": "2",
  "data": {
    "timestamp": "1789777200000",
    "testValue": "18",
    "action": "Filtration de l'huile",
    "fryerEquipmentId": "6b1d0f54-8e27-4c93-a7b0-52fd3e1c9a86",
    "userId": "2774953d-8d9b-4a68-8ec4-1209edd90777"
  }
}

testValue è una stringa, non un numero. È ciò che ha mostrato la striscia o la sonda, registrato come testo, e il record non porta alcuna unità e alcuna scala — un ristorante che usa strisce reattive e uno che usa un misuratore di composti polari finiscono entrambi qui. Lo tenga come testo. Convertirlo in un float attraverso i ristoranti le dà una colonna i cui valori non sono confrontabili.

action è testo libero nella lingua del ristorante. Lo schema non lo vincola, quindi legga il valore anziché confrontarlo con un elenco suo — e non costruisca un enum a partire da quello che vede nei dati di un solo ristorante.

Cosa significa un controllo senza valore

testValue ammette null e action è obbligatorio, e quell'asimmetria è la cosa attorno a cui progettare. Un controllo può essere registrato come un'azione intrapresa senza alcun valore misurato dietro: qualcuno ha cambiato l'olio perché sembrava sbagliato, perché era fine settimana, perché la friggitrice veniva comunque pulita.

Quindi un controllo non è una misurazione. È una decisione, a volte con una misurazione allegata. Se sta costruendo una tabella delle letture dell'olio nel tempo, si aspetti una buona quota di righe senza nulla nella colonna del valore, e le conti anziché scartarle — un'azione senza valore è comunque un controllo che è avvenuto.

Lavorare con questi dati

Unisca su fryerEquipmentId. Un controllo nomina la sua friggitrice e nient'altro; il nome della friggitrice sta su fryer-equipment, che percorre separatamente. Due percorsi, uniti dalla sua parte.

Ordini su capturedAt, non su receivedAt. Un tablet carica i dati quando trova segnale, quindi un controllo effettuato alle 09:00 può arrivare alle 14:00. La pagina sull'involucro racconta tutta la storia.

L'assenza non prova nulla. Una friggitrice senza controlli questa settimana può non essere stata controllata, oppure può trovarsi su un dispositivo che non ha caricato i dati. Non trasformi un conteggio di questi record in un dato di conformità — veda l'avvertenza.

Ultimo aggiornamento 2026-09-20.