Each PRD documents real UI/API processes, service methods, states and gaps. Co-authored-by: Cursor <cursoragent@cursor.com>
64 lines
2 KiB
Markdown
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.
|