feat(exporters): серверный статик-рендер карт для PDF-отчёта (#2259 PR-C Maps) #2286

Merged
bot-backend merged 1 commit from feat/report-maps into main 2026-07-03 10:29:24 +00:00

1 commit

Author SHA1 Message Date
e796379074 feat(exporters): серверный статик-рендер карт для PDF-отчёта (#2259 PR-C Maps)
All checks were successful
CI / changes (pull_request) Successful in 12s
CI Trade-In / changes (pull_request) Successful in 13s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m47s
CI / backend-tests (pull_request) Successful in 15m1s
report_maps.py: headless matplotlib(Agg)+geopandas+contextily рендер PNG
без браузера. Участок + риск-зоны/красные линии/ЗОУИТ/opportunity +
конкуренты на OSM-подложке с bounded-таймаутом (10с) и graceful fallback
на белый фон. render_concept_footprint_png — контур + пятна корпусов с
этажностью. embed_map_png — data-URI img / плашка «карта недоступна».
Фигуры закрываются _managed_figure (finally) на любом пути; 2 no-leak
регресс-теста, мутационно проверены. Ловушка: долгота конкурентов = lng.

+contextily/matplotlib deps (uv.lock; rasterio-транзитивка GDAL — вес
образа отметить при ребилде) + mypy ignore-imports.

Refs #2259
2026-07-03 15:12:50 +05:00