Each PRD documents real UI/API processes, service methods, states and gaps. Co-authored-by: Cursor <cursoragent@cursor.com>
3.4 KiB
3.4 KiB
PRD — Fase 1 — MVP Cozinha Digital
| Campo | Valor |
|---|---|
| Produto | Pizza Digital |
| Versão app auditada | v0.5.0 |
| Ambiente | https://pizza.itecnologys.com · VM125 · loja pizza-digital-piloto |
| Spec de origem | docs/SPEC-FASE1.md |
| Módulo | PDV + KDS + Expedição (sem rotas ORS) |
| Rotas UI | /pdv /pedidos /kds/:station /etiqueta/:id |
| APIs | /api/orders/* /api/kds/* |
| Data | 2026-11-09 |
| Estilo | PRD operacional detalhado (visão de desenvolvedor) |
| Audiência | Dev / QA / Product |
Como ler: cada seção descreve o processo real (o que o sistema faz hoje), com passos de usuário, chamadas de API, regras de negócio e estados. Status: ✅ construído · ⚠️ parcial · ⏳ especificado / não entregue · 🐛 gap observado.
1. Objetivo da Fase 1 (visão de implementação)
Entregar loop operacional pedido → produção → pronto, sem otimização de rotas. ORS/motoboy tour ficam para despacho (Specs posteriores).
Escopo entregue
- PDV cria pedido
- Central
/pedidosvê fila - KDS multi-estação com claim/bump
- Label/etiqueta
- Gate
order.readyquando tickets fecham
Fora
App motoboy avançado, iFood, multi-loja, ORS.
2. Processo ponta a ponta (dev walkthrough)
A) Criação do pedido (PDV)
POST /api/auth/login- Operador monta carrinho (cardápio)
POST /api/orderscomorigin,fulfillment, items, customer- Service cria
Order+OrderItem+OrderTicketpor estação mapeada - Emite eventos Socket.io para KDS/Central
B) Central de pedidos
GET /api/orders(+ filtros origin/status)- UI
/pedidosmostra badges (Aplicativo/WhatsApp/Telefone/PDV) PATCH /api/orders/:id/urgent·PATCH .../status·PATCH .../payment- Demo digital:
POST /api/orders/demo-digital
C) Cozinha (KDS clássico)
GET /api/kds/:station→ fila / comigo / bloqueadosPOST /api/kds/:station/claim/:orderId→ claim exclusivo- Trabalha item →
POST .../bumpavança ticket - Expedição só libera quando demais estações concluíram
- Auto
order.readyquando todos tickets fecham
D) Etiqueta
GET /api/orders/:id/label- UI
/etiqueta/:id(ESC/POS ou PDF conforme implementação)
3. Máquina de estados (Order)
created/received → in_kitchen → ready → (despacho/entrega)
↘ cancelled
Tickets por estação: pending → claimed → done (simplificado).
4. Aceite
- ✅ Loop PDV→KDS→ready
- ✅ Claim exclusivo
- ⚠️ SLA timers por categoria (SPEC menciona)
- ⏳ Rotas ORS (não Fase 1)
5. Camada de serviço (OrdersService) — o que o código faz
Arquivo: apps/api/src/orders/orders.service.ts (~811 linhas)
| Método | Processo |
|---|---|
create |
Gera código (nextCode), persiste Order+Items, cria tickets KDS, emite realtime |
list / get |
Lista/detalhe com filtros para Central |
transition |
Muda status do pedido (máquina de estados) |
setUrgent / setPayment |
Flags operacionais/financeiras |
label |
Payload da etiqueta |
trackByHash |
Tracking público sem auth completa |
createDemoDigital |
Pedido sintético canal digital |
dayPool |
Pool do dia (agrupamento) |
Erros que o dev deve tratar no front
- 401 sem JWT
- 400 validação items/fulfillment
- 409/422 transição ilegal de status