feat(POS-FIX-11): completed feature
This commit is contained in:
38
work/artifacts/POS-FIX-11/implementer.md
Normal file
38
work/artifacts/POS-FIX-11/implementer.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# POS-FIX-11: Implementer Evidence
|
||||
|
||||
## Problema
|
||||
Al guardar un ticket pendiente sin cliente asociado, no había forma de identificarlo. Solo se mostraba el ID o receipt number.
|
||||
|
||||
## Cambios realizados
|
||||
|
||||
### Migración
|
||||
**`project/migrations/059_pos_pending_label.js`**
|
||||
- Añade columna `pos_label` a `orders_orders` para almacenar nombre identificativo
|
||||
|
||||
### Backend
|
||||
**`project/src/modules/pos/domain/pos-sale.ts`**
|
||||
- Añade campo `posLabel?: string` a `PosSaleInput`
|
||||
|
||||
**`project/src/modules/pos/api/pos.routes.ts`**
|
||||
- Schema: acepta `posLabel` en POST /pos/sales
|
||||
- Query listSales: devuelve `pos_label AS "posLabel"`
|
||||
|
||||
**`project/src/modules/pos/application/create-pos-sale.ts`**
|
||||
- INSERT: guarda `input.posLabel` en columna `pos_label`
|
||||
|
||||
### Frontend
|
||||
**`project/apps/pos/src/types/checkout.ts`**
|
||||
- Añade `posLabel?: string | null` a `PosPendingSale`
|
||||
|
||||
**`project/apps/pos/src/app/(terminal)/page.tsx`**
|
||||
- Nuevo estado `pendingParkName` para el diálogo de nombre
|
||||
- Nueva función `doParkSale(name?)` que acepta nombre opcional
|
||||
- parkSale ahora abre diálogo si no hay cliente
|
||||
- Diálogo para pedir nombre con input y botones Guardar/Cancelar
|
||||
- Panel de ventas pendientes muestra: nombre/receipt → fecha+hora · total · pendiente
|
||||
|
||||
## Verificación
|
||||
- [x] TypeScript compila sin errores
|
||||
- [x] Diálogo aparece al guardar pendiente sin cliente
|
||||
- [x] Nombre se muestra en el panel junto con fecha
|
||||
- [x] Migración creada correctamente
|
||||
6
work/artifacts/POS-FIX-11/leader-close.json
Normal file
6
work/artifacts/POS-FIX-11/leader-close.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"agent": "leader",
|
||||
"stage": "close",
|
||||
"verdict": "APPROVED",
|
||||
"notes": "POS-FIX-11 cerrado: pedir nombre al guardar pendiente sin cliente, mostrar nombre+fecha en panel. verify.sh verde."
|
||||
}
|
||||
6
work/artifacts/POS-FIX-11/qa.json
Normal file
6
work/artifacts/POS-FIX-11/qa.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"agent": "qa",
|
||||
"stage": "qa_gate",
|
||||
"verdict": "APPROVED",
|
||||
"notes": "Flows: (1) Con cliente -> guardar pendiente -> no pide nombre. (2) Sin cliente -> guardar pendiente -> pide nombre -> guarda y muestra en panel con fecha. (3) Con nombre -> panel muestra nombre + fecha."
|
||||
}
|
||||
6
work/artifacts/POS-FIX-11/reviewer.json
Normal file
6
work/artifacts/POS-FIX-11/reviewer.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"agent": "reviewer",
|
||||
"stage": "review_gate",
|
||||
"verdict": "APPROVED",
|
||||
"notes": "Migracion para pos_label anadida. Backend guarda y devuelve el label. Frontend muestra dialogo si no hay cliente y muestra nombre+fecha en panel. TypeScript OK."
|
||||
}
|
||||
6
work/artifacts/POS-FIX-11/security.json
Normal file
6
work/artifacts/POS-FIX-11/security.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"agent": "security",
|
||||
"stage": "security_gate",
|
||||
"verdict": "APPROVED",
|
||||
"notes": "Campo posLabel limitado a 100 chars, no expone datos sensibles. Input sanitizado en frontend. No hay vectores de injection."
|
||||
}
|
||||
Reference in New Issue
Block a user