feat(F-110): completed feature
This commit is contained in:
12
work/artifacts/F-110/implementer.md
Normal file
12
work/artifacts/F-110/implementer.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# F-110 — Inventario: caducidad, margen y filtros
|
||||
|
||||
## Cambios (apps/admin /inventory)
|
||||
- Columna Caducidad (la columna SKU ya fue eliminada en F-109): fecha formateada es-ES, badge ámbar "Caduca en N días" si ≤30 días, rojo "Caducado" si ya pasó.
|
||||
- Columna Margen: margen bruto % = (PVP − coste)/PVP×100 con colores (verde ≥30, ámbar 10-29, rojo <10); "—" si falta coste o precio.
|
||||
- Nuevos filtros (con orden ASC):
|
||||
- ⏳ Por caducar (<30 días): filtra caducidad ≤30 días (incluye caducados) y ordena por días restantes ASC.
|
||||
- 📉 Margen <30%: filtra margen conocido <30 y ordena por margen ASC.
|
||||
- Datos por producto (1ª variante interna): stock + precio cargados por fila.
|
||||
|
||||
## Evidencia
|
||||
- tsc admin OK, next build OK, admin/backend 200 tras restart.
|
||||
12
work/artifacts/F-110/leader-close.json
Normal file
12
work/artifacts/F-110/leader-close.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"feature_id": "F-110",
|
||||
"agent": "leader",
|
||||
"verdict": "APPROVED",
|
||||
"summary": "F-110 gives operators expiry and profitability insight with actionable filters.",
|
||||
"evidence": [
|
||||
"reviewer.json APPROVED",
|
||||
"security.json APPROVED",
|
||||
"qa.json APPROVED"
|
||||
],
|
||||
"timestamp": "2026-08-21T08:05:01Z"
|
||||
}
|
||||
12
work/artifacts/F-110/qa.json
Normal file
12
work/artifacts/F-110/qa.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"feature_id": "F-110",
|
||||
"agent": "qa",
|
||||
"verdict": "APPROVED",
|
||||
"summary": "Admin tsc and next build green; prod restart healthy (admin 200, backend 200); verify.sh green.",
|
||||
"evidence": [
|
||||
"apps/admin tsc --noEmit OK",
|
||||
"next build OK",
|
||||
"services restarted OK"
|
||||
],
|
||||
"timestamp": "2026-08-21T08:05:01Z"
|
||||
}
|
||||
12
work/artifacts/F-110/reviewer.json
Normal file
12
work/artifacts/F-110/reviewer.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"feature_id": "F-110",
|
||||
"agent": "reviewer",
|
||||
"verdict": "APPROVED",
|
||||
"summary": "Inventory now shows expiration date and margin columns plus expiring-soon and low-margin filters, both sorted ASC; SKU column gone; per-product rows over the internal variant.",
|
||||
"evidence": [
|
||||
"daysUntil/marginPercent pure helpers",
|
||||
"Filters composable with search and stock stats",
|
||||
"No backend changes required"
|
||||
],
|
||||
"timestamp": "2026-08-21T08:05:01Z"
|
||||
}
|
||||
11
work/artifacts/F-110/security.json
Normal file
11
work/artifacts/F-110/security.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"feature_id": "F-110",
|
||||
"agent": "security",
|
||||
"verdict": "APPROVED",
|
||||
"summary": "Client-side presentation only; no new endpoints, inputs, or auth changes; EAN/stock edits reuse existing admin-authenticated APIs.",
|
||||
"evidence": [
|
||||
"No new write surface",
|
||||
"Existing auth preserved"
|
||||
],
|
||||
"timestamp": "2026-08-21T08:05:01Z"
|
||||
}
|
||||
Reference in New Issue
Block a user