From 704d886a67eddbe9400613607e9735d50b7ee9c8 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Fri, 3 Jul 2026 14:54:46 +0500 Subject: [PATCH] =?UTF-8?q?feat(exporters):=20PURE=20HTML=20=C2=A74-=C2=A7?= =?UTF-8?q?7=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE=D0=B3=D0=BE=20PDF-=D0=BE?= =?UTF-8?q?=D1=82=D1=87=D1=91=D1=82=D0=B0=20(#2259=20PR-B=20Sections)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit build_full_report_html_part_b(forecast_result, concept_result, cad): §4 рынок (market_now/velocity/конкуренты/confidence), §5 финмодель (DCF из ConceptOutput.variants[].financial, опорный вариант = max NPV; рыночный контекст из scoring.special_indices), §6 риски/дефицит (future_market + честная плашка при scenarios_collapsed), §7 концепция (ТЭП + программа, переисточенная из buildings_geojson.features[].properties — поле building_program на выходном ConceptVariant НЕ существует; 1b-стратегии без section_type таблицу программы не рисуют). Плейсхолдер {{MAP_CONCEPT}} для PR-C; concept=None → «не рассчитана» без падения. Нормализация forecast-словаря — импорт _normalize/_as_dict/ _future_supply_pairs/_level_ru из report_pdf (без третьего набора форматтеров). Один общий