feat(ptica): rich dark map (POI/connections/competitors/satellite) + ПТИЦА as default analysis route #1851

Merged
bot-backend merged 1 commit from feat/ptica-default-and-rich-map into main 2026-06-20 19:06:09 +00:00
Collaborator

Чинит две регрессии прода vs прототип (по фидбеку: «где визуальные штуки / 3D / элементы на карте» + «другие участки = старый дизайн»).

1. Богатая тёмная карта (parity с прототипом)

PticaMapInner теперь рендерит реальные слои поверх тёмной базы, переиспользуя существующие analysis-слои (не строил заново):

  • POI по категориям (Школы·Детсады / Парки·Метро / ЖК) из score_breakdown (реальные коорд.);
  • Конкуренты + пайплайн (MarketLayers);
  • Точки подключения + цветные линии к участку (ConnectionPointsLayer);
  • ЗОУИТ (ZouitLayer); кастомные POI add/edit/delete (CustomPoiLayer + реальные мутации с инвалидацией кэша);
  • Спутник | Схема тоггл (Esri World Imagery по умолчанию + --map-filter-sat); строки легенды переключают слои; список «Точки подключения ресурсов» — на реальных CP-данных.
  • Изохроны — оставлены «скоро» (ORS-источник on-demand, не в /analyze; не фейкаю).

2. ПТИЦА — дефолтная страница анализа

/site-finder/analysis/[cad] теперь рендерит ПТИЦА-cockpit → любой участок (клик на карте, недавние, кадастр-инпут, прямой URL) открывает ПТИЦУ, не старый дизайн. Подроут [cad]/pticaredirect() на родителя (одна копия cockpit'а, без loop). Старый AnalysisPageContent в репозитории не тронут; legacy-UI остаётся на /legacy/site-finder.

3. 3D-масса видна

Раньше только через ?drawer=. Теперь 3 точки входа: карточка «Инсоляция · 3D-масса», строка легенды «3D-масса застройки», кнопка 3D на карте — все открывают drawer с Three.js-массой.

Качество

SSR-safe (Leaflet только за dynamic(ssr:false), вся цепочка "use client"); POI — реальное поле score_breakdown; redirect-loop невозможен. tsc/lint/prettier/build зелёные (роут 30.7kB, /ptica 308B redirect). code-reviewer APPROVE (адверсариально по SSR-границе / redirect-loop / реальным POI — все чисты).

Связано: ПТИЦА-порт #1831-1835, КСИТ #1847/#1849. Визуал — на проде после мержа+деплоя.

Чинит две регрессии прода vs прототип (по фидбеку: «где визуальные штуки / 3D / элементы на карте» + «другие участки = старый дизайн»). ## 1. Богатая тёмная карта (parity с прототипом) `PticaMapInner` теперь рендерит реальные слои поверх тёмной базы, **переиспользуя существующие analysis-слои** (не строил заново): - **POI** по категориям (Школы·Детсады / Парки·Метро / ЖК) из `score_breakdown` (реальные коорд.); - **Конкуренты + пайплайн** (`MarketLayers`); - **Точки подключения + цветные линии** к участку (`ConnectionPointsLayer`); - **ЗОУИТ** (`ZouitLayer`); **кастомные POI** add/edit/delete (`CustomPoiLayer` + реальные мутации с инвалидацией кэша); - **Спутник | Схема** тоггл (Esri World Imagery по умолчанию + `--map-filter-sat`); строки легенды переключают слои; список «Точки подключения ресурсов» — на реальных CP-данных. - Изохроны — оставлены «скоро» (ORS-источник on-demand, не в `/analyze`; не фейкаю). ## 2. ПТИЦА — дефолтная страница анализа `/site-finder/analysis/[cad]` теперь рендерит ПТИЦА-cockpit → **любой участок (клик на карте, недавние, кадастр-инпут, прямой URL) открывает ПТИЦУ, не старый дизайн**. Подроут `[cad]/ptica` → `redirect()` на родителя (одна копия cockpit'а, без loop). Старый `AnalysisPageContent` в репозитории не тронут; legacy-UI остаётся на `/legacy/site-finder`. ## 3. 3D-масса видна Раньше только через `?drawer=`. Теперь 3 точки входа: карточка «Инсоляция · 3D-масса», строка легенды «3D-масса застройки», кнопка 3D на карте — все открывают drawer с Three.js-массой. ## Качество SSR-safe (Leaflet только за `dynamic(ssr:false)`, вся цепочка `"use client"`); POI — реальное поле `score_breakdown`; redirect-loop невозможен. **tsc/lint/prettier/build зелёные** (роут 30.7kB, /ptica 308B redirect). **code-reviewer ✅ APPROVE** (адверсариально по SSR-границе / redirect-loop / реальным POI — все чисты). Связано: ПТИЦА-порт #1831-1835, КСИТ #1847/#1849. Визуал — на проде после мержа+деплоя.
bot-backend added 1 commit 2026-06-20 19:04:04 +00:00
feat(ptica): rich dark cockpit map + ПТИЦА as the default analysis route
All checks were successful
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 49s
CI / openapi-codegen-check (pull_request) Successful in 1m48s
ba05a4cb62
Fix two regressions vs the prototype:
1. PticaMapInner: render real data layers over the dark base by REUSING the
   existing analysis-map components — POI by category, competitors/pipeline
   (MarketLayers), connection points + colored polylines (ConnectionPointsLayer),
   ЗОУИТ (ZouitLayer), custom POI add/edit/delete (CustomPoiLayer + mutation hooks).
   Add Спутник/Схема base toggle (Esri default + --map-filter-sat); legend rows
   toggle layers; «Точки подключения» driven by real CP data. Isochrones left
   «скоро» (ORS is on-demand, not in /analyze).
2. /site-finder/analysis/[cad] now renders the ПТИЦА cockpit — every parcel entry
   opens ПТИЦА, not the old design. [cad]/ptica redirects to the parent (single
   cockpit copy). Old AnalysisPageContent kept in repo; legacy UI at /legacy/site-finder.
3. Surface 3D massing: new «Инсоляция · 3D-масса» scan card + 3D legend row + 3D
   map tool all open the insolation/future3d drawers.

SSR-safe (Leaflet only behind dynamic ssr:false); real POI from score_breakdown;
no redirect loop. tsc/lint/prettier/build green. code-reviewer APPROVE.
bot-backend merged commit 4205ecb483 into main 2026-06-20 19:06:09 +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#1851
No description provided.