feat(exporters): Site Finder report PDF exporter (#989, 955-A3) #1023

Merged
bot-backend merged 1 commit from feat/955a3-report-pdf into main 2026-06-03 09:09:30 +00:00
Collaborator

EPIC 11 — #989 (955-A3): Site Finder report PDF (additive). report_pdf.py — export_report_pdf(report)->bytes, PDF-аналог Excel #991 (WeasyPrint, 6 §13-секций). СТРОГО ADDITIVE — 3 живых PDF-экспортёра не тронуты (blast-radius tech-analyst; unify pdf.py отложен). html.escape, graceful, ADVISORY-маркер. Endpoint=#959. 16 тестов (рендер доказан Rosetta x86_64; native-кейсы → Docker/CI). Closes #989. Refs #955

**EPIC 11 — #989 (955-A3): Site Finder report PDF (additive).** `report_pdf.py` — export_report_pdf(report)->bytes, PDF-аналог Excel #991 (WeasyPrint, 6 §13-секций). СТРОГО ADDITIVE — 3 живых PDF-экспортёра не тронуты (blast-radius tech-analyst; unify pdf.py отложен). html.escape, graceful, ADVISORY-маркер. Endpoint=#959. 16 тестов (рендер доказан Rosetta x86_64; native-кейсы → Docker/CI). Closes #989. Refs #955
bot-backend added 1 commit 2026-06-03 09:09:29 +00:00
Add backend/app/services/exporters/report_pdf.py: export_report_pdf(report)->bytes,
the additive PDF counterpart to excel.export_report_xlsx (#991). Renders a
SiteFinderReport (#987) to PDF via WeasyPrint across the 6 §13 content sections
(Сводка/Рынок сейчас/Будущий рынок/Продукт ТЗ/Сценарии/Скоринг).

Mirrors house style: _normalize (instance or as_dict), named-const titles/CSS/
microcopy, RU labels, None→"—", graceful-never-raise, ADVISORY marker, local
weasyprint import. All dynamic fields html.escape'd. STRICTLY ADDITIVE — zero
edits to the 3 live PDF exporters (tradein/layout/snapshot) per tech-analyst
blast-radius analysis; "unify pdf.py" deferred (would rewrite 3 working features
for no gain). Endpoint wiring is #959. 16 tests (render proven via Rosetta x86_64;
6 native-render cases need Docker/CI matched-arch libgobject — pure-logic green).
bot-backend merged commit 12162a0abb into main 2026-06-03 09:09:30 +00:00
bot-backend deleted branch feat/955a3-report-pdf 2026-06-03 09:09:31 +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#1023
No description provided.