fix(tradein/v2): гейтить PDF-кнопку на hasEstimate (#2081 M4) #2332

Merged
lekss361 merged 1 commit from fix/tradein-v2-pdf-button-hasestimate-gate into main 2026-07-03 22:16:01 +00:00
Owner

Refs #2081

Workflow-трек "C_deadcontrols" (M4, гейтинг dead controls на hasEstimate) при повторной проверке нашёл, что кнопка «СКАЧАТЬ PDF-ОТЧЁТ» в HeroBar.tsx гейтилась на отдельное, более слабое условие (pdfHref = pdfDownloadHref(estimateId), где estimateId = freshResult?.estimate_id ?? urlId), расходящееся с общим источником истины hasEstimate (page.tsx:490, mounted && estimate != null && !insufficient) в двух состояниях:

  1. insufficient-datafreshResult.estimate_id уже установлен, hasEstimate=false, но PDF-кнопка рендерилась активной.
  2. restore-404urlId в URL похож на валидный UUID, estimate остаётся null, но кнопка снова активна и указывает на несуществующий отчёт.

Остальные два контрола («ДЕЙСТВИТЕЛЕН ДО», «КАК РАССЧИТАНО») уже были корректно гейтнуты на hasEstimate — теперь все три используют один источник истины.

Фикс — 1 строка:

- const pdfHref = pdfDownloadHref(estimateId);
+ const pdfHref = hasEstimate ? pdfDownloadHref(estimateId) : null;

При pdfHref=null уже существующая disabled-ветка рендерится как раньше («Отчёт станет доступен после расчёта оценки») — новых UI-путей не добавлено.

Проверено: next build чисто (только pre-existing unrelated ESLint warnings), code-reviewer APPROVE после ребейза на актуальный forgejo/main (учтён #2312/pdfFilled CTA).

Refs #2081 Workflow-трек "C_deadcontrols" (M4, гейтинг dead controls на `hasEstimate`) при повторной проверке нашёл, что кнопка «СКАЧАТЬ PDF-ОТЧЁТ» в `HeroBar.tsx` гейтилась на отдельное, более слабое условие (`pdfHref = pdfDownloadHref(estimateId)`, где `estimateId` = `freshResult?.estimate_id ?? urlId`), расходящееся с общим источником истины `hasEstimate` (`page.tsx:490`, `mounted && estimate != null && !insufficient`) в двух состояниях: 1. **insufficient-data** — `freshResult.estimate_id` уже установлен, `hasEstimate=false`, но PDF-кнопка рендерилась активной. 2. **restore-404** — `urlId` в URL похож на валидный UUID, `estimate` остаётся `null`, но кнопка снова активна и указывает на несуществующий отчёт. Остальные два контрола («ДЕЙСТВИТЕЛЕН ДО», «КАК РАССЧИТАНО») уже были корректно гейтнуты на `hasEstimate` — теперь все три используют один источник истины. Фикс — 1 строка: ``` - const pdfHref = pdfDownloadHref(estimateId); + const pdfHref = hasEstimate ? pdfDownloadHref(estimateId) : null; ``` При `pdfHref=null` уже существующая disabled-ветка рендерится как раньше («Отчёт станет доступен после расчёта оценки») — новых UI-путей не добавлено. Проверено: `next build` чисто (только pre-existing unrelated ESLint warnings), code-reviewer APPROVE после ребейза на актуальный `forgejo/main` (учтён #2312/pdfFilled CTA).
lekss361 added 1 commit 2026-07-03 22:14:31 +00:00
fix(tradein/v2): гейтить PDF-кнопку на hasEstimate (#2081 M4)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 58s
6531ee0923
pdfHref вычислялся из currentEstimateId независимо от hasEstimate,
из-за чего кнопка "СКАЧАТЬ PDF-ОТЧЁТ" оставалась активной в двух
состояниях без валидного отчёта: insufficient-data (estimate_id есть,
но результат неполный) и restore-404 (UUID-подобный id в URL, которого
нет в БД). Остальные два контрола (ДЕЙСТВИТЕЛЕН ДО/КАК РАССЧИТАНО) уже
были гейтнуты на тот же hasEstimate — теперь все три используют один
источник истины.
lekss361 merged commit 793234cff1 into main 2026-07-03 22:16:01 +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#2332
No description provided.