Files
mercadodevida/work/artifacts/F-126/architect.md
2026-08-21 18:16:54 +02:00

2.2 KiB

F-126 — Buscador /inventory por EAN o nombre

Diagnóstico

Este ticket está resuelto por F-131. No requiere código nuevo.

El inventario busca vía productsApi.list({ q: debouncedSearch }):

  1. apps/admin/src/app/(dashboard)/inventory/page.tsx:103 — pasa q: debouncedSearch a la API
  2. apps/admin/src/lib/api-client.ts:66 — construye /api/catalog/products?q=…&limit=100
  3. Antes de F-131: el proxy catch-all apps/admin/src/app/api/[...path]/route.ts descartaba el query string → el backend recibía /catalog/products?limit=100 (sin q) → devolvía todos los productos.
  4. Después de F-131: el proxy concatena req.nextUrl.search → el backend recibe ?q=… → filtra correctamente.

El backend src/modules/catalog/infrastructure/pg-product-repository.ts:188 (listAll) ya implementaba ILIKE sobre name y ean desde antes. La causa raíz del síntoma era exclusivamente el proxy.

Verificación

Build del admin (con F-131 aplicado)

apps/admin/.next/server/chunks/_1u9yuco._.js contiene:

async function i(e) {  // DELETE handler
  return new Response(e.body, { status: e.status, ... })
}
async function r(e) {  // GET handler
  ...
  const n = e.nextUrl.search;
  ...
  fetch(`${a}/${r}${n}`, { headers: { Cookie: s } });
  ...
}

req.nextUrl.search está presente en el bundle compilado → F-131 efectivo.

Live (admin proceso actual)

El admin proceso (PID 97639) está sirviendo el bundle antiguo (construido antes de F-131). El operador debe reiniciar para que el nuevo bundle entre en servicio. Sin ese restart, /inventory?q=… sigue mostrando todos los productos aunque el código fuente ya tenga el fix.

Plan

  1. Cerrar F-126 sin código adicional: el fix ya está commiteado en F-131.
  2. Verificación manual del operador tras restart:
    • curl /api/catalog/products?q=almendra → 1 resultado
    • UI /inventory: escribir "almendra" en el buscador → muestra solo el producto coincidente.
  3. Si tras el restart la búsqueda sigue rota, abrir ticket nuevo.

Notas

  • F-126 fue un duplicado conceptual de F-131. Ambos comparten causa raíz (proxy que perdía query string).
  • Sin cambios de código en este ticket.
  • Operador: ./scripts/monolith.sh prod restart.