Skip to content

fix(frontend): 504 total en prod — conflicto de slugs [id]/[family_id] en Next#64

Merged
gonzaloMorenoc merged 1 commit into
mainfrom
fix/mnemo-next-slug-conflict
Jul 2, 2026
Merged

fix(frontend): 504 total en prod — conflicto de slugs [id]/[family_id] en Next#64
gonzaloMorenoc merged 1 commit into
mainfrom
fix/mnemo-next-slug-conflict

Conversation

@gonzaloMorenoc

Copy link
Copy Markdown
Owner

🔴 Incidente: producción caída (504 en todo /api/v2/*)

https://mnemo-beta-one.vercel.app/api/v2/orgs (y cualquier /api/v2/*) devolvía 504. Causa raíz encontrada en los logs de runtime de Vercel:

GET /api/v2/orgs 504
Unhandled Rejection: Error: You cannot use different slug names for the same dynamic path ('family_id' !== 'id').

La función serverless de Next crashea al construir el árbol de rutas porque convivían dos segmentos dinámicos con nombres distintos en la misma posición:

  • src/app/api/v2/defects/[id]/… (lineage, root-cause)
  • src/app/api/v2/defects/[family_id]/label/…

Cuando el route tree crashea, todas las funciones 504ean, no solo defects → por eso /orgs (que no tiene nada que ver) también caía. NO era el backend ni un cold-start.

Por qué no se detectó antes: es un crash de runtime, no de build. next build compila y pasa ("Compiled successfully") sin catarlo — por eso pasó el CI y mi verificación local. El [family_id]/label venía de un commit antiguo (#57); quedó latente.

Fix

  • defects/[family_id]/labeldefects/[id]/label (un único slug bajo defects/). El handler pasa a params.id; la URL que llama el frontend no cambia (Next casa por posición).
  • Test de regresión en route-parity.test.ts: falla si dos directorios dinámicos hermanos usan nombres de slug distintos — la clase de bug que next build no caza.

Verificación

  • Escaneo de todo src/app: no queda ningún otro parent con >1 slug dinámico.
  • next build limpio OK; tsc EXIT=0; lint:ci limpio; 187 tests.
  • Runtime: next dev + curl /api/v2/orgs → el proxy responde limpio, 0 ocurrencias de "different slug names" en el log (antes: crash).

Acción tras merge

Mergear a main dispara el redeploy de Vercel → producción vuelve. (El backend en Render es un tema aparte; este PR arregla el 504 del frontend.)

https://claude.ai/code/session_01X1fZebDm9ABFwLU2v3mq46

…al en prod

Producción caía con 504 en TODO /api/v2/* (incluido /orgs): la función serverless
de Next crasheaba al construir el árbol de rutas con "You cannot use different slug
names for the same dynamic path ('family_id' !== 'id')". Convivían `defects/[id]`
(lineage, root-cause) y `defects/[family_id]/label` → dos slugs distintos en la
misma posición. Es un crash de RUNTIME que `next build` NO detecta (por eso pasó
CI y build local).

- `defects/[family_id]/label` → `defects/[id]/label` (handler usa params.id; la
  URL que llama el front no cambia, Next casa por posición).
- test de regresión en route-parity: falla si dos dirs dinámicos hermanos usan
  nombres de slug distintos (lo que `next build` no cataría).

Claude-Session: https://claude.ai/code/session_01X1fZebDm9ABFwLU2v3mq46
@vercel

vercel Bot commented Jul 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
mnemo Ready Ready Preview, Comment Jul 2, 2026 5:07pm

@gonzaloMorenoc gonzaloMorenoc merged commit 9e0e3f2 into main Jul 2, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant