SLA de Pedido — Tempo de Preparo Monitorado
Visão Geral
O sistema rastreia automaticamente o tempo de cada pedido desde a criação até a entrega. Quando um pedido ultrapassa o limiar configurado, o KDS destaca o card em vermelho e toca um alerta sonoro — sem intervenção manual.
| Característica | Detalhe |
|---|---|
| Limiar global (frontend) | 12 minutos (SLA_THRESHOLD_MINUTES) |
| SLA por pedido | order.slaMinutes (opcional) |
| SLA por filial | Branch.kdsSlaMinutes (default: 15min) |
| Processador BullMQ | backend/src/kitchen/kitchen-sla.processor.ts |
| Evento WebSocket | orderSlaAlert no namespace /kitchen |
Localização das Camadas
| Camada | Arquivo |
|---|---|
| SLA Processor | backend/src/kitchen/kitchen-sla.processor.ts |
| KitchenGateway | backend/src/kitchen/kitchen.gateway.ts — emitOrderSlaAlert() |
| KDS View | frontend-react/src/views/kitchen/KitchenDisplayView.tsx |
| Schema de Filial | backend/src/branches/schemas/branch.schema.ts — kdsSlaMinutes |
Hierarquia de SLA
O tempo-alvo de preparo é determinado em cascata:
1. order.slaMinutes (por pedido — override pontual)
2. branch.kdsSlaMinutes (por filial — configuração padrão)
3. 15 minutos (fallback global)Para pedidos de delivery, o SLA normalmente é maior (ex.: 25–35min). O PDV pode gravar slaMinutes diferente dependendo do orderType.
Fluxo de Alerta
Order criado com slaMinutes = 15
│
▼
SLA Processor (BullMQ) enfileira job com delay = slaMinutes × 60s
│
▼
Job executa → verifica se order ainda não está em status final (delivered/cancelled)
│
├── Order ainda ativo → emitOrderSlaAlert()
│ ↓
│ KDS recebe evento "orderSlaAlert"
│ ↓
│ Card ganha borda vermelha pulsante + playSlaBeep()
│
└── Order já entregue/cancelado → descarta silenciosamenteplaySlaBeep
Som gerado puramente via Web Audio API — sem arquivo de áudio externo:
typescript
// oscillator square 880Hz, 0.4s, volume controlado
// Fallback silencioso se AudioContext não disponívelExibição no KDS
| Condição | Visual |
|---|---|
| < 80% do SLA | Cronômetro branco (MM:SS) |
| 80–100% do SLA | Cronômetro amarelo |
| > SLA ou > 12min | Cronômetro vermelho + borda pulsante + beep |
O timer MM:SS é recalculado a cada segundo via secondTick prop — atualização real sem polling de API.
Configuração por Filial
Em Admin → Filiais → [Filial] → Configurações KDS:
| Campo | Descrição |
|---|---|
kdsSlaMinutes | Tempo padrão de preparo em minutos (default 15) |
Altere conforme o perfil da operação:
- Fast food / balcão: 8–10min
- Cozinha completa: 15–20min
- Delivery: 25–35min
Painel de SLA no Relatório
Em Admin → Relatórios → Desempenho da Cozinha, você vê:
- Tempo médio de preparo por turno
- % de pedidos entregues dentro do SLA
- Ranking de itens com maior tempo de preparo