Each PRD documents real UI/API processes, service methods, states and gaps. Co-authored-by: Cursor <cursoragent@cursor.com>
65 lines
2.5 KiB
Markdown
65 lines
2.5 KiB
Markdown
# PRD — KDS Claim (PEGAR) + pooling
|
|
|
|
| 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-KDS-CLAIM.md` |
|
|
| **Módulo** | KDS multi-estação clássico |
|
|
| **Rotas UI** | `/kds` `/kds/:station` |
|
|
| **APIs** | `GET/POST /api/kds/:station*` `/api/kds/ready/*` |
|
|
| **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. Problema
|
|
Sem claim, duas estações pegam o mesmo pedido (CityFoods resolve com PEGAR exclusivo).
|
|
|
|
## 2. Processo — fila de estação
|
|
1. Cozinheiro abre `/kds/:station` (massa|montagem|forno|expedicao…)
|
|
2. `GET /api/kds/:station` devolve seções: **Fila / Comigo / Bloqueados**
|
|
3. Na Fila, clicar PEGAR **não** claima imediatamente → confirmação (Spec)
|
|
4. Confirma → `POST /api/kds/:station/claim/:orderId`
|
|
5. Outras estações veem pedido **bloqueado** (`claimedStationId`)
|
|
6. Ao concluir → `POST /api/kds/:station/orders/:orderId/bump`
|
|
7. Expedição só bumpa quando pré-requisitos ok
|
|
8. Ready board: `GET /api/kds/ready/list`
|
|
|
|
## 3. Processo — pós-pronto
|
|
- `POST /api/kds/ready/:orderId/estufa`
|
|
- `POST /api/kds/ready/:orderId/dispatch`
|
|
- `POST /api/kds/ready/:orderId/deliver`
|
|
- `POST /api/kds/ready/batch-dispatch`
|
|
|
|
## 4. Pooling
|
|
Pedidos podem agrupar saída (drawer pooling na UI) antes do despacho.
|
|
|
|
## 5. Aceite
|
|
- ✅ Claim/bump/ready endpoints
|
|
- ✅ UI KdsPage seções
|
|
- ⚠️ Confirmar UX “confirmação antes do claim” em todos fluxos
|
|
|
|
|
|
## 6. Camada de serviço (KdsService) — claim clássico
|
|
|
|
Arquivo: `apps/api/src/kds/kds.service.ts` (~1221 linhas)
|
|
|
|
| Método | Processo |
|
|
|--------|----------|
|
|
| `stationBoard` | Monta Fila/Comigo/Bloqueados da estação |
|
|
| `claim` | Exclusivo: grava claimedStationId/claimedAt; bloqueia peers |
|
|
| `bumpOrder` | Avança ticket; pode disparar ready |
|
|
| `ensurePrepTasks` | Garante tasks de produção |
|
|
| `listReady` | Board de prontos |
|
|
| `holdEstufa` | Move para estufa |
|
|
| `dispatch` / `batchDispatch` | Sai para despacho |
|
|
| `deliver` | Marca entregue no fluxo ready |
|
|
|
|
### Diálogo tipico Socket
|
|
Após claim/bump, server emite eventos para atualizar outras telas KDS sem refresh.
|