obsidian-vault/Pizza-Digital/docs/PRD/PRD-SPEC-CARDAPIO.md

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

  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.