feat(F-163): completed feature

This commit is contained in:
chattie
2026-08-22 18:33:24 +02:00
parent 08af6caf50
commit 5d90dd32de
19 changed files with 403 additions and 37 deletions

View File

@@ -0,0 +1,10 @@
# F-163 — Diseño
## Admin
Página `/pos` consume APIs administrativas existentes con el cliente `api` compartido. Lista terminales y permite crear uno para una tienda activa; el binding code se muestra/copiará. RBAC sigue backend admin-only.
## POS
Cuando config devuelve `session: null`, renderiza apertura de caja local. `POST /pos/sessions` recibe fondo inicial en céntimos; el proxy aporta `x-terminal-id` desde cookie. Tras 201 se recarga config.
## Backend
La tienda por defecto usa UUID nil válido; sustituir Zod `.uuid()` estricto del body de terminal por regex canónica que acepta UUID nil y generados.

View File

@@ -0,0 +1,7 @@
# TPV: terminal y sesión
- **Terminal**: caja/dispositivo físico. Admin → TPV crea el terminal y muestra su código de 8 caracteres.
- **Vincular**: introducir ese código una vez en el navegador del TPV.
- **Sesión de caja**: turno diario. En el TPV se indica efectivo inicial y se pulsa «Abrir caja y comenzar».
La caja principal ya está vinculada y tiene una sesión OPEN.

View File

@@ -0,0 +1,10 @@
# F-163 — Implementer
- Nueva entrada Admin → TPV y página para explicar, listar y crear terminales/códigos.
- Creación acepta UUID nil de tienda por defecto.
- POS login usa backoffice auth (cash session FK apunta a backoffice users).
- Pantalla «Sesión cerrada» sustituida por formulario para abrir caja con efectivo inicial.
- Config backend devuelve la sesión abierta completa, necesaria para ventas.
- Caja `TPV Principal` abierta con sesión `6d281efe-0682-4763-88bf-5d8cb4403c05`.
Evidencia: creación terminal con tienda default PASS; login/bind/open/config = 200/200/201/200; session OPEN; admin+POS builds PASS; 6/6 cash session tests; tsc/verify PASS.

View File

@@ -0,0 +1 @@
{"feature_id":"F-163","agent":"leader","stage":"close","verdict":"APPROVED","checks":[{"item":"all gates","ok":true},{"item":"e2e create-bind-open-config","ok":true},{"item":"build/tests/verify","ok":true}],"issues":[]}

View File

@@ -0,0 +1 @@
{"feature_id":"F-163","agent":"qa","stage":"qa_gate","verdict":"APPROVED","checks":[{"item":"create terminal","ok":true},{"item":"bind","ok":true},{"item":"open session","ok":true},{"item":"config session OPEN","ok":true},{"item":"build/tests","ok":true}],"issues":[]}

View File

@@ -0,0 +1 @@
{"feature_id":"F-163","agent":"reviewer","stage":"review_gate","verdict":"APPROVED","checks":[{"item":"admin terminal UI","ok":true},{"item":"cash opening UI","ok":true},{"item":"auth/FK alignment","ok":true},{"item":"runtime e2e","ok":true}],"issues":[]}

View File

@@ -0,0 +1 @@
{"feature_id":"F-163","agent":"security","stage":"security_gate","verdict":"APPROVED","checks":[{"item":"admin endpoints RBAC","ok":true},{"item":"HttpOnly terminal cookie","ok":true},{"item":"backoffice staff session","ok":true}],"issues":[]}

View File

@@ -1,3 +1,16 @@
# F-164Update outdated POS Next.js
# F-163Make POS terminal and cash session setup usable
Alinear POS con Admin: Next.js `16.3.1`, React/ReactDOM `19.2.8`. Actualizar lockfile, adaptar incompatibilidades de build y validar login/proxy/config.
## Qué significa
- **Vincular terminal**: asociar este navegador/dispositivo a una caja física mediante un código generado en Admin → TPV.
- **Sesión de caja**: turno diario de efectivo. Antes de vender se indica fondo inicial y se abre la caja.
## Implementación
- Nueva entrada/página Admin **TPV**: explicación, tiendas, terminales, creación y código de vinculación.
- Aceptar el UUID fijo de la tienda por defecto al crear terminal.
- POS muestra formulario para abrir caja cuando no hay sesión OPEN; deja de mandar al operador a una pantalla admin inexistente.
## Aceptación
1. Admin puede crear terminal y obtener código.
2. Dispositivo puede vincularse con ese código.
3. Cajero puede abrir sesión indicando efectivo inicial.
4. Tras abrir, aparece la pantalla de venta.

View File

@@ -1,68 +1,68 @@
{
"feature_id": "F-164",
"feature_id": "F-163",
"stage": "close",
"agent": "leader",
"action": "Close POS Next upgrade",
"action": "Close usable TPV setup",
"state": "running",
"next_agent": "leader",
"waiting_for": "Seleccionar una feature pending y actualizar este estado",
"updated_at": "2026-08-22T16:25:00Z",
"updated_at": "2026-08-22T16:33:09Z",
"timeline": [
{
"ts": "2026-08-22T16:21:23Z",
"ts": "2026-08-22T16:25:44Z",
"agent": "leader",
"stage": "intake",
"state": "running",
"message": "Align POS Next.js with Admin supported version"
"message": "Make terminal binding and cash opening self-service"
},
{
"ts": "2026-08-22T16:21:38Z",
"ts": "2026-08-22T16:26:32Z",
"agent": "architect",
"stage": "design",
"state": "running",
"message": "Plan POS framework version alignment"
"message": "Design Admin terminal setup and POS cash opening"
},
{
"ts": "2026-08-22T16:21:52Z",
"ts": "2026-08-22T16:26:57Z",
"agent": "implementer",
"stage": "build",
"state": "running",
"message": "Upgrade POS Next and React dependencies"
"message": "Implement terminal admin page and cash opening"
},
{
"ts": "2026-08-22T16:23:59Z",
"ts": "2026-08-22T16:31:54Z",
"agent": "reviewer",
"stage": "review_gate",
"state": "running",
"message": "Review POS framework migration"
"message": "Review end-to-end terminal and session setup"
},
{
"ts": "2026-08-22T16:24:11Z",
"ts": "2026-08-22T16:32:07Z",
"agent": "security",
"stage": "security_gate",
"state": "running",
"message": "Audit upgraded dependencies"
"message": "Audit TPV admin RBAC and binding cookies"
},
{
"ts": "2026-08-22T16:24:25Z",
"ts": "2026-08-22T16:32:29Z",
"agent": "qa",
"stage": "qa_gate",
"state": "running",
"message": "Validate upgraded POS build and LAN flow"
"message": "Validate create-bind-open-config workflow"
},
{
"ts": "2026-08-22T16:24:41Z",
"ts": "2026-08-22T16:32:56Z",
"agent": "documenter",
"stage": "document",
"state": "running",
"message": "Document POS framework upgrade"
"message": "Document terminal and cash session concepts"
},
{
"ts": "2026-08-22T16:25:00Z",
"ts": "2026-08-22T16:33:09Z",
"agent": "leader",
"stage": "close",
"state": "running",
"message": "Close POS Next upgrade"
"message": "Close usable TPV setup"
}
]
}