feat(F-094): completed feature

This commit is contained in:
chattie
2026-08-20 22:01:54 +02:00
parent c56037492d
commit 418bdca7f4
14 changed files with 305 additions and 58 deletions

View File

@@ -0,0 +1,14 @@
# F-094 — Implementer evidence
## Changes
- Added `VariantManager` to the Publish tab with a plain-language explanation of variants, SKU, and EAN.
- Added SKU-required/EAN-optional variant creation using the existing `POST /products/:id/variants` API.
- Added existing variant list and inline success/conflict feedback.
- Added `productsApi.createVariant`.
- Updated Pricing and Inventory empty states to point to the now-existing Publish workflow.
## Validation
- Admin `npx tsc --noEmit` → exit 0
- Admin ESLint on touched files → 0 errors (pre-existing warnings only)

View File

@@ -0,0 +1,14 @@
{
"feature_id": "F-094",
"agent": "leader",
"verdict": "APPROVED",
"summary": "F-094 adds an understandable variant creation workflow to Publish and fixes the misleading empty-state guidance.",
"evidence": [
"reviewer.json verdict=APPROVED",
"security.json verdict=APPROVED",
"qa.json verdict=APPROVED",
"Root tests: 133 passed, 56 skipped",
"scripts/verify.sh exit 0"
],
"timestamp": "2026-08-20T20:01:50Z"
}

View File

@@ -0,0 +1,13 @@
{
"feature_id": "F-094",
"agent": "qa",
"verdict": "APPROVED",
"summary": "Publish variant management passes admin checks, the root test suite, and harness verification.",
"evidence": [
"Admin npx tsc --noEmit exit 0",
"Admin ESLint touched files exit 0 with warnings only",
"Root tests: 133 passed, 56 skipped",
"scripts/verify.sh exit 0"
],
"timestamp": "2026-08-20T20:01:40Z"
}

View File

@@ -0,0 +1,14 @@
{
"feature_id": "F-094",
"agent": "reviewer",
"verdict": "APPROVED",
"summary": "Publish now contains a clear variant workflow backed by the existing create/list endpoints, and empty states point to a real action.",
"evidence": [
"VariantManager explains sellable variants, SKU, and EAN",
"Create form uses SKU required and EAN optional",
"Successful creation updates the list without reload",
"Duplicate API conflicts are shown to the operator",
"Pricing and Inventory messages no longer reference a missing UI"
],
"timestamp": "2026-08-20T20:01:10Z"
}

View File

@@ -0,0 +1,13 @@
{
"feature_id": "F-094",
"agent": "security",
"verdict": "APPROVED",
"summary": "The UI uses the existing authenticated admin variant endpoint; server-side SKU/EAN validation and uniqueness remain authoritative.",
"evidence": [
"No new backend route or authorization bypass",
"SKU is required in the UI and backend schema validates all fields",
"Duplicate SKU/EAN remains rejected by database constraints",
"No secrets, unsafe HTML, or dependencies added"
],
"timestamp": "2026-08-20T20:01:20Z"
}

View File

@@ -1,14 +1,22 @@
# Feature actual
## Feature activa: F-093 (in_progress) — Inventory search by product name or EAN
## Feature activa: F-094 (in_progress) — Create and explain product variants from Publish tab
Backlog: 161 features (151 done, 9 pending, 1 in_progress).
Backlog: 162 features (152 done, 9 pending, 1 in_progress).
Últimas features cerradas: **F-080**, **F-081**, **F-082**, **F-083**, **F-084**, **F-085**, **F-086**, **F-087**.
## Incidencia actual (2026-08-20)
La búsqueda de Inventario envía `q`, pero el listado admin solo filtra por nombre de producto. F-093 añade coincidencias por EAN de variante y actualiza el placeholder a EAN o nombre.
Precios e Inventario indican que las variantes se crean desde Publicar, pero Publicar no ofrece creación ni explicación. F-094 añade la gestión de variantes allí.
## Última incidencia resuelta (2026-08-20)
F-093 cerrada con todos los gates aprobados. Inventario busca ahora por EAN o nombre de producto.
## Incidencia anterior (2026-08-20)
La búsqueda de Inventario enviaba `q`, pero el listado admin solo filtraba por nombre de producto.
## Última incidencia resuelta (2026-08-20)

View File

@@ -1,62 +1,13 @@
{
"feature_id": "F-093",
"feature_id": "F-094",
"stage": "close",
"agent": "leader",
"action": "Validate F-093 gates and close inventory EAN/name search",
"action": "Validate F-094 gates and close variant workflow",
"state": "running",
"next_agent": "leader",
"waiting_for": "verify.sh green",
"updated_at": "2026-08-20T19:57:34Z",
"updated_at": "2026-08-20T20:01:42Z",
"timeline": [
{
"ts": "2026-08-20T19:44:59Z",
"agent": "leader",
"stage": "intake",
"state": "running",
"message": "Triage repeated variant PATCH 409 and opaque SKU/EAN conflict feedback"
},
{
"ts": "2026-08-20T19:45:13Z",
"agent": "implementer",
"stage": "build",
"state": "running",
"message": "Add field-specific SKU/EAN conflict messages and guard duplicate in-flight saves"
},
{
"ts": "2026-08-20T19:46:54Z",
"agent": "reviewer",
"stage": "review_gate",
"state": "running",
"message": "Review duplicate variant conflict mapping and in-flight save guard"
},
{
"ts": "2026-08-20T19:47:03Z",
"agent": "security",
"stage": "security_gate",
"state": "running",
"message": "Check F-091 uniqueness enforcement and error disclosure"
},
{
"ts": "2026-08-20T19:47:11Z",
"agent": "qa",
"stage": "qa_gate",
"state": "running",
"message": "Run F-091 typecheck, tests, lint, and verify"
},
{
"ts": "2026-08-20T19:47:22Z",
"agent": "leader",
"stage": "close",
"state": "running",
"message": "Validate F-091 gates and close SKU/EAN conflict fix"
},
{
"ts": "2026-08-20T19:47:40Z",
"agent": "leader",
"stage": "close",
"state": "done",
"message": "F-091 cerrado: conflictos SKU/EAN identificados y doble envío prevenido"
},
{
"ts": "2026-08-20T19:48:12Z",
"agent": "leader",
@@ -147,6 +98,55 @@
"stage": "close",
"state": "running",
"message": "Validate F-093 gates and close inventory EAN/name search"
},
{
"ts": "2026-08-20T19:58:08Z",
"agent": "leader",
"stage": "close",
"state": "done",
"message": "F-093 cerrado: búsqueda de Inventario por EAN o nombre"
},
{
"ts": "2026-08-20T19:58:26Z",
"agent": "leader",
"stage": "intake",
"state": "running",
"message": "Triage missing variant creation UI and explanation in Publish tab"
},
{
"ts": "2026-08-20T19:58:57Z",
"agent": "implementer",
"stage": "build",
"state": "running",
"message": "Add Publish variant manager, API create method, and clear empty-state guidance"
},
{
"ts": "2026-08-20T20:00:59Z",
"agent": "reviewer",
"stage": "review_gate",
"state": "running",
"message": "Review Publish variant creation UX and API integration"
},
{
"ts": "2026-08-20T20:01:10Z",
"agent": "security",
"stage": "security_gate",
"state": "running",
"message": "Check variant creation validation, uniqueness, and authorization"
},
{
"ts": "2026-08-20T20:01:22Z",
"agent": "qa",
"stage": "qa_gate",
"state": "running",
"message": "Run variant manager typecheck, tests, lint, and verify"
},
{
"ts": "2026-08-20T20:01:42Z",
"agent": "leader",
"stage": "close",
"state": "running",
"message": "Validate F-094 gates and close variant workflow"
}
]
}