fix(pos): redesign quick products admin search and save flow

This commit is contained in:
Deploy
2026-08-26 07:43:13 +02:00
parent 290ced173b
commit cf3c906ed2
15 changed files with 358 additions and 75 deletions

View File

@@ -0,0 +1,40 @@
# Implementer evidence — POS-RECEIPT-QUICK-FIXES
## Cambios realizados
### 1) Productos rápidos: nuevo flujo con buscador + lista de hasta 8
- Reemplacé los `<select>` de productos rápidos en `project/apps/admin/src/app/(dashboard)/pos/page.tsx`.
- Ahora el admin usa:
- buscador por nombre / SKU / EAN
- resultados con botón `Añadir`
- lista ordenada de 8 huecos máximos
- botones `↑ Subir`, `↓ Bajar`, `Quitar`
- botón explícito `Guardar accesos rápidos`
- El modal ya hidrata los productos ya guardados mediante `variantIds`, así se ven nombre/SKU al reabrir la configuración.
### 2) Fix del guardado que no persistía
- El bug principal en admin era funcional/UI: existía `saveTouchConfig()` pero no había ningún botón que lo disparase.
- Añadí el botón de guardado y mantuve el payload esperado por backend (`quickProductVariantIds` longitud 8).
### 3) Backend de catálogo para el buscador
- Extendí `GET /pos/admin/catalog-products` en `project/src/modules/pos/api/pos.routes.ts`.
- Ahora acepta:
- `q` (búsqueda)
- `limit`
- `variantIds` (para hidratar la selección ya guardada)
- Deja de ser necesario cargar toda la lista de variantes al entrar en la página del POS admin.
## Validación
- `cd project && npm run build`
- `cd project/apps/admin && npm run build`
- `./scripts/monolith.sh prod restart`
- `./scripts/monolith.sh prod check`
- Prueba real vía proxy admin con sesión backoffice temporal:
- `GET /api/pos/admin/catalog-products?q=alm&limit=5` → 200 con JSON esperado
- `PATCH /api/pos/admin/terminals/:id/touch-config` → 200 `{ "ok": true }`
- verificado en BD que `pos_terminals.settings.quickProductVariantIds` quedó persistido con 8 slots
## Observaciones
- `./scripts/verify.sh` sigue fallando por un artefacto viejo no relacionado:
- `TPV-FIXES/reviewer.json agent debe ser 'reviewer'`
- No se cerró la feature; sigue pendiente de gates y de limpiar ese artefacto heredado.

View File

@@ -2,26 +2,12 @@
"feature_id": "POS-RECEIPT-QUICK-FIXES",
"stage": "build",
"agent": "implementer",
"action": "Fix receipt-settings 400 and quick products save",
"state": "running",
"next_agent": null,
"waiting_for": "Seleccionar una feature pending y actualizar este estado",
"updated_at": "2026-08-25T21:03:29Z",
"action": "Rediseñar productos rápidos con buscador y arreglar guardado en admin",
"state": "done",
"next_agent": "reviewer",
"waiting_for": "review_gate",
"updated_at": "2026-08-26T05:43:09Z",
"timeline": [
{
"ts": "2026-08-25T19:46:39Z",
"agent": "implementer",
"stage": "build",
"state": "running",
"message": "Rebuild dist for awaiting payment notification fix"
},
{
"ts": "2026-08-25T19:52:55Z",
"agent": "implementer",
"stage": "build",
"state": "done",
"message": "Redeploy local prod stack after awaiting-payment fix"
},
{
"ts": "2026-08-25T19:53:50Z",
"agent": "implementer",
@@ -147,6 +133,20 @@
"stage": "build",
"state": "running",
"message": "Fix receipt-settings 400 and quick products save"
},
{
"ts": "2026-08-26T05:34:46Z",
"agent": "implementer",
"stage": "build",
"state": "running",
"message": "Implementando buscador + lista de hasta 8 productos rápidos"
},
{
"ts": "2026-08-26T05:43:09Z",
"agent": "implementer",
"stage": "build",
"state": "done",
"message": "Buscador + lista de 8 + guardado validado vía API"
}
]
}