2 KiB
2 KiB
PRD — SPEC Cardápio (Menu domain)
| 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-CARDAPIO.md |
| Módulo | Domínio Menu* + tamanhos + modifiers |
| Rotas UI | /pdv · Admin |
| APIs | /api/menu/* |
| 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. Contrato do domínio (dev)
MenuCategory 1─N MenuItem
MenuItem N─N Station (MenuItemStation)
MenuItem 1─N RecipeLine (BOM) → Ingredient
PizzaSizeBase (catálogo de tamanhos da loja)
stockMode: none|bom|sku — cardápio não guarda saldo.
2. Processos
Listagem PDV
GET /api/menu → categories+items ativos + pizzaSizes.
Tamanhos
GET /api/menu/sizes lê PizzaSizeBase.
CRUD
Gestor: create/patch/delete categories & items (Roles/capabilities).
Ficha
GET /api/menu/ficha-meta apoia edição de BOM.
3. Regras RF-MEN (status)
- RF-MEN-01 CRUD ⚠️ parcial UI
- RF-MEN-02 map estações ✅
- RF-MEN-05 meia-a-meia/split ✅
- RF-MEN-04 PWA ⏳
- RF-MEN-06/07 horário/áreas ⏳ (zonas em
/admin/zonas)
4. Walkthrough teste QA
- Login gestor
- Listar menu via API — esperar Tradicionais/Da casa/Doces/bebidas
- PDV: montar Grande 2 sabores — preço = max*1.0
- PDV: Broto 2 sabores — deve bloquear (max=1)
5. MenuService — métodos
getStore · listStations · listMenu · fichaMeta · CRUD category/item · replaceRecipeLines.
Teste automatizável: login → GET menu → assert categories includes Tradicionais/Da casa.