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,14 +2,39 @@
"feature_id": "F-085",
"verdict": "APPROVED",
"trace": [
{ "acceptance": "TIPO cell enters edit mode on click and shows a select with allowed types", "result": "PASS", "evidence": "Button onClick sets tipoEditing; render switches to select with the three options." },
{ "acceptance": "Selecting a new type and confirming triggers PATCH /tax-rates/:id", "result": "PASS", "evidence": "onChange calls saveTipo → taxApi.update(id, { appliesTo })." },
{ "acceptance": "Invalid types are rejected client and server side", "result": "PASS", "evidence": "Client select only offers three options; server Zod enum rejects anything else with 400." },
{ "acceptance": "Successful change is reflected in the cell without a full page reload", "result": "PASS", "evidence": "rates.map updates the row in-place after PATCH success." },
{ "acceptance": "verify.sh is green", "result": "PASS", "evidence": "tsc exit 0; eslint exit 0." }
{
"acceptance": "TIPO cell enters edit mode on click and shows a select with allowed types",
"result": "PASS",
"evidence": "Button onClick sets tipoEditing; render switches to select with the three options."
},
{
"acceptance": "Selecting a new type and confirming triggers PATCH /tax-rates/:id",
"result": "PASS",
"evidence": "onChange calls saveTipo → taxApi.update(id, { appliesTo })."
},
{
"acceptance": "Invalid types are rejected client and server side",
"result": "PASS",
"evidence": "Client select only offers three options; server Zod enum rejects anything else with 400."
},
{
"acceptance": "Successful change is reflected in the cell without a full page reload",
"result": "PASS",
"evidence": "rates.map updates the row in-place after PATCH success."
},
{
"acceptance": "verify.sh is green",
"result": "PASS",
"evidence": "tsc exit 0; eslint exit 0."
}
],
"regression_checks": [
"Tasa inline edit",
"Estado toggle",
"Active filter"
],
"regression_checks": ["Tasa inline edit", "Estado toggle", "Active filter"],
"verdict_reason": "All acceptance criteria trace to PASS.",
"reviewer": "qa",
"reviewed_at": "2026-08-20T04:14:00Z"
}
"reviewed_at": "2026-08-20T04:14:00Z",
"agent": "qa"
}

View File

@@ -2,15 +2,38 @@
"feature_id": "F-085",
"verdict": "APPROVED",
"checks": [
{ "name": "Backend accepts appliesTo in PATCH body", "result": "PASS", "notes": "Zod enum validates 'general' | 'reduced' | 'super-reduced'." },
{ "name": "Backend writes applies_to column", "result": "PASS", "notes": "New branch sets `applies_to = $N` only when patch.appliesTo defined." },
{ "name": "Admin cell is click-to-edit", "result": "PASS", "notes": "Button → select with autoFocus; onChange PATCH; onBlur closes." },
{ "name": "State updates without full reload", "result": "PASS", "notes": "rates.map writes the new appliesTo into the row." },
{ "name": "Other columns unaffected", "result": "PASS", "notes": "Tasa, Estado and Acciones still use the existing edit pattern / toggles." }
{
"name": "Backend accepts appliesTo in PATCH body",
"result": "PASS",
"notes": "Zod enum validates 'general' | 'reduced' | 'super-reduced'."
},
{
"name": "Backend writes applies_to column",
"result": "PASS",
"notes": "New branch sets `applies_to = $N` only when patch.appliesTo defined."
},
{
"name": "Admin cell is click-to-edit",
"result": "PASS",
"notes": "Button → select with autoFocus; onChange PATCH; onBlur closes."
},
{
"name": "State updates without full reload",
"result": "PASS",
"notes": "rates.map writes the new appliesTo into the row."
},
{
"name": "Other columns unaffected",
"result": "PASS",
"notes": "Tasa, Estado and Acciones still use the existing edit pattern / toggles."
}
],
"lint": { "errors_introduced": 0 },
"lint": {
"errors_introduced": 0
},
"typecheck": "PASS",
"verdict_reason": "Backend extended with one optional field + UI swap; behaviour matches acceptance.",
"reviewer": "reviewer",
"reviewed_at": "2026-08-20T04:13:00Z"
}
"reviewed_at": "2026-08-20T04:13:00Z",
"agent": "reviewer"
}

View File

@@ -2,14 +2,27 @@
"feature_id": "F-085",
"verdict": "APPROVED",
"checks": [
{ "name": "Enum validation", "result": "PASS", "notes": "Zod enum rejects arbitrary strings; no SQL injection." },
{ "name": "Auth/RBAC unchanged", "result": "PASS", "notes": "Same admin-only route." },
{ "name": "Dependencies", "result": "PASS", "notes": "No new packages." }
{
"name": "Enum validation",
"result": "PASS",
"notes": "Zod enum rejects arbitrary strings; no SQL injection."
},
{
"name": "Auth/RBAC unchanged",
"result": "PASS",
"notes": "Same admin-only route."
},
{
"name": "Dependencies",
"result": "PASS",
"notes": "No new packages."
}
],
"sast": "PASS",
"dependency_review": "PASS",
"secret_scan": "PASS",
"verdict_reason": "Same admin-only surface; new field strictly validated.",
"reviewer": "security",
"reviewed_at": "2026-08-20T04:13:30Z"
}
"reviewed_at": "2026-08-20T04:13:30Z",
"agent": "security"
}