113 lines
5.6 KiB
Markdown
113 lines
5.6 KiB
Markdown
# Changelog — SPEC Pizza Digital
|
||
|
||
## 0.6.0 — 2026-10-22
|
||
|
||
- **Demo Operação:** [`SPEC-SIM-OPS-DEMO.md`](SPEC-SIM-OPS-DEMO.md) · UI `/sim` · API `/api/sim/*`
|
||
- Motor: entrada Aplicativo/WhatsApp/Telefone · KDS pizzaiolos · estufa · rotas · ETA entrega
|
||
- 15 motoboys SIM · até 2000 ops/dia · prep cap 165 min · Joinville · Limpar dados teste
|
||
|
||
## 0.5.0 — 2026-10-22
|
||
|
||
- **Paridade 3 vídeos CityFoods:** [`SPEC-CITYFOODS-VIDEO-PARITY.md`](SPEC-CITYFOODS-VIDEO-PARITY.md) **v0.1.0**
|
||
- Gap: mapa full-bleed, CTA **Ir para entrega**, rastreio multi-motoboy, pin some ao entregar, filtro forno por sabor
|
||
- UI manda sobre painel lateral do Gestor de Rotas (dados/API `/api/routes/*` permanecem)
|
||
- P0 desta release: rebuild `/despacho` mapa-first (RF-VID-01…08)
|
||
|
||
## 0.4.0 — 2026-10-22
|
||
|
||
- **Gestor de Rotas (CityFoods):** [`SPEC-DESPACHO-CITYFOODS-PARITY.md`](SPEC-DESPACHO-CITYFOODS-PARITY.md) **v0.2.0**
|
||
- Fluxo: Montar rota → Despachar → mapa permanente → Motoboy (a caminho/entregue) → fechar
|
||
- Dados: `DispatchBatch` / `DispatchStop` · `Order.batchId` · ping `Driver.lastLat/Lng`
|
||
- API `/api/routes/*` · UI `/despacho` + `/motoboy` · SPEC mãe §15 S7/S8 → ✅ parcial
|
||
- P0–P2 despacho/estufa/frota/zonas/ops documentados no baseline; próximo = iFood (P3)
|
||
|
||
## 0.3.4 — 2026-10-19
|
||
|
||
- Origem **Cardápio** renomeada na UI para **Aplicativo** (enum interno `cardapio`)
|
||
- **API WhatsApp inbound v0.1:** `POST /api/inbound/whatsapp` + webhook Meta `GET/POST …/meta`
|
||
- Auth `X-Api-Key` (`INBOUND_API_KEY`) · idempotência `Order.inboundKey`
|
||
- Doc: [`API-WHATSAPP-INBOUND.md`](API-WHATSAPP-INBOUND.md)
|
||
|
||
## 0.3.3 — 2026-10-19
|
||
|
||
- **Tamanhos + split no pedido:** Broto / Pequena / Média / Grande / Gigante / Família
|
||
- Regras: Broto+Pequena = 1 sabor · Média ≤2 · Grande ≤3 · Gigante+Família ≤4
|
||
- cm / fatias / referência em pratos de mesa · `GET /api/menu/sizes` · sheet PDV
|
||
- Preço = maior sabor × fator do tamanho (base = Grande 40cm)
|
||
- Seed: sabores sem sufixo G; SKUs Broto legados desativados
|
||
|
||
## 0.3.2 — 2026-10-19
|
||
|
||
- **Matriz de Acesso MVP:** [`SPEC-MATRIZ-ACESSO.md`](SPEC-MATRIZ-ACESSO.md)
|
||
- UI `/acessos` · API `/api/access/*` · templates ≠ vínculos efetivos
|
||
- Caps: `menu.*` · `staff.*` · `permissions.manage` · `owners.manage` · `finance.view`
|
||
- Auditoria proposta `AccessAuditLog` · migração `20261019190000_access_matrix`
|
||
|
||
## 0.3.1 — 2026-10-19
|
||
|
||
- SPECs irmãs: [`SPEC-CARDAPIO.md`](SPEC-CARDAPIO.md) ↔ [`SPEC-ESTOQUE.md`](SPEC-ESTOQUE.md)
|
||
- Ponte obrigatória: `stockMode` (`bom`/`sku`/`none`) + ficha técnica (BOM)
|
||
- RF-MEN-08…12 · **RF-EST-01…08** (Track M/E)
|
||
- Domínio: Recipe, Ingredient, StockMovement
|
||
- Pesquisa regional mantida em [`CARDAPIO-JOINVILLE.md`](CARDAPIO-JOINVILLE.md)
|
||
- **Quantização por peso:** 38 pizzas com BOM em gramas — [`FICHAS-TECNICAS-PESO.md`](FICHAS-TECNICAS-PESO.md) + [`data/fichas-pizzas-peso.json`](data/fichas-pizzas-peso.json) · RF-EST-13…15 · RF-MEN-15
|
||
|
||
## 0.3.0 — 2026-10-19
|
||
|
||
- **Prioridade de produto:** entrada por canais digitais (pós-piloto S5)
|
||
- Novo capítulo **§5.5** — origin × fulfillment, quadro único `/pedidos`, Track C1/C2
|
||
- Documento satélite [`docs/SPEC-CANAIS-DIGITAIS.md`](SPEC-CANAIS-DIGITAIS.md)
|
||
- RFs: RF-CAN-01…08 · RF-PED-08/09 · RF-MEN-04/06/07 · RF-INT-01/03/05
|
||
- Fase 3 e S9 alinhados a Track C (cardápio → `/pedidos`; iFood = C2)
|
||
- Fluxo §6.1: canais digitais + PDV → Order Ingest → `/pedidos` → KDS
|
||
- **Implementado (Central):** `Order.origin`/`fulfillment`, badges + filtros + som no `/pedidos`, `POST /api/orders/demo-digital`
|
||
|
||
## 0.2.4 — 2026-07-23
|
||
|
||
- **KDS claim exclusivo (CityFoods):** fila comum → PEGAR → outras estações bloqueadas
|
||
- API: `POST /api/kds/:station/claim/:orderId`, `POST /api/kds/:station/orders/:orderId/bump`
|
||
- Campos: `Order.claimedStationId` / `claimedAt`
|
||
- UI: secções Fila / Comigo / Bloqueados
|
||
|
||
## 0.2.3 — 2026-07-23
|
||
|
||
- **S3 entregue:** KDS multi-estação realtime
|
||
- API: `GET /api/kds/:station`, `POST /api/kds/tickets/:id/bump`
|
||
- Expedição bloqueada até outras estações concluírem
|
||
- Auto `order.ready` quando todos os tickets fecham
|
||
- UI `/kds/:station` + Socket.io (`ticket.bumped`, timers SLA)
|
||
|
||
## 0.2.2 — 2026-07-23
|
||
|
||
- **S2 entregue:** PDV + Order/OrderItem/OrderTicket + state machine
|
||
- API: `POST/GET /api/orders`, `PATCH .../status`, `PATCH .../urgent`
|
||
- WS: `order.created` / `order.updated` / `order.ready` / `order.canceled`
|
||
- Gate: `em_producao → pronto` gera `order.ready` (ponte despacho)
|
||
- UI PDV em `https://pizza.myvexx.com/pdv`
|
||
|
||
## 0.2.1 — 2026-07-23
|
||
|
||
- Sequência oficial **S0–S9** congelada (§15)
|
||
- Prioridade: **KDS multi-estação antes** de delivery/rotas
|
||
- **rusterando** marcado como referência oficial de dispatch / ORS / driver tour
|
||
- Capítulo §15.2 Módulo Rotas (CityFoods → Pizza Digital)
|
||
- Gate: `order.ready` → fila despacho → batch → ORS (S6+)
|
||
- Design UI: explícito como ainda não congelado (§15.4)
|
||
- S1 marcado ✅; próximo = S2 (PDV)
|
||
|
||
## 0.2.0 — 2026-07-23
|
||
|
||
- Ampliação Fase 1 (`docs/SPEC-FASE1.md`)
|
||
- Infra: VM 125 `pizza-digital` no Proxmox BIG (`10.10.10.125`)
|
||
- DNS: `pizza.myvexx.com` → CNAME tunnel Cloudflare (proxied)
|
||
- Traefik CT114: `pizza.myvexx.com` → `http://10.10.10.125:3000`
|
||
- Stack Fase 1 congelada (NestJS + React + Postgres + Redis + Socket.io)
|
||
- Host de desenvolvimento documentado no SPEC principal
|
||
|
||
## 0.1.0 — 2026-07-23
|
||
|
||
- Draft inicial do zero
|
||
- Baseado na Cozinha Digital CityFoods (`@cityfoods_app`)
|
||
- Referências: kitchenOS, rusterando, URY Mosaic, MaSoVa, Tasty-Station
|
||
- Escopo MVP: PDV + KDS multi-estação (pizzaria) + etiquetas + métricas
|
||
- Fases 2–3: rotas, cardápio público, iFood, multi-tenant
|