gendesign/backend/app/services/exporters
Light1YT 2c19f35eff feat(exporters): Site Finder report PDF exporter (#989, 955-A3)
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).
2026-06-03 14:08:26 +05:00
..
__init__.py init 2026-04-25 13:45:19 +03:00
dxf.py init 2026-04-25 13:45:19 +03:00
excel.py feat(exporters): Excel exporter for SiteFinderReport (#991, 955-A5) (#1022) 2026-06-03 08:57:00 +00:00
layout_tz_pdf.py feat(layouts): PDF ТЗ endpoint + BestLayoutsBlock UI (#113 PR D) (#199) 2026-05-16 09:53:05 +00:00
pdf.py init 2026-04-25 13:45:19 +03:00
report_pdf.py feat(exporters): Site Finder report PDF exporter (#989, 955-A3) 2026-06-03 14:08:26 +05:00
snapshot_pdf.py feat(sf-b7): GET /parcels/{cad}/snapshot.pdf — 1-page WeasyPrint export (#334) 2026-05-17 21:11:03 +00:00
trade_in_pdf.py feat(trade-in): TI-2 PDF export 4-page + frontend enable button (#319) 2026-05-17 17:16:48 +00:00