fix(tradein): не запекать preview-флаг в прод-образ + noindex/баннер (#2205) #2223

Merged
lekss361 merged 1 commit from fix/tradein-no-public-preview into main 2026-07-02 20:21:59 +00:00
Owner

Summary

  • Корневой фикс: из build-frontend (deploy-tradein.yml) убран build-arg NEXT_PUBLIC_ENABLE_PREVIEW=1 — фейк-оценка /trade-in/ui-preview/estimate (публично отдавала «9,70 млн ₽» для реального адреса Репина, verified live) больше не собирается в прод-образ.
  • Новый server-layout ui-preview/layout.tsx: robots: noindex/nofollow + серверный notFound()-гейт (belt-and-suspenders для случайно собранных с флагом окружений).
  • Видимый демо-баннер «ДЕМО-ДАННЫЕ… НЕ реальная оценка» на самой странице (для dev/CI, где preview легитимен для axe/lighthouse).

Известное ограничение (задокументировано в layout.tsx)

HTTP-статус остаётся 200: Next 15 коммитит статус до разрешения notFound() на матчнутом client-сегменте; тело = not-found boundary, фикстурные данные не отдаются, noindex присутствует. Жёсткий 404 = middleware.ts, вне скоупа.

Как проверено (локально, prod-симуляция)

  • npm run build без флага + npm start: /ui-preview/estimate — 0 совпадений «9,70»/«Репина»/фикстуры; <meta name="robots" content="noindex, nofollow"> присутствует.
  • Сборка с флагом (dev-режим): страница рендерится, баннер + noindex на месте — a11y-сценарии не сломаны.
  • type-check / lint / build — exit 0. code-reviewer: APPROVE.
  • CI a11y/lighthouse job с этим флагом не существует (проверено grep по workflows) — регрессий CI нет.

Post-deploy план

curl прод ui-preview → фикстурная сумма/адрес отсутствуют; /trade-in (реальный флоу) не задет пересборкой.

Refs #2205

## Summary - **Корневой фикс:** из `build-frontend` (deploy-tradein.yml) убран build-arg `NEXT_PUBLIC_ENABLE_PREVIEW=1` — фейк-оценка `/trade-in/ui-preview/estimate` (публично отдавала «9,70 млн ₽» для реального адреса Репина, verified live) больше не собирается в прод-образ. - Новый server-layout `ui-preview/layout.tsx`: `robots: noindex/nofollow` + серверный `notFound()`-гейт (belt-and-suspenders для случайно собранных с флагом окружений). - Видимый демо-баннер «ДЕМО-ДАННЫЕ… НЕ реальная оценка» на самой странице (для dev/CI, где preview легитимен для axe/lighthouse). ## Известное ограничение (задокументировано в layout.tsx) HTTP-статус остаётся 200: Next 15 коммитит статус до разрешения `notFound()` на матчнутом client-сегменте; тело = not-found boundary, **фикстурные данные не отдаются**, noindex присутствует. Жёсткий 404 = middleware.ts, вне скоупа. ## Как проверено (локально, prod-симуляция) - `npm run build` без флага + `npm start`: `/ui-preview/estimate` — 0 совпадений «9,70»/«Репина»/фикстуры; `<meta name="robots" content="noindex, nofollow">` присутствует. - Сборка с флагом (dev-режим): страница рендерится, баннер + noindex на месте — a11y-сценарии не сломаны. - type-check / lint / build — exit 0. code-reviewer: ✅ APPROVE. - CI a11y/lighthouse job с этим флагом не существует (проверено grep по workflows) — регрессий CI нет. ## Post-deploy план curl прод ui-preview → фикстурная сумма/адрес отсутствуют; `/trade-in` (реальный флоу) не задет пересборкой. Refs #2205
lekss361 added 1 commit 2026-07-02 20:19:23 +00:00
fix(tradein): не запекать preview-флаг в прод-образ + noindex/баннер (#2205)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 1m0s
ae825dc19d
build-frontend больше не передаёт NEXT_PUBLIC_ENABLE_PREVIEW=1 → фейк-оценка
/ui-preview/estimate уходит в notFound в проде (фикстурные данные не отдаются).
Server-layout: robots noindex/nofollow + серверный notFound-гейт
(defense-in-depth поверх client-гейта). Видимый ДЕМО-баннер для non-prod.
HTTP-статус остаётся 200 (Next коммитит статус до notFound на матчнутом
client-сегменте) — контент гейтится, индексация снята; жёсткий 404 = middleware,
вне скоупа.

Refs #2205
lekss361 merged commit 72d26b35fa into main 2026-07-02 20:21:59 +00:00
lekss361 deleted branch fix/tradein-no-public-preview 2026-07-02 20:21: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#2223
No description provided.