feat(ptica/reports): DOCX-скачивание полного отчёта в UI (#2259 R2) #2338

Merged
bot-backend merged 1 commit from feat/full-report-docx-ui into main 2026-07-03 22:40:12 +00:00
Collaborator

Что

Backend DOCX live с #2301, но карточка «Полный отчёт DOCX» в ПТИЦА «Отчёты» оставалась honest-disabled «скоро» — теперь это неправда. Включаем:

  • Хук useFullReport: format через pendingFormatRef (ref, не state) — один общий прогон enqueue→poll, формат только у финального download; кто кликнул (PDF/DOCX) — тот файл и качается, обе карточки дизейблятся на общий building-прогон. start(format?)/download(format?) с default "pdf" — обратная совместимость.
  • DOCX-карточка ПТИЦА рабочая (idle «Все секции · Word» → building общий спиннер → «Скачать DOCX (дата)»); PPTX остаётся «скоро» честно (бэкенда нет). Вторичная компакт-кнопка «DOCX» в ExportButtons на светлой странице.
  • Легаси-раны без docx_path: HEAD-preflight (same-origin — наследует Caddy basic_auth; auth-эквивалентность <a>-навигации проверена ревью) ловит любой не-OK (404 легаси / 5xx) → «Пересоберите отчёт — DOCX для старого прогона отсутствует» вместо молчаливой закачки HTML-страницы ошибки. Сетевой сбой preflight — фолбэк на прямую навигацию (без блокировки). PDF-путь без preflight (файл при ready всегда есть).
  • downloadError чистится в start/download/смене cad, role="alert".

Проверки

tsc --noEmit 0 · eslint 0/0 · prettier clean.

Ревью

code-reviewer: APPROVE; minor «preflight только 404» расширен до !res.ok в этом же PR; гонка двойного клика в idle-окне — pre-existing свойство PDF-дизайна, не ухудшено.

Post-merge

qa: клик DOCX-карточки на свежем отчёте → docx скачивается; на участке со старым раном → сообщение о пересборке.

Refs #2259

## Что Backend DOCX live с #2301, но карточка «Полный отчёт DOCX» в ПТИЦА «Отчёты» оставалась honest-disabled «скоро» — теперь это неправда. Включаем: - **Хук `useFullReport`**: format через `pendingFormatRef` (ref, не state) — один общий прогон enqueue→poll, формат только у финального download; кто кликнул (PDF/DOCX) — тот файл и качается, обе карточки дизейблятся на общий building-прогон. `start(format?)`/`download(format?)` с default "pdf" — обратная совместимость. - **DOCX-карточка ПТИЦА** рабочая (idle «Все секции · Word» → building общий спиннер → «Скачать DOCX (дата)»); **PPTX остаётся «скоро»** честно (бэкенда нет). Вторичная компакт-кнопка «DOCX» в ExportButtons на светлой странице. - **Легаси-раны без docx_path**: HEAD-preflight (same-origin — наследует Caddy basic_auth; auth-эквивалентность `<a>`-навигации проверена ревью) ловит **любой не-OK** (404 легаси / 5xx) → «Пересоберите отчёт — DOCX для старого прогона отсутствует» вместо молчаливой закачки HTML-страницы ошибки. Сетевой сбой preflight — фолбэк на прямую навигацию (без блокировки). PDF-путь без preflight (файл при ready всегда есть). - `downloadError` чистится в start/download/смене cad, `role="alert"`. ## Проверки tsc --noEmit 0 · eslint 0/0 · prettier clean. ## Ревью code-reviewer: ✅ APPROVE; minor «preflight только 404» расширен до `!res.ok` в этом же PR; гонка двойного клика в idle-окне — pre-existing свойство PDF-дизайна, не ухудшено. ## Post-merge qa: клик DOCX-карточки на свежем отчёте → docx скачивается; на участке со старым раном → сообщение о пересборке. Refs #2259
bot-backend added 1 commit 2026-07-03 22:37:40 +00:00
feat(ptica/reports): включить DOCX-скачивание полного отчёта (#2259 R2 UI)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 7s
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 55s
CI / openapi-codegen-check (pull_request) Successful in 1m52s
bdd95063b6
Полный отчёт отдаёт и PDF, и DOCX одним билдом (backend #2301) — карточка
DOCX была honest-disabled «скоро», теперь неправда. useFullReport
принимает format через pendingFormatRef — один общий прогон
enqueue→poll, формат только у финального download, без дубля стейта;
кто кликнул — тот формат и качается, обе карточки дизейблятся на общий
building. DOCX-карточка ПТИЦА + вторичная DOCX-кнопка на светлой
странице. Легаси-раны без docx_path: HEAD-preflight (same-origin,
наследует basic_auth) ловит любой не-OK и просит пересобрать отчёт
вместо молчаливой закачки страницы ошибки; сетевой сбой preflight —
фолбэк на прямую навигацию. PPTX остаётся «скоро» честно (бэкенда нет).
bot-backend merged commit 49304a78bc into main 2026-07-03 22:40:12 +00:00
bot-backend deleted branch feat/full-report-docx-ui 2026-07-03 22:40:12 +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#2338
No description provided.