49 lines
2.2 KiB
Markdown
49 lines
2.2 KiB
Markdown
# 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:
|
|
```js
|
|
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`. |