feat(site-finder): кнопка «Полный отчёт (PDF)» (#2259 PR-E, финал эпика) #2288

Merged
bot-backend merged 1 commit from feat/full-report-button into main 2026-07-03 11:18:33 +00:00

1 commit

Author SHA1 Message Date
1312dec0e6 feat(site-finder): кнопка «Полный отчёт (PDF)» — enqueue → поллинг → download (#2259 PR-E)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 11s
CI / changes (pull_request) Successful in 12s
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 1m55s
CI / openapi-codegen-check (pull_request) Successful in 2m56s
Общий хук useFullReport(cad): POST /report (200 ready → мгновенный
download; 202 building → TanStack-поллинг status 5с с cap 3 мин →
честный timeout «Сборка затянулась — попробуйте позже»), авто-download
по ready (ref-guard, один раз), скачивание скрытым <a download> —
наследует Caddy basic_auth без отдельного blob-fetch. Сброс прогона
при смене cad (страховка in-place реюза), elapsed по wall-clock
(иммунно к троттлингу фоновых вкладок). Кнопка в PticaReports
(вместо honest-disabled «скоро») и ExportButtons — логика не
дублируется. Статусы сужены типами из api-types (не руками).

Fix: паттерн reports/ из PR-D в .gitignore заякорен в корень
(/reports/) — неякоренный матчил и frontend .../ptica/reports/.

Refs #2259
2026-07-03 16:14:11 +05:00