2.4 KiB
2.4 KiB
PRD — Entrada por Canais Digitais
| 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-CANAIS-DIGITAIS.md |
| Módulo | Ingestão multi-canal → quadro único /pedidos |
| Rotas UI | /pedidos · inbound WhatsApp |
| APIs | POST /api/inbound/whatsapp · POST /api/orders/demo-digital · Meta webhook |
| 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. Problema que o código resolve
Pedidos chegam de PDV, WhatsApp, telefone, app. Sem quadro único, a cozinha quebra. A Spec define origin × fulfillment e Track C.
2. Modelo
Order.origin: pdv | cardapio(aplicativo) | whatsapp | telefone | ifood(futuro)Order.fulfillment: entrega | retirada | mesa- Idempotência inbound:
Order.inboundKey
3. Processo — pedido WhatsApp (construído)
- Bot/n8n/Make chama
POST /api/inbound/whatsappcom headerX-Api-Key. - Guard
InboundApiKeyGuardvalidaINBOUND_API_KEY. - Service normaliza payload → cria Order
origin=whatsapp. - Se
inboundKeyrepetido → não duplica. - Pedido aparece em
/pedidoscom badge WhatsApp. - Meta:
GET/POST /api/inbound/whatsapp/meta(verify token + webhook).
4. Processo — demo canal digital
- Operador/dev chama
POST /api/orders/demo-digital. - Gera pedido sintético para validar UI Central (filtros/som/badges).
5. Processo — Central (operador)
- Abre
/pedidos. - Filtra por origin/fulfillment.
- Ouve Socket para novos pedidos.
- Encaminha mentalmente à cozinha (já ticketado no create).
6. Aceite / gaps
- ✅ Inbound WhatsApp + demo digital + badges Central
- ⏳ PWA cardápio público Track C1
- ⏳ iFood Track C2
- ⚠️ SMTP/notificações reais
7. Camada inbound (WhatsappService)
| Método | Fluxo |
|---|---|
createOrder |
Payload API key → Order whatsapp |
fromMetaText |
Webhook Meta texto → parse |
resolveItems |
Mapeia texto/IDs para MenuItem |
Guard: InboundApiKeyGuard em POST /api/inbound/whatsapp.