chore(dash-remove-variants-card): dashboard: remove variants KPI cards (Sin stock + Alertas)

This commit is contained in:
Deploy
2026-08-27 23:28:43 +02:00
parent 1376d3e4f0
commit dcd1b2fc41
9 changed files with 403 additions and 54 deletions

View File

@@ -0,0 +1,83 @@
{
"feature_id": "DASH-REMOVE-VARIANTS-CARD",
"verdict": "APPROVED",
"agent": "reviewer",
"reviewer": "reviewer",
"reviewed_at": "2026-08-27T21:28:30Z",
"scope": [
"project/apps/admin/src/app/(dashboard)/page.tsx"
],
"summary": "Chore trivial bien ejecutado. Las 2 KPI cards con referencia a 'variantes' se eliminaron; los grids se rebalancearon limpiamente (4→3 y 3→2 columnas). Typecheck verde. Verify verde. Sin regresiones en otros componentes del dashboard (Orders by state + Quick actions intactos). Backend intacto — outOfStockVariants sigue disponible en /api/admin/stats. Verdict: APPROVED.",
"checks": [
{
"id": "typecheck",
"description": "TypeScript verde en admin",
"command": "cd project/apps/admin && npx tsc --noEmit",
"result": "PASS",
"evidence": "Exit 0, sin output."
},
{
"id": "verify-sh",
"description": "verify.sh verde",
"command": "./scripts/verify.sh",
"result": "PASS",
"evidence": "[OK] Orquestra verificado. Puedes trabajar."
},
{
"id": "diff-minimal",
"description": "Diff mínimo (solo lo pedido)",
"command": "git diff --stat project/apps/admin/src/app/(dashboard)/page.tsx",
"result": "PASS",
"evidence": "1 file changed, 2 insertions(+), 19 deletions(-). Solo grids + 2 cards eliminados. Cero cambios colaterales."
},
{
"id": "no-variant-references",
"description": "Cero referencias a 'variant' en el dashboard renderizado",
"command": "grep -nE 'variant' project/apps/admin/src/app/(dashboard)/page.tsx",
"result": "PASS",
"evidence": "Sin matches. Antes había 'Variantes agotadas' (sub del card Sin stock) y 'X sin stock' (sub del card Alertas). Ambos eliminados."
},
{
"id": "orders-by-state-intact",
"description": "Sección 'Pedidos por estado' intacta",
"command": "git diff project/apps/admin/src/app/(dashboard)/page.tsx | grep -E 'OrderStateBar|ordersByState'",
"result": "PASS",
"evidence": "Sin cambios. La sección con el bar chart por estado no se tocó."
},
{
"id": "quick-actions-intact",
"description": "Sección 'Acciones rápidas' intacta",
"command": "git diff project/apps/admin/src/app/(dashboard)/page.tsx | grep -E 'Quick actions|Nuevo producto|Ver pedidos|Revisar stock'",
"result": "PASS",
"evidence": "Sin cambios. Las 4 acciones rápidas (+ Nuevo producto, Ver pedidos, Revisar stock, Clientes) siguen ahí."
},
{
"id": "out-of-stock-in-interface-ok",
"description": "Mantener outOfStockVariants en interface no es dead code (defensive)",
"command": "code review",
"result": "PASS",
"evidence": "El interface Stats sigue declarando outOfStockVariants. No es dead code: el backend sigue devolviéndolo y podría ser consumido por otros componentes (e.g., el bell ya consume de un endpoint distinto). Mantener la propiedad evita romper el contrato del API response."
},
{
"id": "grid-rebalance-coherent",
"description": "Grids rebalanceados coherentes",
"command": "git diff project/apps/admin/src/app/(dashboard)/page.tsx | grep -E 'grid-cols'",
"result": "PASS",
"evidence": "Primaria: 4 → 3 columnas (3 cards). Secundaria: 3 → 2 columnas (2 cards). Ambos grids siguen siendo `grid-cols-2` en mobile (responsive correcto)."
}
],
"findings": [],
"nits": [
{
"id": "nit-1",
"severity": "info",
"description": "El campo `outOfStockVariants` en el interface Stats ahora es unused localmente. TS no se queja (interfaces no son runtime checks), pero un linter estricto podría marcarlo.",
"suggested_action": "Dejarlo. Eliminarlo sería romper el contrato con el backend sin motivo. Si en el futuro se quiere limpiar, abrir ticket dedicado."
}
],
"verdict_rationale": "Cambio trivial, diff mínimo, build verde, verify verde, sin regresiones, scope respetado. APPROVED.",
"evidence_paths": [
"work/artifacts/DASH-REMOVE-VARIANTS-CARD/implementer.md",
"project/apps/admin/src/app/(dashboard)/page.tsx"
]
}