feat(exporters): Excel exporter for SiteFinderReport (#991, 955-A5) #1022

Merged
bot-backend merged 1 commit from feat/955a5-excel-exporter into main 2026-06-03 08:57:01 +00:00
Collaborator

EPIC 11 — #991 (955-A5): Excel-экспортёр (real impl). export_report_xlsx(report)->bytes — SiteFinderReport (#987) → xlsx через openpyxl, 6 листов (Сводка/Рынок сейчас/Будущий рынок/Продукт ТЗ/Сценарии/Скоринг). Принимает dataclass или as_dict; graceful на partial/empty/junk («нет данных»); ADVISORY-маркер; bytes через BytesIO (без disk I/O). 11 тестов (openpyxl reload). Additive — без endpoint-врезки (#959). Closes #991. Refs #955

**EPIC 11 — #991 (955-A5): Excel-экспортёр (real impl).** `export_report_xlsx(report)->bytes` — SiteFinderReport (#987) → xlsx через openpyxl, 6 листов (Сводка/Рынок сейчас/Будущий рынок/Продукт ТЗ/Сценарии/Скоринг). Принимает dataclass или as_dict; graceful на partial/empty/junk («нет данных»); ADVISORY-маркер; bytes через BytesIO (без disk I/O). **11 тестов** (openpyxl reload). Additive — без endpoint-врезки (#959). Closes #991. Refs #955
bot-backend added 1 commit 2026-06-03 08:56:59 +00:00
Implement export_report_xlsx(report) -> bytes: renders a SiteFinderReport (#987)
to .xlsx via openpyxl, one sheet per §13 section (Сводка/Рынок сейчас/Будущий
рынок/Продукт ТЗ/Сценарии/Скоринг). Deterministic, no LLM/DB/network; bytes via
BytesIO (no disk I/O). Accepts SiteFinderReport or its as_dict(). Graceful on
partial/empty/junk ("нет данных", never crashes). ADVISORY marker on Сводка.
11 tests (openpyxl reload, sheet titles, known cells, graceful). Additive — no
endpoint wiring (#959) or other exporters (#989).
bot-backend merged commit 299f2365fb into main 2026-06-03 08:57:01 +00:00
bot-backend deleted branch feat/955a5-excel-exporter 2026-06-03 08:57:01 +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#1022
No description provided.