feat(F-089): completed feature

This commit is contained in:
chattie
2026-08-20 21:34:12 +02:00
parent fbf6eeae25
commit a591992840
10 changed files with 158 additions and 9 deletions

View File

@@ -4059,6 +4059,38 @@
"close": true "close": true
}, },
"completed_at": "2026-08-20T19:29:14Z" "completed_at": "2026-08-20T19:29:14Z"
},
{
"id": "F-089",
"type": "fix",
"title": "Product listing link uses storefront /productos route instead of frontend /products route",
"problem": "The active product link in the admin product listing points to the storefront Spanish route /productos/:slug, but the customer frontend served on port 3003 exposes product detail at /products/:slug. Clicking the listing link lands on the wrong application route.",
"goal": "Use the frontend customer route /products/:slug for the product listing link so operators open the correct product page on port 3003.",
"scope_in": [
"admin product listing"
],
"scope_out": [
"No backend or storefront changes; no URL redesign"
],
"priority": "med",
"risk": "low",
"description": "Problem: The active product link in the admin product listing points to the storefront Spanish route /productos/:slug, but the customer frontend served on port 3003 exposes product detail at /products/:slug. Clicking the listing link lands on the wrong application route.. Goal: Use the frontend customer route /products/:slug for the product listing link so operators open the correct product page on port 3003.. Scope IN: admin product listing. Scope OUT: No backend or storefront changes; no URL redesign. Type: fix. Priority: med. Risk: low.",
"acceptance": [
"- Active product links from the admin listing use http://192.168.18.93:3003/products/:slug",
"- The link no longer uses the /productos/:slug path",
"- Existing target blank and safe rel attributes remain unchanged",
"- Admin typecheck/lint pass",
"- verify.sh is green"
],
"status": "done",
"created_at": "2026-08-20",
"gates": {
"reviewer": true,
"security": true,
"qa": true,
"close": true
},
"completed_at": "2026-08-20T19:34:12Z"
} }
] ]
} }

View File

@@ -262,7 +262,7 @@ export default function ProductsPage() {
<td className="px-4 py-3"> <td className="px-4 py-3">
{p.state === 'active' ? ( {p.state === 'active' ? (
<a <a
href={`http://192.168.18.93:3003/productos/${p.slug}`} href={`http://192.168.18.93:3003/products/${p.slug}`}
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
title="Ver en la tienda" title="Ver en la tienda"

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,16 @@
# F-089 — Implementer evidence
## Change
Updated the active-product link in `project/apps/admin/src/app/(dashboard)/products/page.tsx`:
- Before: `http://192.168.18.93:3003/productos/${p.slug}`
- After: `http://192.168.18.93:3003/products/${p.slug}`
The link still opens in a new tab and keeps `rel="noopener noreferrer"` and click propagation behavior unchanged.
## Validation
- `cd project/apps/admin && npx tsc --noEmit` → exit 0
- `cd project/apps/admin && npx eslint 'src/app/(dashboard)/products/page.tsx'` → 0 errors (3 pre-existing warnings)
- Search confirms the old `3003/productos/${p.slug}` link is absent from the admin product listing.

View File

@@ -0,0 +1,15 @@
{
"feature_id": "F-089",
"agent": "leader",
"verdict": "APPROVED",
"summary": "F-089 corrects the admin product listing link to the customer frontend /products/:slug route.",
"evidence": [
"reviewer.json verdict=APPROVED",
"security.json verdict=APPROVED",
"qa.json verdict=APPROVED",
"scripts/verify.sh exit 0",
"project/apps/admin npx tsc --noEmit exit 0",
"Old /productos listing path absent; new /products path present"
],
"timestamp": "2026-08-20T19:34:20Z"
}

View File

@@ -0,0 +1,14 @@
{
"feature_id": "F-089",
"agent": "qa",
"verdict": "APPROVED",
"summary": "The admin listing route correction passes static route regression, TypeScript, lint, and harness verification.",
"evidence": [
"Admin listing contains http://192.168.18.93:3003/products/${p.slug}",
"No old 3003/productos/${p.slug} listing link remains",
"project/apps/admin npx tsc --noEmit exit 0",
"project/apps/admin eslint touched page exit 0 with warnings only",
"scripts/verify.sh exit 0"
],
"timestamp": "2026-08-20T19:34:10Z"
}

View File

@@ -0,0 +1,13 @@
{
"feature_id": "F-089",
"agent": "reviewer",
"verdict": "APPROVED",
"summary": "The admin product listing now links active products to the customer frontend's /products/:slug route; unrelated link behavior is unchanged.",
"evidence": [
"Changed only project/apps/admin/src/app/(dashboard)/products/page.tsx",
"Old /productos/:slug path removed from the listing link",
"New /products/:slug path matches project/frontend/src/app/products/[slug]/page.tsx",
"Admin TypeScript check passes"
],
"timestamp": "2026-08-20T19:33:40Z"
}

View File

@@ -0,0 +1,13 @@
{
"feature_id": "F-089",
"agent": "security",
"verdict": "APPROVED",
"summary": "The change only corrects a same-host route path. Existing new-tab protections remain in place and no user-controlled URL construction or dependency changes were introduced.",
"evidence": [
"URL remains the fixed configured frontend host on port 3003",
"Slug interpolation behavior is unchanged",
"target=\"_blank\" retains rel=\"noopener noreferrer\"",
"No backend, auth, dependency, or secret changes"
],
"timestamp": "2026-08-20T19:33:50Z"
}

View File

@@ -1,11 +1,15 @@
# Feature actual # Feature actual
## Feature activa: ninguna — F-088 cerrada ## Feature activa: F-089 (in_progress) — Product listing link uses `/productos` instead of frontend `/products`
Backlog: 156 features (147 done, 9 pending, 0 in_progress). Backlog: 157 features (147 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**. Últimas features cerradas: **F-080**, **F-081**, **F-082**, **F-083**, **F-084**, **F-085**, **F-086**, **F-087**.
## Incidencia actual (2026-08-20)
El enlace de producto del listado admin apunta a `http://192.168.18.93:3003/productos/<slug>`, pero el frontend customer usa `/products/<slug>`. F-089 corrige únicamente ese path.
## Última incidencia resuelta (2026-08-20) ## Última incidencia resuelta (2026-08-20)
F-088 cerrada con todos los gates aprobados. El admin responde HTTP 200 en `http://192.168.18.93:3004/`. F-088 cerrada con todos los gates aprobados. El admin responde HTTP 200 en `http://192.168.18.93:3004/`.

View File

@@ -1,12 +1,12 @@
{ {
"feature_id": "F-088", "feature_id": "F-089",
"stage": "close", "stage": "close",
"agent": "leader", "agent": "leader",
"action": "F-088 cerrado: admin :3004 verificado HTTP 200 y verify.sh verde", "action": "Validate F-089 gates and close route correction",
"state": "done", "state": "running",
"next_agent": "leader", "next_agent": "leader",
"waiting_for": "Seleccionar la siguiente feature pending", "waiting_for": "verify.sh green",
"updated_at": "2026-08-20T19:29:27Z", "updated_at": "2026-08-20T19:34:01Z",
"timeline": [ "timeline": [
{ {
"ts": "2026-08-20T19:15:36Z", "ts": "2026-08-20T19:15:36Z",
@@ -56,6 +56,48 @@
"stage": "close", "stage": "close",
"state": "done", "state": "done",
"message": "F-088 cerrado: admin :3004 verificado HTTP 200 y verify.sh verde" "message": "F-088 cerrado: admin :3004 verificado HTTP 200 y verify.sh verde"
},
{
"ts": "2026-08-20T19:32:56Z",
"agent": "leader",
"stage": "intake",
"state": "running",
"message": "Triage product listing link route mismatch: /productos vs frontend /products"
},
{
"ts": "2026-08-20T19:33:07Z",
"agent": "implementer",
"stage": "build",
"state": "running",
"message": "Change admin product listing link from /productos/:slug to frontend /products/:slug"
},
{
"ts": "2026-08-20T19:33:31Z",
"agent": "reviewer",
"stage": "review_gate",
"state": "running",
"message": "Review corrected customer frontend route in admin product listing"
},
{
"ts": "2026-08-20T19:33:41Z",
"agent": "security",
"stage": "security_gate",
"state": "running",
"message": "Check F-089 link-only change for unsafe URL or target behavior"
},
{
"ts": "2026-08-20T19:33:49Z",
"agent": "qa",
"stage": "qa_gate",
"state": "running",
"message": "Run F-089 route regression, admin typecheck/lint, and verify"
},
{
"ts": "2026-08-20T19:34:01Z",
"agent": "leader",
"stage": "close",
"state": "running",
"message": "Validate F-089 gates and close route correction"
} }
] ]
} }