Fritadeiras

As fritadeiras e os controlos de qualidade do óleo — duas coleções, e porque é que o valor medido pode faltar quando a decisão nunca falta.

O óleo de fritura degrada-se à medida que é utilizado e, a partir de certo ponto, tem de ser filtrado ou deitado fora. O restaurante testa-o, decide o que fazer, e regista as duas coisas. Duas coleções: as fritadeiras, e os controlos feitos sobre elas.

ColeçãoÂmbitoO que é um registo
fryer-equipmentfryer-equipment:readUma fritadeira.
fryer-checksfryer-checks:readUm controlo da qualidade do óleo numa delas, e o que foi decidido.

As duas partilham o envelope de instantâneo: id, deleted, capturedAt, receivedAt, sequence e os restantes ficam ao lado do data descrito abaixo.

fryer-equipment

As fritadeiras em si, tal como o restaurante as lista. Um registo curto — um nome, uma posição na lista, e onde ela está.

CampoTipoSignificado
indexinteger, obrigatórioA posição da fritadeira na lista, tal como a aplicação a ordena.
namestring, obrigatórioComo o restaurante lhe chama.
areaIdstring | nullA zona em que está. null num restaurante que não se divide em zonas.
isDeletedboolean, obrigatórioA eliminação lógica da própria aplicação. Leia a nota abaixo.
{
  "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
  }
}

Aqui não há limiares. Ao contrário do equipamento, uma fritadeira não traz min nem max: nada no registo diz o que é uma boa leitura de óleo. Se um controlo foi aceitável é um juízo do restaurante, e o único vestígio dele é a ação que tomaram.

isDeleted não é o deleted do envelope. Uma fritadeira que o restaurante retirou volta com isDeleted: true e deleted: false: continua a ser um registo vivo, que descreve uma fritadeira que já não está em serviço. Filtre pelos dois, e guarde as retiradas — os controlos antigos ainda apontam para elas.

fryer-checks

Um controlo numa fritadeira: o que o teste mostrou, e o que foi feito a esse respeito.

CampoTipoSignificado
timestampstring, obrigatórioQuando o controlo foi feito, em milissegundos desde a época Unix, em forma de cadeia de caracteres.
testValuestring | nullO que o teste mostrou, em texto. null quando não foi medido nada.
actionstring, obrigatórioO que foi decidido quanto ao óleo — filtrá-lo, mudá-lo, deixá-lo como está.
fryerEquipmentIdstring, obrigatórioA fritadeira que foi controlada.
userIdstring | nullO funcionário que fez o controlo, quando a aplicação registou um.
{
  "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 é uma cadeia de caracteres, não um número. É o que a tira ou a sonda mostrou, registado como texto, e o registo não traz unidade nem escala — um restaurante que use tiras de teste e outro que use um medidor de compostos polares vão os dois parar aqui. Guarde-o como texto. Convertê-lo num número decimal através de vários restaurantes dá-lhe uma coluna cujos valores não se comparam.

action é texto livre na língua do restaurante. O esquema não o restringe, por isso leia o valor em vez de o comparar com uma lista sua — e não construa uma enumeração a partir do que vê nos dados de um único restaurante.

O que significa um controlo sem valor

testValue admite null e action é obrigatório, e é essa assimetria que tem de ter em conta ao desenhar. Um controlo pode ser registado como uma ação tomada sem qualquer valor medido por trás: alguém mudou o óleo porque parecia mal, porque era o fim da semana, porque a fritadeira ia ser limpa de qualquer maneira.

Ou seja, um controlo não é uma medição. É uma decisão, às vezes com uma medição anexada. Se está a construir uma tabela de leituras de óleo ao longo do tempo, conte com uma boa parte de linhas sem nada na coluna do valor, e conte-as em vez de as deitar fora — uma ação sem valor continua a ser um controlo que aconteceu.

Trabalhar com estes

Una pelo fryerEquipmentId. Um controlo identifica a sua fritadeira e mais nada; o nome da fritadeira está em fryer-equipment, que percorre à parte. Dois percursos, unidos do seu lado.

Ordene por capturedAt, não por receivedAt. Um tablet carrega quando encontra sinal, por isso um controlo feito às 09:00 pode chegar às 14:00. A página do envelope conta a história toda.

A ausência não prova nada. Uma fritadeira sem controlo esta semana pode não ter sido controlada, ou pode estar num dispositivo que ainda não carregou os dados. Não transforme uma contagem destes num número de conformidade — veja a nota de aviso.

Última atualização em 2026-09-20.