From 6350e3f59ac0eb3f48b041179aed3df2ae29f445 Mon Sep 17 00:00:00 2001 From: lekss361 Date: Mon, 18 May 2026 07:21:53 +0300 Subject: [PATCH] =?UTF-8?q?feat(sf-legacy):=20expose=20EGRN=20+=20utilitie?= =?UTF-8?q?s=20=D0=B2=20=D0=9E=D0=B1=D0=B7=D0=BE=D1=80=20tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Бэкенд /api/v1/parcels/{cad}/analyze возвращает много новых B5 fields (egrn, utilities, gate_verdict, nspd_zouit_overlaps, ...), но старая Обзор вкладка показывает только subset (district, score, POI). User просит чтобы legacy показывал не только старые данные, ближе к Maxim-style макету. Добавил 2 conditional блока в OverviewTab после District: - EGRN compact: address / ВРИ / категория / статус / право (если есть) - Сети рядом: substation/pipeline/water/... с distances + охранная зона ЛЭП warning Type-only: ParcelAnalysis в types/site-finder.ts расширен полями egrn (8 optional fields) + utilities (summary array + охранная зона flag). Поля nullable optional — graceful empty state per cad. Не трогает новый SF (/site-finder/*) и не меняет существующие блоки Обзора (district / score / POI / isochrones). --- .../components/site-finder/OverviewTab.tsx | 94 +++++++++++++++++++ frontend/src/types/site-finder.ts | 21 +++++ 2 files changed, 115 insertions(+) diff --git a/frontend/src/components/site-finder/OverviewTab.tsx b/frontend/src/components/site-finder/OverviewTab.tsx index 1d54de5f..595a6e51 100644 --- a/frontend/src/components/site-finder/OverviewTab.tsx +++ b/frontend/src/components/site-finder/OverviewTab.tsx @@ -103,6 +103,100 @@ export function OverviewTab({ data, onIsochronesResult }: Props) { )} + {/* B5 EGRN compact (added 2026-05-18 — expose new field в legacy Обзор) */} + {data.egrn && ( +
+ ЕГРН +
+ {data.egrn.address && ( +
+ Адрес: {data.egrn.address} +
+ )} + {data.egrn.permitted_use_text && ( +
+ ВРИ: {data.egrn.permitted_use_text} +
+ )} + {data.egrn.land_category && ( +
+ Категория: {data.egrn.land_category} +
+ )} + {data.egrn.parcel_status && ( +
+ Статус: {data.egrn.parcel_status} +
+ )} + {data.egrn.right_type && ( +
+ Право: {data.egrn.right_type} +
+ )} +
+
+ )} + + {/* B5 Utilities summary (added 2026-05-18 — expose new field в legacy Обзор) */} + {data.utilities && + Array.isArray(data.utilities.summary) && + data.utilities.summary.length > 0 && ( +
+ Сети рядом +
+ {data.utilities.summary + .map((u) => { + const label = + u.subtype === "substation" + ? "электричество" + : u.subtype === "power_line" + ? "ЛЭП" + : u.subtype === "pipeline" + ? "газ" + : u.subtype === "water_intake" + ? "вода" + : u.subtype === "pumping_station" + ? "канализация" + : u.subtype; + return `${label} ${u.nearest_m} м`; + }) + .join(" · ")} +
+ {data.utilities.power_line_охранная_зона_flag && ( +
+ ⚠ Охранная зона ЛЭП — капитальное строительство запрещено +
+ )} +
+ )} + {/* Tram warning */} {nearestTram !== null && (
; + power_line_охранная_зона_flag?: boolean; + note?: string | null; + } | null; } export type PoiCategory =