Onde deliveryTime é a duração média de preparação da loja (em minutos).
Exemplo prático
Cenário: Cliente agenda entrega para 20:00, sua loja tem 40 minutos de tempo de preparo
Entrega agendada: 20:00Tempo de preparo: 40 minutos─────────────────────────Começar prep em: 19:20Prazo SLA: 19:28 (8 min após 19:20)
Timeline esperada:
16:00 → Cliente agenda para 20:00 na app16:01 → Você recebe CONFIRMED16:02 → Confirma pedido (dentro de 8 min após 19:20)19:00 → Sistema alerta: "começar prep em 20 min"19:20 → Comanda imprime — comece preparação19:20 → Chamar /startPreparation19:28 → Prazo máximo para confirmar passou (não é problema, já confirmou em 16:02)20:00 → Chamar /dispatch ou /readyToPickup20:00 → Entregador coleta ou cliente retira
Regras importantes
Não antecipe
Errado: Começar prep antes de preparationStartDateTime
Cliente pode não estar em casa (DELIVERY)
Comida fica fria/morna
Cliente vê ordem saindo mais cedo que agendado
Correto: Começar exatamente em preparationStartDateTime ou logo depois
Sistema aceitará entrega durante toda a janela, mas respeite o início.
Confirmação de pedido (SLA de 8 minutos)
Embora você confirme logo que recebe, o SLA técnico é:
8 minutos após preparationStartDateTime
Isso dá tempo para:
Validar disponibilidade de itens
Alertar cliente se houver atraso
Você já confirmou no início (16:02 no exemplo), então está coberto.
Casos de uso comuns
Caso 1: Delivery agendado no horário
16:00 → Cliente agenda para 20:0016:01 → Recebe CONFIRMED16:02 → Confirma via API19:20 → Recebe alerta "começar prep"19:20 → Chama /startPreparation19:50 → Termina prep20:00 → Chama /dispatch exatamente20:15 → Entregador chega e coleta20:40 → Cliente recebe
Caso 2: Takeout agendado com atraso
17:00 → Cliente agenda para 19:3017:01 → Recebe CONFIRMED17:02 → Confirma19:00 → Recebe alerta "começar prep em 30 min"19:30 → Chama /startPreparation (15 min antes para estar pronto)19:45 → Termina prep19:50 → Chama /readyToPickup20:00 → Cliente chega, busca no balcão
Caso 3: Janela de 30 minutos
13:00 → Cliente agenda 18:00-18:3013:01 → Recebe CONFIRMED13:02 → Confirma17:20 → Comanda imprime (40 min antes)17:20 → Chama /startPreparation18:00 → Termina prep18:00 → Chama /dispatch18:15 → Entregador coleta (dentro da janela)18:40 → Cliente recebe (dentro da janela)