57 lines
2.3 KiB
Markdown
57 lines
2.3 KiB
Markdown
# 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.
|
|
|
|
```diff
|
|
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). |