Alertas de Alergia na Cozinha
Visão Geral
Restrições alimentares (alergias, intolerâncias, preferências) chegam à cozinha com sinalização visual impossível de ignorar: um banner vermelho acima dos itens do pedido, exibido no KDS sempre que o sistema detecta restrição.
Onde as Restrições São Registradas
Há três fontes de dados que disparam o alerta:
| Fonte | Campo | Quem preenche |
|---|---|---|
| Item do pedido | OrderItem.allergens[] | Sistema — copiado do MenuItem.allergens[] no momento do pedido |
| Nota do item | OrderItem.notes | Cliente (no cardápio QR) ou atendente (no PDV) |
| Perfil do cliente | Customer.dietaryRestrictions[] | CRM — preenchido em cadastros anteriores |
Lógica de Detecção (Frontend)
frontend-react/src/views/kitchen/KitchenDisplayView.tsx — KitchenOrderCard:
const hasAllergyAlert =
order.items.some(item =>
(item.allergens ?? []).length > 0 ||
/alergi|intoler|sem glúten|sem lactose|celíac|vegano|vegetarian/i.test(item.notes ?? '')
);Quando hasAllergyAlert === true, o card exibe:
┌────────────────────────────────────────────────────┐
│ ⚠ ATENÇÃO — RESTRIÇÃO ALIMENTAR │ ← banner vermelho
│ Sem glúten · Alergia a amendoim │
├────────────────────────────────────────────────────┤
│ 1× Hambúrguer Artesanal s/ gergelim │
│ 2× Suco de Laranja │
└────────────────────────────────────────────────────┘Configuração no Cardápio
Para que o alerta apareça automaticamente:
- Admin → Cardápio → Item → Alergênicos
- Marque os alergênicos presentes (glúten, lactose, nozes, amendoim, etc.)
- Salve
Quando o cliente pede esse item, allergens[] é copiado para OrderItem.allergens[] — a cozinha vê o alerta sem o cliente precisar digitar nada.
Nota Livre do Cliente
Quando o cliente digita uma observação no cardápio QR (ex.: "sem cebola — alergia"), a nota chega em OrderItem.notes e é exibida destacada abaixo do item. O regex da detecção cobre as variações mais comuns em português.
Perfil do Cliente (CRM)
Se o cliente está cadastrado e tem dietaryRestrictions preenchido no CRM, o PDV exibe um aviso no momento de criar o pedido. O operador pode confirmar que a restrição foi anotada nas observações do item.
Backend — Schema
// OrderItem (backend/src/orders/schemas/order.schema.ts)
@Prop({ type: [String], default: [] })
allergens: string[];
@Prop()
notes?: string;// MenuItem (backend/src/menu/schemas/menu-item.schema.ts)
@Prop({ type: [String], default: [] })
allergens: string[];Responsabilidades
| Quem | O Que Fazer |
|---|---|
| Admin | Cadastrar alergênicos em cada item do cardápio |
| Atendente (PDV) | Confirmar e anotar restrições do cliente ao criar pedido |
| Cozinheiro | Ler o banner vermelho antes de iniciar preparo |
| Sistema | Exibir alerta sem ação manual — automático |