Skip to content

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ísticaDetalhe
Limiar global (frontend)12 minutos (SLA_THRESHOLD_MINUTES)
SLA por pedidoorder.slaMinutes (opcional)
SLA por filialBranch.kdsSlaMinutes (default: 15min)
Processador BullMQbackend/src/kitchen/kitchen-sla.processor.ts
Evento WebSocketorderSlaAlert no namespace /kitchen

Localização das Camadas

CamadaArquivo
SLA Processorbackend/src/kitchen/kitchen-sla.processor.ts
KitchenGatewaybackend/src/kitchen/kitchen.gateway.tsemitOrderSlaAlert()
KDS Viewfrontend-react/src/views/kitchen/KitchenDisplayView.tsx
Schema de Filialbackend/src/branches/schemas/branch.schema.tskdsSlaMinutes

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 silenciosamente

playSlaBeep

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ível

Exibição no KDS

CondiçãoVisual
< 80% do SLACronômetro branco (MM:SS)
80–100% do SLACronômetro amarelo
> SLA ou > 12minCronô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:

CampoDescrição
kdsSlaMinutesTempo 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

Relacionados

Lançado sob a licença MIT.