feat(F-163): completed feature
This commit is contained in:
10
work/artifacts/F-163/architect.md
Normal file
10
work/artifacts/F-163/architect.md
Normal 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.
|
||||
7
work/artifacts/F-163/documenter.md
Normal file
7
work/artifacts/F-163/documenter.md
Normal 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.
|
||||
10
work/artifacts/F-163/implementer.md
Normal file
10
work/artifacts/F-163/implementer.md
Normal 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.
|
||||
1
work/artifacts/F-163/leader-close.json
Normal file
1
work/artifacts/F-163/leader-close.json
Normal 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":[]}
|
||||
1
work/artifacts/F-163/qa.json
Normal file
1
work/artifacts/F-163/qa.json
Normal 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":[]}
|
||||
1
work/artifacts/F-163/reviewer.json
Normal file
1
work/artifacts/F-163/reviewer.json
Normal 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":[]}
|
||||
1
work/artifacts/F-163/security.json
Normal file
1
work/artifacts/F-163/security.json
Normal 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":[]}
|
||||
@@ -1,3 +1,16 @@
|
||||
# F-164 — Update outdated POS Next.js
|
||||
# F-163 — Make 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.
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user