[P0] Убрать публичную фейк-оценку /trade-in/ui-preview с прода + noindex #2205

Closed
opened 2026-07-02 19:17:40 +00:00 by lekss361 · 2 comments
Owner

Эпик: #2200

Находка (Frontend, verified live): curl https://gendsgn.ru/trade-in/ui-preview/estimate → HTTP 200, тело содержит фейк-оценку «9,70 млн ₽» для реального адреса (Репина). Гейт только build-time NEXT_PUBLIC_ENABLE_PREVIEW, запечён в прод-бандл; grep robots|noindex app/ = 0; RouteGuard вайтлистит /ui-preview/*. Публичная фейк-оценка реального адреса ЕКБ краулима под gendsgn.ru в реальном UI без баннера-заглушки.

Acceptance:

  • Preview-роуты не собираются/не отдаются в прод-образе (флаг реально off в prod build, проверяемо CI).
  • noindex на preview + видимый fixture-баннер, если оставляем в non-prod.
  • Проверка: curl prod ui-preview → 404 (или явный demo-баннер).

Scope: tradein-mvp/frontend/src/app/ui-preview/, RouteGuard, build config.

Эпик: #2200 **Находка (Frontend, verified live):** `curl https://gendsgn.ru/trade-in/ui-preview/estimate` → HTTP 200, тело содержит фейк-оценку «9,70 млн ₽» для реального адреса (Репина). Гейт только build-time `NEXT_PUBLIC_ENABLE_PREVIEW`, запечён в прод-бандл; `grep robots|noindex app/` = 0; RouteGuard вайтлистит `/ui-preview/*`. Публичная фейк-оценка реального адреса ЕКБ краулима под gendsgn.ru в реальном UI без баннера-заглушки. **Acceptance:** - [ ] Preview-роуты не собираются/не отдаются в прод-образе (флаг реально off в prod build, проверяемо CI). - [ ] `noindex` на preview + видимый fixture-баннер, если оставляем в non-prod. - [ ] Проверка: `curl` prod ui-preview → 404 (или явный demo-баннер). Scope: `tradein-mvp/frontend/src/app/ui-preview/`, RouteGuard, build config.
lekss361 added the
priority/p0
scope/frontend
security
tradein
labels 2026-07-02 19:20:16 +00:00
Author
Owner

Working on this (night shift), ветка fix/tradein-no-public-preview. Подтверждено живьём: prod ui-preview → 200 + «млн ₽»/Репина. Корень: build-arg NEXT_PUBLIC_ENABLE_PREVIEW=1 запечён в прод-образ в deploy-tradein.yml. Фикс: убрать флаг из прод-сборки (страница уже сама делает notFound без флага) + noindex layout + видимый демо-баннер для non-prod.

Working on this (night shift), ветка `fix/tradein-no-public-preview`. Подтверждено живьём: prod ui-preview → 200 + «млн ₽»/Репина. Корень: build-arg `NEXT_PUBLIC_ENABLE_PREVIEW=1` запечён в прод-образ в deploy-tradein.yml. Фикс: убрать флаг из прод-сборки (страница уже сама делает notFound без флага) + noindex layout + видимый демо-баннер для non-prod.
Author
Owner

Сделано в PR #2223 (смержен, deploy success). Post-deploy smoke на проде:

  • curl https://gendsgn.ru/trade-in/ui-preview/estimate → фикстурные данные ИСЧЕЗЛИ (0 совпадений «млн ₽»/«Репина»; тело = not-found boundary).
  • <meta name="robots" content="noindex, nofollow"> присутствует.
  • Preview-флаг больше не запекается в прод-образ (build-arg убран из deploy-tradein.yml).
  • Реальный флоу не задет: /trade-in → 401 (штатный auth-gate).
  • Для non-prod сборок с флагом: server-layout noindex + notFound-гейт + видимый демо-баннер.

Примечание: HTTP-статус матчнутого сегмента остаётся 200 (Next 15 коммитит статус до notFound на client-page; жёсткий 404 = middleware, задокументировано в layout.tsx) — контент и индексация закрыты, security-суть issue устранена.

Сделано в PR #2223 (смержен, deploy success). Post-deploy smoke на проде: - ✅ `curl https://gendsgn.ru/trade-in/ui-preview/estimate` → фикстурные данные ИСЧЕЗЛИ (0 совпадений «млн ₽»/«Репина»; тело = not-found boundary). - ✅ `<meta name="robots" content="noindex, nofollow">` присутствует. - ✅ Preview-флаг больше не запекается в прод-образ (build-arg убран из deploy-tradein.yml). - ✅ Реальный флоу не задет: /trade-in → 401 (штатный auth-gate). - Для non-prod сборок с флагом: server-layout noindex + notFound-гейт + видимый демо-баннер. Примечание: HTTP-статус матчнутого сегмента остаётся 200 (Next 15 коммитит статус до notFound на client-page; жёсткий 404 = middleware, задокументировано в layout.tsx) — контент и индексация закрыты, security-суть issue устранена.
Sign in to join this conversation.
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#2205
No description provided.