Каждая секция показывает по умолчанию только основную информацию (вердикт-плашка
+ KPI-ряд), остальное (карты, таблицы, графики, разбивки) — под единым тумблером
«Раскрыть всё ▾». Выполнение запроса: «на каждом этапе только основную информацию,
далее жмёшь раскрыть и показывает всё что у нас есть».
- StageDetails — примитив-тумблер: default-collapsed, conditional-mount детей
(НЕ display:none — чтобы Leaflet-карты инициализировались при раскрытии),
aria-expanded, токены, Unicode-каретка.
- §1 Объект: свёрнуты 2-кол грид (карта+ЕГРН/НСПД/POI) + экспорт.
- §2 Оценка: свёрнуты risk-cards + ЗОУИТ + рекомендация.
- §3 Сети: свёрнуты предупреждение ЛЭП + счётчики + таблица + карта + caveat.
- §4 Рынок: свёрнуты настройки+таблица+блоки; CompetitorDetailDrawer оставлен
смонтированным вне тумблера.
- §5 Атмосфера: свёрнут сезонный климат.
- §6 Прогноз: свёрнуты график + 6.1–6.6 + футер.
- §7 Концепция — не тронут (уже сам по себе progressive: форма → авто-результат).
Light report (Section1ParcelInfo) only rendered the dead top-level
zoning.data_available=false (closed-PKK6 path) and never showed the
resolved nspd_zoning, so the resolved regulation (synth #1891) was
invisible to the user («мы выгружали НСПД — где они?»).
- Add «Градрегламент (НСПД)»-card to Раздел 1 (right column, под ЕГРН):
тер.зона, КСИТ/max_far, пред. высота, этажность, коэф. застройки,
КСИТ-ёмкость/пятно (от площади ЕГРН), источник + список разрешённых
ВРИ зоны. Empty-state когда регламент не определён (gap-зоны / не-ЕКБ).
КСИТ-microcopy расшифровывает жаргон на первой странице.
- New pure mapper adaptNspdRegulation (nspd-regulation.ts) reused by
ptica-adapt so light report и /ptica остаются consistent.
- coerceFloat: max_far/max_building_pct приходят с провода СТРОКАМИ
("2.4"/"80") — фикс латентного бага cockpit'а (typeof===number
глушил реальный строковый КСИТ в massing/insolation).
- Widen NspdZoning.max_far/max_building_pct to string|number, add
main_vri; expose nspd_zoning on ParcelAnalyzeResponse.
- Unit test для field-mapping + coercion + empty-state.
Four frontend display fixes for the Site Finder analysis report (audit #1953);
all consume fields the (already-deployed) backend now returns.
- #1954: ЕГРН «Обременения» row was hardcoded «—». Wire top-level
`encumbrance` block {has_zouit, zouit_count, zouit_types} via
formatEncumbrance → «ЗОУИТ: N (types)» / «не выявлено (НСПД)».
- #1955: show obj_class per success bucket («Студии 15-30 · Комфорт») so
rows with identical area-labels are distinct; fix top-row match + React key
to (bucket, obj_class).
- #1957: NspdZouitOverlapsBlock renders human type_zone + reg_numb_border,
adds a СЗЗ caveat banner (СанПиН 2.2.1/2.1.1.1200-03) and «СЗЗ вашего
участка» highlight; switched raw hex to UI tokens.
- #1958: ForecastChart axis names → nameLocation:middle + nameGap (no legend
overlap); grey flat-state callout when the deficit line is degenerate
(scenarios_collapsed or all points clamped at ±1).
Tests: formatEncumbrance + isDeficitDegenerate (15 new). Real segment
differentiation is backend #1959 (separate).