pizza-digital/PRD/PRD-SPEC-CARDAPIO.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

64 lines
2 KiB
Markdown

# 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)
```text
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
1. Login gestor
2. Listar menu via API — esperar Tradicionais/Da casa/Doces/bebidas
3. PDV: montar Grande 2 sabores — preço = max*1.0
4. 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.