fix(landing): Trade-In nav как внешний <a> на /trade-in/v2 (ChunkLoadError) #2365

Merged
bot-backend merged 1 commit from fix/landing-tradein-nav-external into main 2026-07-04 01:10:59 +00:00
Collaborator

Что

Пункт «Trade-In» в навбаре лендинга теперь рендерится обычным <a href="/trade-in/v2"> вместо внутреннего <Link href="/trade-in/">: новый флаг NavItem.external, ветка рендера без prefetch/клиентской навигации.

Зачем

/trade-in* в проде затенён Caddy (matcher @tradein, проксируется в отдельный контейнер tradein-frontend с basePath=/trade-in, который 307-ит /trade-in/trade-in/v2). Внутренний <Link> заставлял Next префетчить RSC-payload чужого маршрута → 307 вместо RSC → консоль каждого посетителя лендинга: «Failed to fetch RSC payload for /trade-in» + ChunkLoadError (пойман journey-смоуком 2026-07-04).

Проверки

  • pilot-ACL не задет: глоб /trade-in/** матчит /trade-in/v2 — кейс добавлен в isPathAllowed.test.ts (vitest 27 passed)
  • tsc --noEmit / prettier / next lint — чисто
  • code-reviewer: APPROVE без замечаний
  • frontend/src/app/trade-in/page.tsx не тронута (в dev без Caddy живёт)

Post-merge

Консоль лендинга gendsgn.ru без ChunkLoadError/RSC-ошибок; ссылка Trade-In ведёт сразу на /trade-in/v2 (200 без 307).

## Что Пункт «Trade-In» в навбаре лендинга теперь рендерится обычным `<a href="/trade-in/v2">` вместо внутреннего `<Link href="/trade-in/">`: новый флаг `NavItem.external`, ветка рендера без prefetch/клиентской навигации. ## Зачем `/trade-in*` в проде затенён Caddy (matcher `@tradein`, проксируется в отдельный контейнер tradein-frontend с basePath=/trade-in, который 307-ит `/trade-in` → `/trade-in/v2`). Внутренний `<Link>` заставлял Next префетчить RSC-payload чужого маршрута → 307 вместо RSC → консоль каждого посетителя лендинга: «Failed to fetch RSC payload for /trade-in» + ChunkLoadError (пойман journey-смоуком 2026-07-04). ## Проверки - pilot-ACL не задет: глоб `/trade-in/**` матчит `/trade-in/v2` — кейс добавлен в isPathAllowed.test.ts (vitest 27 passed) - `tsc --noEmit` / prettier / next lint — чисто - code-reviewer: ✅ APPROVE без замечаний - `frontend/src/app/trade-in/page.tsx` не тронута (в dev без Caddy живёт) ## Post-merge Консоль лендинга gendsgn.ru без ChunkLoadError/RSC-ошибок; ссылка Trade-In ведёт сразу на /trade-in/v2 (200 без 307).
bot-backend added 1 commit 2026-07-04 01:08:00 +00:00
fix(landing): render Trade-In nav item as external <a> to /trade-in/v2
All checks were successful
CI / changes (pull_request) Successful in 7s
CI Trade-In / changes (pull_request) Successful in 7s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 57s
CI / openapi-codegen-check (pull_request) Successful in 2m8s
12cf59b276
/trade-in/** is proxied by Caddy to a separate tradein-frontend app
(basePath /trade-in, canonical /trade-in/v2). The internal <Link
href="/trade-in/"> made Next prefetch an RSC payload for a route this
app doesn't own -> Caddy returns the other app's 307 -> 'Failed to fetch
RSC payload for /trade-in' + ChunkLoadError in the console on every
landing visit. Add NavItem.external; external items render a plain <a>
(no prefetch/client-nav) pointing at the canonical /trade-in/v2. Pilot
ACL unaffected: /trade-in/v2 still matches the /trade-in/** allow glob
(test added).
bot-backend merged commit 38f703c8ec into main 2026-07-04 01:10:59 +00:00
bot-backend deleted branch fix/landing-tradein-nav-external 2026-07-04 01:10:59 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2365
No description provided.