feat(F-088): completed feature

This commit is contained in:
chattie
2026-08-20 21:29:14 +02:00
parent 63fdc775d9
commit 699c01ade5
40 changed files with 996 additions and 381 deletions

View File

@@ -2,16 +2,43 @@
"feature_id": "F-082",
"verdict": "APPROVED",
"checks": [
{ "name": "Stock cell is click-to-edit (no pencil)", "result": "PASS", "notes": "Both /inventory page and InventorySection: cell <button> value -> <input autoFocus>; no ✏️ anywhere." },
{ "name": "All editable cells save on blur or Enter", "result": "PASS", "notes": "SKU, EAN, Stock, Precio neto all use onBlur + Enter (Escape cancels) via dedicated save handlers." },
{ "name": "Persisted via existing PATCH /variants/:id and pricing endpoints", "result": "PASS", "notes": "productsApi.updateVariant for sku/ean; pricingApi.setVariantPrice for price; inventoryApi.setStock for stock." },
{ "name": "Failed save restores previous value", "result": "PASS", "notes": "catch blocks in saveStock/savePrice/saveSku/saveEan reset the edit field from r.variant/r.price and set saveMsg = 'Error'." },
{ "name": "Visual feedback on success", "result": "PASS", "notes": "saveMsg shows '✓ Guardado' for 3s after success." },
{ "name": "No regressions", "result": "PASS", "notes": "PricingSection.tsx untouched; only inventory files changed." }
{
"name": "Stock cell is click-to-edit (no pencil)",
"result": "PASS",
"notes": "Both /inventory page and InventorySection: cell <button> value -> <input autoFocus>; no ✏️ anywhere."
},
{
"name": "All editable cells save on blur or Enter",
"result": "PASS",
"notes": "SKU, EAN, Stock, Precio neto all use onBlur + Enter (Escape cancels) via dedicated save handlers."
},
{
"name": "Persisted via existing PATCH /variants/:id and pricing endpoints",
"result": "PASS",
"notes": "productsApi.updateVariant for sku/ean; pricingApi.setVariantPrice for price; inventoryApi.setStock for stock."
},
{
"name": "Failed save restores previous value",
"result": "PASS",
"notes": "catch blocks in saveStock/savePrice/saveSku/saveEan reset the edit field from r.variant/r.price and set saveMsg = 'Error'."
},
{
"name": "Visual feedback on success",
"result": "PASS",
"notes": "saveMsg shows '✓ Guardado' for 3s after success."
},
{
"name": "No regressions",
"result": "PASS",
"notes": "PricingSection.tsx untouched; only inventory files changed."
}
],
"lint": { "errors_introduced": 0 },
"lint": {
"errors_introduced": 0
},
"typecheck": "PASS",
"verdict_reason": "Standardised click-to-edit UX across both inventory surfaces; same pattern in three places (stock, price, sku/ean).",
"reviewer": "reviewer",
"reviewed_at": "2026-08-20T04:05:00Z"
}
"reviewed_at": "2026-08-20T04:05:00Z",
"agent": "reviewer"
}