feat(site-finder): OSM инж.сети на карту analyze (#1746) #1934

Merged
bot-backend merged 1 commit from feat/1746-utility-infra-map into main 2026-06-26 22:44:00 +00:00
Collaborator

Что

Финальный фронт-кусок #1746: слой OSM инженерных сетей (osm_utility_infrastructure_ekb, эндпоинт GET /parcels/{cad}/utility-infrastructure) наносится на карту в секции «Сети» analyze — рядом с точками подключения НСПД и ЗОУИТ из #1751, на той же карте с тогглами.

Бэкенд-часть (таблица 3084 элемента, эндпоинт, weekly-beat, типы) уже задеплоена ранее. Это рендер.

Как

  • useUtilityInfrastructure — react-query хук (зеркало useConnectionPoints).
  • UtilityInfrastructureLayer — Point→CircleMarker, LineString/Polygon (+Multi)→<GeoJSON> (важно: данные — в основном ЛЭП-линии, не точки), цвет по infrastructure_kind (power/water/gas/heat/communication/sewage), попапы (имя + тип + source_tag + расстояние).
  • UtilityLayerControlPanel — сворачиваемая легенда, чекбокс+счётчик на тип, «показать все».
  • SiteMap — опц. проп utilityInfrastructure + visibleUtilityKinds Set (поведение CP/ЗОУИТ/POI/market не тронуто).
  • Section2NetworksUtilities — карта показывается, если есть данные CP или OSM; пустое состояние при нуле фич.
  • 12 unit-тестов — парсинг геометрии, swap [lon,lat]→[lat,lon], группировка.

Контракт (проверен live curl на проде)

UtilityInfrastructureResponse { features[], summary{total_features, nearest_distance_m, nearest_by_kind} }; geometry_geojson — готовый GeoJSON-объект (ST_AsGeoJSON), координаты [lon,lat]. Ответ капается бэкендом LIMIT 200 (не 3к) → нет джанка на рендере.

Проверки

  • npm run type-check · npm run lint (0 warnings) · npm run build (25 routes) · npm run test 168 passed (156 + 12 new).
  • code-reviewer: APPROVE, 0 critical (3 косметических минора, скопированы из паттерна #1751 1:1).

Пост-деплой визуальная проверка: открыть /site-finder/analysis/66:41:0702048:27 секцию «Сети» → янтарные ЛЭП-линии + работающие тогглы «Инженерные сети (OSM)».

Refs #1746

## Что Финальный фронт-кусок #1746: слой OSM инженерных сетей (`osm_utility_infrastructure_ekb`, эндпоинт `GET /parcels/{cad}/utility-infrastructure`) **наносится на карту** в секции «Сети» analyze — рядом с точками подключения НСПД и ЗОУИТ из #1751, на той же карте с тогглами. Бэкенд-часть (таблица 3084 элемента, эндпоинт, weekly-beat, типы) уже задеплоена ранее. Это рендер. ## Как - **`useUtilityInfrastructure`** — react-query хук (зеркало `useConnectionPoints`). - **`UtilityInfrastructureLayer`** — Point→`CircleMarker`, LineString/Polygon (+Multi)→`<GeoJSON>` (важно: данные — в основном ЛЭП-линии, не точки), цвет по `infrastructure_kind` (power/water/gas/heat/communication/sewage), попапы (имя + тип + source_tag + расстояние). - **`UtilityLayerControlPanel`** — сворачиваемая легенда, чекбокс+счётчик на тип, «показать все». - **`SiteMap`** — опц. проп `utilityInfrastructure` + `visibleUtilityKinds` Set (поведение CP/ЗОУИТ/POI/market не тронуто). - **`Section2NetworksUtilities`** — карта показывается, если есть данные CP **или** OSM; пустое состояние при нуле фич. - **12 unit-тестов** — парсинг геометрии, swap `[lon,lat]→[lat,lon]`, группировка. ## Контракт (проверен live curl на проде) `UtilityInfrastructureResponse { features[], summary{total_features, nearest_distance_m, nearest_by_kind} }`; `geometry_geojson` — готовый GeoJSON-объект (ST_AsGeoJSON), координаты `[lon,lat]`. Ответ капается бэкендом `LIMIT 200` (не 3к) → нет джанка на рендере. ## Проверки - `npm run type-check` ✅ · `npm run lint` ✅ (0 warnings) · `npm run build` ✅ (25 routes) · `npm run test` ✅ 168 passed (156 + 12 new). - `code-reviewer`: **✅ APPROVE**, 0 critical (3 косметических минора, скопированы из паттерна #1751 1:1). Пост-деплой визуальная проверка: открыть `/site-finder/analysis/66:41:0702048:27` секцию «Сети» → янтарные ЛЭП-линии + работающие тогглы «Инженерные сети (OSM)». Refs #1746
bot-backend added 1 commit 2026-06-26 22:41:25 +00:00
feat(site-finder): render OSM utility-infrastructure layer on analyze map (#1746)
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 54s
CI / openapi-codegen-check (pull_request) Successful in 1m49s
854fa69a8b
Section2 "Сети" map now shows the OSM engineering-networks layer
(osm_utility_infrastructure_ekb, endpoint /parcels/{cad}/utility-infrastructure)
alongside the NSPD connection-points + ЗОУИТ layers from #1751, on the same map.

- useUtilityInfrastructure hook (react-query, mirrors useConnectionPoints)
- UtilityInfrastructureLayer: Point→CircleMarker, LineString/Polygon(+Multi)→GeoJSON,
  per-kind colour (power/water/gas/heat/communication/sewage), popups
- UtilityLayerControlPanel: collapsible legend, per-kind toggle + count
- SiteMap: optional utilityInfrastructure prop + visibleKinds state (CP/ЗОУИТ unchanged)
- 12 unit tests (geometry parsing + [lon,lat]→[lat,lon] swap + grouping)

Refs #1746
bot-backend merged commit 6c8bf0e496 into main 2026-06-26 22:44:00 +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#1934
No description provided.