pizza-digital/PRD/PRD-SPEC-CANAIS-DIGITAIS.md
Admin e3da540b6e Add detailed developer PRDs for all Pizza Digital SPECs.
Each PRD documents real UI/API processes, service methods, states and gaps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-09 21:22:22 +00:00

65 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
1. Bot/n8n/Make chama `POST /api/inbound/whatsapp` com header `X-Api-Key`.
2. Guard `InboundApiKeyGuard` valida `INBOUND_API_KEY`.
3. Service normaliza payload → cria Order `origin=whatsapp`.
4. Se `inboundKey` repetido → não duplica.
5. Pedido aparece em `/pedidos` com badge WhatsApp.
6. Meta: `GET/POST /api/inbound/whatsapp/meta` (verify token + webhook).
## 4. Processo — demo canal digital
1. Operador/dev chama `POST /api/orders/demo-digital`.
2. Gera pedido sintético para validar UI Central (filtros/som/badges).
## 5. Processo — Central (operador)
1. Abre `/pedidos`.
2. Filtra por origin/fulfillment.
3. Ouve Socket para novos pedidos.
4. 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`.