feat(exporters): DOCX-вариант полного отчёта ПТИЦА (#2259 R2) #2301
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2301
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/full-report-docx"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что
R2 эпика #2259 (PR-F из плана): полный отчёт §1–§7 в Word — «один файл инвесткомитету» теперь в обоих форматах.
build_full_report_docx: python-docx документ, зеркалящий PDF-структуру (§1–§7 + альтернативы) из тех же исходных словарей — HTML не парсится, переиспользуются PURE-хелперыfull_report_html(числа PDF и DOCX совпадают by construction: тот же кап/фильтр областного шума, схлопывание корпусов, ЗОУИТ-резолв, деградации). Карты — те же PNG черезadd_picture(плашка при None/битом)._atomic_write; порядок render→write→метадата — упавший DOCX не оставляет ран с битой ссылкой. Метадата +docx_path/docx_size_bytes; кэш-схема не сломана.GET /report/download?format=pdf|docx(Literal, default pdf; битый → 422; путь строго из метадаты). Legacy-раны без docx → 404 «пересоберите отчёт».api-types.tsрегенерён (+12/−4, только query-параметр).Тесты
198 passed / 6 skipped (16 новых DOCX: PK-magic + Document round-trip, все секции, карты/плашки/битый PNG, деградации вплоть до
{}; +5 endpoint: docx-200/default-pdf/legacy-404/missing-file-404/invalid-422). DOCX-тесты без skip (native не нужен). ruff+UP (пиненный 0.7.4) clean.Ревью
code-reviewer: ✅ APPROVE (импорт-граница web/worker, атомарность и порядок записи, отсутствие circular — проверены).
Post-deploy
qa:
download?format=docxна свежепересобранном отчёте (unit-тесты мокают файловый слой — e2e через Celery+volume проверяется на проде).Refs #2259