Files
mercadodevida/work/artifacts/F-131/implementer.md
2026-08-21 17:50:31 +02:00

2.3 KiB

F-131 — Reenviar query string en proxy catch-all del admin

Cambios

apps/admin/src/app/api/[...path]/route.ts

  • 5 handlers (GET, POST, PATCH, PUT, DELETE) actualizados para incluir req.nextUrl.search al construir la URL hacia el backend.
  • Antes: fetch(${API}/${path}, …) — descartaba cualquier query string.
  • Después: fetch(${API}/${path}${search}, …) — reenvía ?q=…&limit=…&offset=… al backend.
 export async function GET(req: NextRequest) {
   const path = req.nextUrl.pathname.replace('/api/', '');
+  const search = req.nextUrl.search;
-  const backendRes = await fetch(`${API}/${path}`, { … });
+  const backendRes = await fetch(`${API}/${path}${search}`, { … });

(Mismo patrón aplicado a POST, PATCH, PUT, DELETE.)

Verificación

Antes del fix

GET /catalog/products?q=almendra&limit=5  (directo al backend)
  → 200 { total: 1, items: ['Almendras Crudas Ecologicas'] }  ✅

GET /api/catalog/products?q=almendra&limit=5  (vía proxy del admin)
  → 200 { total: 13, items: [los 13 productos] }  ❌ (q se pierde)

Después del fix

  • apps/admin/.next/server/chunks/[root-of-the-server]__0tr-qzw._.js.map contiene:
    fetch(`${API}/${path}${search}`, { headers: { Cookie: cookies } })
    fetch(`${API}/${path}${search}`, { method: 'POST', … })
    fetch(`${API}/${path}${search}`, { method: 'PATCH', … })
    fetch(`${API}/${path}${search}`, { method: 'PUT', … })
    fetch(`${API}/${path}${search}`, { method: 'DELETE', … })
    
  • Los 5 handlers ahora reenvían search.

Tests

  • cd apps/admin && npx tsc --noEmit → exit 0.
  • cd apps/admin && NEXT_PUBLIC_API_URL=http://192.168.18.93:3000 npm run build → exit 0.

Impacto colateral

Este fix también repara:

  • F-126 (buscador /inventory): mismo síntoma, misma causa. Ahora ?q=… llega al backend.
  • Cualquier otro endpoint del admin que reciba query params (paginación ?limit=&offset=, filtros de fecha, etc.).
  • El frontend ya construye correctamente las URLs; el proxy era el cuello de botella.

Notas

  • El operador debe reiniciar el admin (./scripts/monolith.sh prod restart) para desplegar el bundle compilado.
  • Antes del restart, el bundle live en :3004 sigue con el bug (verificado: ?q=almendra aún devuelve 13 productos a través del proxy).