Infra I3: Инженерные сети из OSM (вода/канал/электр/газ) — utility distance #44

Closed
opened 2026-05-11 20:17:08 +00:00 by lekss361 · 6 comments
lekss361 commented 2026-05-11 20:17:08 +00:00 (Migrated from github.com)

Эшелон: 🟢 Infrastructure / Quality

Контекст / проблема

Подключение к инженерным сетям — крупная статья cost (+50-200M ₽). Сейчас в analyze.utilities (из commit 6ce634a SiteFinder_v3) только OSM power=line + man_made=pipeline — weak.

Решение (по запросу): пока OSM-only, без B2B-интеграций с РСО. B2B-вопросы вынесены в отдельный issue (для Макса).

Что сделать

  1. Расширить OSM POI loader новыми категориями:
    • man_made=water_works — водозабор
    • man_made=wastewater_plant — канализация
    • power=substation — подстанции
    • power=transformer — трансформаторы
    • pipeline=gas (с tag substance=gas) — газопровод
    • pipeline=water, pipeline=sewerage
    • man_made=heat_substation — ЦТП
  2. В analyze.utilities:
    • nearest_water_main_m: число
    • nearest_substation_m: число
    • nearest_gas_m: число
    • nearest_heat_m: число
    • connection_cost_estimate_rub: грубая оценка (м × tariff per metre)
  3. Severity tier: «зелёный» (<200м все типы), «жёлтый» (200-500м), «красный» (>500м либо отсутствует)

Acceptance

  • Loader загружает все 7 категорий
  • >300 объектов сетей в ЕКБ
  • analyze возвращает 4 расстояния + estimate

Owner

database-expert (OSM categories extension в osm_poi_ekb или новой таблице osm_utilities_ekb) + backend-engineer

Effort

1.5–2 дня

Risks / open

  • OSM покрытие инженерки в РФ слабое (особенно underground pipes)
  • Cost estimate per metre — heuristic, нужна верификация
  • Реальный gold standard — выписки от РСО. Это блокер для МКД и должен пойти через B2B-канал — см. separate registry issue.
  • Closes часть #26 (extended OSM coverage)
**Эшелон:** 🟢 Infrastructure / Quality ## Контекст / проблема Подключение к инженерным сетям — крупная статья cost (+50-200M ₽). Сейчас в `analyze.utilities` (из commit 6ce634a SiteFinder_v3) только OSM `power=line` + `man_made=pipeline` — weak. **Решение (по запросу):** пока **OSM-only**, без B2B-интеграций с РСО. B2B-вопросы вынесены в отдельный issue (для Макса). ## Что сделать 1. Расширить OSM POI loader новыми категориями: - `man_made=water_works` — водозабор - `man_made=wastewater_plant` — канализация - `power=substation` — подстанции - `power=transformer` — трансформаторы - `pipeline=gas` (с tag substance=gas) — газопровод - `pipeline=water`, `pipeline=sewerage` - `man_made=heat_substation` — ЦТП 2. В analyze.utilities: - `nearest_water_main_m`: число - `nearest_substation_m`: число - `nearest_gas_m`: число - `nearest_heat_m`: число - `connection_cost_estimate_rub`: грубая оценка (м × tariff per metre) 3. Severity tier: «зелёный» (<200м все типы), «жёлтый» (200-500м), «красный» (>500м либо отсутствует) ## Acceptance - [ ] Loader загружает все 7 категорий - [ ] >300 объектов сетей в ЕКБ - [ ] analyze возвращает 4 расстояния + estimate ## Owner `database-expert` (OSM categories extension в `osm_poi_ekb` или новой таблице `osm_utilities_ekb`) + `backend-engineer` ## Effort 1.5–2 дня ## Risks / open - OSM покрытие инженерки в РФ слабое (особенно underground pipes) - Cost estimate per metre — heuristic, нужна верификация - **Реальный gold standard — выписки от РСО.** Это блокер для МКД и должен пойти через B2B-канал — см. separate registry issue. ## Links - Closes часть #26 (extended OSM coverage)
lekss361 commented 2026-05-12 05:46:21 +00:00 (Migrated from github.com)

LayerId найден (после #94):

Инженерные сети из НСПД доступны через два слоя:

  1. 36328 Сооружения ЕГРН — физические инженерные объекты (трубы, ТП, ЦТП, насосные, ЛЭП-опоры) с GeoJSON геометрией
  2. 37578 ЗОУИТ энергетики, subcategory=17охранные зоны инженерных коммуникаций (зона запрета строительства вблизи коммуникаций — критично для МКД!)
  3. Плюс из 37580: водоохранная зона / прибрежная защитная полоса / СЗО источников водоснабжения — водные ограничения

Это сильнее чем OSM (более полное и юридически точное). После #94 этот issue из 'OSM-only' расширяется до 'OSM + НСПД сооружения + 37578 sc=17 + 37580 водоохранные'. Effort +0.5 дня к текущей оценке.

**LayerId найден** (после #94): Инженерные сети из НСПД доступны через два слоя: 1. **36328 Сооружения ЕГРН** — физические инженерные объекты (трубы, ТП, ЦТП, насосные, ЛЭП-опоры) с GeoJSON геометрией 2. **37578 ЗОУИТ энергетики, subcategory=17** — **охранные зоны инженерных коммуникаций** (зона запрета строительства вблизи коммуникаций — критично для МКД!) 3. Плюс из 37580: **водоохранная зона / прибрежная защитная полоса / СЗО источников водоснабжения** — водные ограничения Это сильнее чем OSM (более полное и юридически точное). После #94 этот issue из 'OSM-only' расширяется до 'OSM + НСПД сооружения + 37578 sc=17 + 37580 водоохранные'. Effort +0.5 дня к текущей оценке.
lekss361 commented 2026-05-12 06:54:34 +00:00 (Migrated from github.com)

🔥 МЕГА-обновление подхода (после audit theme=99)

При исследовании НСПД с ESIA-auth найдена тема 99 «Default» с 4531 слоёв — это полный мета-каталог НСПД от ВСЕХ источников (региональные муниципалитеты по Приказу №10).

Что есть для инженерных сетей (без OSM!):

Категория Кол-во слоёв Пример layerId
Сети водоснабжения 115 844679, 869810 (ЗСО), 874901 (планируемые)
Сети теплоснабжения 82 844704, 874899 (планируемые)
Газоснабжение + трубопроводы 19 845475, 845276 (зоны покрытия)
ЛЭП 44 845529, 846329
СЗЗ + санитарные разрывы 83 844692 (инженерных), 844796 (транспортных)
Объекты инженерной защиты 39 844731, 847615
ГПЗУ (готовые!) 5 873838, 845544

Эти данные — публичные (по Приказу №10) без ЕСИА для просмотра / WMS. Можно интегрировать.

Изменения в плане задачи

  • Убираем «OSM-only» из заголовка
  • Добавляем подгрузку из НСПД theme 99:
    • Слои фильтруются bbox-ом по Свердловской области
    • WMS GetFeatureInfo на участке → реальные сети
    • Cache в (объединённая таблица с network_type enum)

См. NSPD_API_Map_May12 Update part 3 для полного списка layerId.

## 🔥 МЕГА-обновление подхода (после audit theme=99) При исследовании НСПД с ESIA-auth найдена **тема 99 «Default»** с **4531 слоёв** — это полный мета-каталог НСПД от ВСЕХ источников (региональные муниципалитеты по Приказу №10). **Что есть для инженерных сетей (без OSM!):** | Категория | Кол-во слоёв | Пример layerId | |---|---|---| | Сети водоснабжения | **115** | 844679, 869810 (ЗСО), 874901 (планируемые) | | Сети теплоснабжения | **82** | 844704, 874899 (планируемые) | | Газоснабжение + трубопроводы | **19** | 845475, 845276 (зоны покрытия) | | ЛЭП | **44** | 845529, 846329 | | СЗЗ + санитарные разрывы | **83** | 844692 (инженерных), 844796 (транспортных) | | Объекты инженерной защиты | **39** | 844731, 847615 | | ГПЗУ (готовые!) | **5** | 873838, 845544 | **Эти данные — публичные** (по Приказу №10) без ЕСИА для просмотра / WMS. Можно интегрировать. ## Изменения в плане задачи - ❌ Убираем «OSM-only» из заголовка - ✅ Добавляем подгрузку из **НСПД theme 99**: - Слои фильтруются bbox-ом по Свердловской области - WMS GetFeatureInfo на участке → реальные сети - Cache в (объединённая таблица с network_type enum) См. [[NSPD_API_Map_May12]] Update part 3 для полного списка layerId.
lekss361 commented 2026-05-12 10:45:01 +00:00 (Migrated from github.com)

🎯 Schema 191-ФЗ готова! data/sql/85_engineering_networks_191fz.sql

После распаковки QGIS.zip Минстроя Свердл извлечён полный официальный стандарт структуры инженерных коммуникаций по 191-ФЗ.

Что готово в SQL миграции

  • 3 ENUMs (network_category, network_object_kind, ground_position)
  • 8 reference-таблиц (classid, material, insulation, ground_pos, pline_type, gas_type, elline_type) + main engineering_networks
  • Seed-данные: 137 NSI CLASSID + 13 материалов труб + 23 типа изоляции + 5 размещений + 10 газовых типов + 18 ЛЭП напряжений + 3 grounds
  • Индексы: GIST geom + BTREE category/classid/municipality
  • Idempotent (CREATE IF NOT EXISTS + ON CONFLICT)

Ключевые поля для scoring

  • wear_percent (REAL) — % износа сетей → risk-фактор для site-finder
  • length_m, diameter_1_mm, diameter_2_mm — теххарактеристики
  • material_id, insulation_id — материалы (Сталь/Чугун/Пластик/etc)
  • ground_pos_id, pline_type_id — над/назем/подзем + подводный
  • voltage_v + elline_type_id — для ЛЭП
  • power_mw — для тепловых источников
  • owner, balance_holder, exploiter — для B2B контактов

NSI-кодификатор по категориям

Префикс Категория Примеры
901xxxxxxx Тепло ЦТП, ИТП, котельные, теплопроводы (магистр/распр/паропр)
902xxxxxxx Вода Водозабор, очистные, насосные, башни, трубы (4 типа)
903xxxxxxx Канализация Очистные, КНС, 7 типов труб (хоз-быт/произв/дождевая)
904xxxxxxx Газ ГРС, ГРП, КИП, 4 давления (выс I, выс II, средн, низк)
905xxxxxxx Электро ТП, РП, ЛЭП (8 напряжений) + связь (10 слаботочных)
906xxxxxxx Транспорт жидкостей Нефте/нефтепродуктопроводы
907xxxxxxx Допобъекты Колодцы, ковры, компенсаторы (80+ типов)

Application для Site Finder

Когда получим данные (Водоканал ЕКБ / Минстрой / МБУ Геотрест) — они прямо в этой структуре, готовы к INSERT без трансформаций.

B2B-leverage для #52

Для разговоров с РСО (МУП Водоканал / Свердловэнерго / СвердловскГаз / Т Плюс):

«У нас готов receiver в стандарте Минстроя Свердл, можем принять ваши данные без интеграции — просто GeoPackage upload»

Это снижает их friction и показывает наш профессионализм.

Связанные docs

## 🎯 Schema 191-ФЗ готова! `data/sql/85_engineering_networks_191fz.sql` После распаковки QGIS.zip Минстроя Свердл извлечён **полный официальный стандарт** структуры инженерных коммуникаций по 191-ФЗ. ### Что готово в SQL миграции - **3 ENUMs** (network_category, network_object_kind, ground_position) - **8 reference-таблиц** (classid, material, insulation, ground_pos, pline_type, gas_type, elline_type) + main `engineering_networks` - **Seed-данные:** 137 NSI CLASSID + 13 материалов труб + 23 типа изоляции + 5 размещений + 10 газовых типов + 18 ЛЭП напряжений + 3 grounds - **Индексы:** GIST geom + BTREE category/classid/municipality - Idempotent (CREATE IF NOT EXISTS + ON CONFLICT) ### Ключевые поля для scoring - `wear_percent` (REAL) — **% износа** сетей → risk-фактор для site-finder - `length_m`, `diameter_1_mm`, `diameter_2_mm` — теххарактеристики - `material_id`, `insulation_id` — материалы (Сталь/Чугун/Пластик/etc) - `ground_pos_id`, `pline_type_id` — над/назем/подзем + подводный - `voltage_v` + `elline_type_id` — для ЛЭП - `power_mw` — для тепловых источников - `owner`, `balance_holder`, `exploiter` — для B2B контактов ### NSI-кодификатор по категориям | Префикс | Категория | Примеры | |---|---|---| | 901xxxxxxx | Тепло | ЦТП, ИТП, котельные, теплопроводы (магистр/распр/паропр) | | 902xxxxxxx | Вода | Водозабор, очистные, насосные, башни, трубы (4 типа) | | 903xxxxxxx | Канализация | Очистные, КНС, 7 типов труб (хоз-быт/произв/дождевая) | | 904xxxxxxx | Газ | ГРС, ГРП, КИП, 4 давления (выс I, выс II, средн, низк) | | 905xxxxxxx | Электро | ТП, РП, ЛЭП (8 напряжений) + связь (10 слаботочных) | | 906xxxxxxx | Транспорт жидкостей | Нефте/нефтепродуктопроводы | | 907xxxxxxx | Допобъекты | Колодцы, ковры, компенсаторы (80+ типов) | ### Application для Site Finder Когда получим данные (Водоканал ЕКБ / Минстрой / МБУ Геотрест) — они **прямо в этой структуре**, готовы к INSERT без трансформаций. ### B2B-leverage для #52 Для разговоров с РСО (МУП Водоканал / Свердловэнерго / СвердловскГаз / Т Плюс): > «У нас готов receiver в стандарте Минстроя Свердл, можем принять ваши данные без интеграции — просто GeoPackage upload» Это снижает их friction и показывает наш профессионализм. ### Связанные docs - vault: `research/Engineering_Networks_Schema_191FZ_May12.md` (полная documentation) - SQL: `data/sql/85_engineering_networks_191fz.sql` (ready-to-deploy) - Source ZIP: https://old-minstroy.midural.ru/uploads/2021/05/QGIS.zip
lekss361 commented 2026-05-12 10:54:02 +00:00 (Migrated from github.com)

Финализировано — schema 191-ФЗ + МСК-66 + Python utility готовы

📋 Что добавлено в этой итерации

1. SQL миграция дополнена data/sql/85_engineering_networks_191fz.sql:

  • INSERT МСК-66 в spatial_ref_sys (SRID 100000)
  • Полный proj4 + WKT для PostGIS
  • ON CONFLICT update для re-apply safe

2. Python utility создан backend/app/core/crs.py:

  • Константы: WGS84_SRID, WEB_MERCATOR_SRID, MSK_66_SRID, MSK_66_PROJ4, MSK_66_WKT
  • Lazy pyproj transformers: get_msk66_to_wgs84(), get_wgs84_to_msk66(), get_msk66_to_mercator(), get_mercator_to_msk66()
  • Convenience: msk66_to_wgs84(x, y) / wgs84_to_msk66(lon, lat)
  • Reference points: центр ЕКБ + bbox Свердл

3. Vault обновлён research/Engineering_Networks_Schema_191FZ_May12.md Update part 2:

  • МСК-66 полная spec (proj4 + WKT + datum shift)
  • 24 layer-tree-group иерархия (для UI #102)
  • 88+ subtypes из rule-based renderers
  • 14 дополнительных классификаторов из Communication.qgz

Использование

PostgreSQL/PostGIS:

-- WGS84 → МСК-66
SELECT ST_Transform(geom, 100000) FROM cad_quarters_geom WHERE cad_number = '66:41:0204016';

-- МСК-66 → WGS84
SELECT ST_Transform(geom_msk66, 4326) FROM nspd_engineering_networks;

Python:

from app.core.crs import msk66_to_wgs84, wgs84_to_msk66

# WGS84 → МСК-66
x, y = wgs84_to_msk66(60.5975, 56.8389)  # центр ЕКБ

# МСК-66 → WGS84
lon, lat = msk66_to_wgs84(1532800, 6314100)

Foundation статус

Полная техническая основа для engineering networks готова:

  • Schema (137 NSI CLASSID + 73 справочника)
  • МСК-66 проекция Свердл (PostGIS + Python)
  • Иерархия 191-ФЗ (для UI WMS-overlay)
  • Detailed subtypes (88+ subtypes для иконографии)

Когда получим данные от МБУ Геотрест ЕКБ / Водоканала / РСО / Минстроя — INSERT прямо в schema без переделок. Все геоданные Свердл будут правильно перепроецироваться через SRID 100000.

См. полное обновление в Engineering_Networks_Schema_191FZ_May12 Update part 2.

## ✅ Финализировано — schema 191-ФЗ + МСК-66 + Python utility готовы ### 📋 Что добавлено в этой итерации **1. SQL миграция дополнена** `data/sql/85_engineering_networks_191fz.sql`: - INSERT МСК-66 в `spatial_ref_sys` (SRID **100000**) - Полный proj4 + WKT для PostGIS - ON CONFLICT update для re-apply safe **2. Python utility создан** `backend/app/core/crs.py`: - Константы: `WGS84_SRID`, `WEB_MERCATOR_SRID`, `MSK_66_SRID`, `MSK_66_PROJ4`, `MSK_66_WKT` - Lazy pyproj transformers: `get_msk66_to_wgs84()`, `get_wgs84_to_msk66()`, `get_msk66_to_mercator()`, `get_mercator_to_msk66()` - Convenience: `msk66_to_wgs84(x, y)` / `wgs84_to_msk66(lon, lat)` - Reference points: центр ЕКБ + bbox Свердл **3. Vault обновлён** `research/Engineering_Networks_Schema_191FZ_May12.md` Update part 2: - МСК-66 полная spec (proj4 + WKT + datum shift) - 24 layer-tree-group иерархия (для UI #102) - 88+ subtypes из rule-based renderers - 14 дополнительных классификаторов из Communication.qgz ### Использование **PostgreSQL/PostGIS:** ```sql -- WGS84 → МСК-66 SELECT ST_Transform(geom, 100000) FROM cad_quarters_geom WHERE cad_number = '66:41:0204016'; -- МСК-66 → WGS84 SELECT ST_Transform(geom_msk66, 4326) FROM nspd_engineering_networks; ``` **Python:** ```python from app.core.crs import msk66_to_wgs84, wgs84_to_msk66 # WGS84 → МСК-66 x, y = wgs84_to_msk66(60.5975, 56.8389) # центр ЕКБ # МСК-66 → WGS84 lon, lat = msk66_to_wgs84(1532800, 6314100) ``` ### Foundation статус Полная техническая основа для engineering networks готова: - ✅ Schema (137 NSI CLASSID + 73 справочника) - ✅ МСК-66 проекция Свердл (PostGIS + Python) - ✅ Иерархия 191-ФЗ (для UI WMS-overlay) - ✅ Detailed subtypes (88+ subtypes для иконографии) Когда получим данные от **МБУ Геотрест ЕКБ** / Водоканала / РСО / Минстроя — INSERT прямо в schema без переделок. Все геоданные Свердл будут правильно перепроецироваться через SRID 100000. См. полное обновление в [[Engineering_Networks_Schema_191FZ_May12]] Update part 2.
lekss361 commented 2026-05-12 11:54:16 +00:00 (Migrated from github.com)

Update 2026-05-12 — Engineering networks теперь bundled в NSPD QuarterDump

После breakthrough в #94 (REST search-by-quarter = primary pattern) — инженерные сети возвращаются автоматически в quarter dump, OSM-расширение становится опциональным.

Что bundled в search_by_quarter(cad_quarter)

Категория Сколько в test квартале 66:41:0303161 Что отдаёт
Сооружения (36370) 13 ЛЭП-опоры, насосные, ТП — поверхностные
Сооружения ЕГРН (36328) 7 Трубопроводы, ЦТП, водозабор
ЗОУИТ subcategory=17 (37578) часть из 15 ЗОУИТ Охранные зоны инженерных коммуникаций
ЗОУИТ.water (37580) часть из 15 ЗОУИТ Водоохранные зоны / СЗО водоснабжения
ЗОУИТ.СЗЗ (37579) часть из 15 ЗОУИТ СЗЗ предприятий

Все 5 типов инженерных объектов возвращаются одним REST-запросом с полной геометрией (GeoJSON Polygon / LineString в EPSG:3857) + атрибуцией.

Новый scope I3 (revision)

Tier 1 (через #94):

  • Сооружения (36370 + 36328) per-quarter — труба/ТП/ЦТП/насосная с геометрией
  • ЗОУИТ охранные зоны — водоохранные / СЗО / СЗЗ инженерных коммуникаций
  • Расчёт nearest_water_main_m, nearest_substation_m, nearest_gas_m, nearest_heat_m через ST_Distance(parcel_geom, network_geom) по таблицам:
    • nspd_constructions (36370 + 36328) — точная геометрия
    • nspd_zouit (37578/37580/37579) — охранные зоны

Tier 2 (OSM как fallback / cross-check):

  • Расширить OSM POI loader (man_made=water_works / wastewater_plant / power=substation / pipeline=*) — для координатной cross-validation с NSPD
  • Confidence score: если NSPD + OSM сходятся → high; если только OSM → medium; только NSPD → high

Tier 3 (deferred в #52 B2B):

  • РСО прямые договоры для точных мощностей (capacity, не геометрии) — этого нет в NSPD

Severity tier (updated)

Tier Условие Цвет
green NSPD: <200м все типы (water+sewage+power+gas+heat) 🟢
yellow NSPD: 200-500м хотя бы один тип отсутствует / OSM dropped in 🟡
red NSPD: >500м хотя бы один тип ИЛИ участок в ЗОУИТ сетей (incompatible w/ МКД) 🔴

Effort revision

  • Было: 1.5-2 дня (OSM-only extension)
  • Стало: 0.5 дня (NSPD bundle через #94) + 1 день OSM extension для cross-check
  • Net: примерно tot

Acceptance (updated)

  • После apply #94: nspd_constructions + nspd_zouit имеют данные для test квартала
  • /parcels/{cad}/analyze возвращает в engineering секции:
    • nearest_water_m, nearest_sewage_m, nearest_power_m, nearest_gas_m, nearest_heat_m (метры)
    • severity_tier (green/yellow/red)
    • data_sources (NSPD-only / NSPD+OSM / OSM-only)
  • Cross-check NSPD vs OSM: where both present, distance discrepancy <50m
  • Жесткий блок: участок в ЗОУИТ.subcategory=17 охранной зоне → can_build_mkd=false (см. G3 #30)

Dependencies

  • #94 (NSPD quarter client) — новый блокер (был просто recommended)
  • ETL pipeline после #94 заполняет nspd_constructions + nspd_zouit таблицы
  • Этот issue становится integration layer + scoring logic

См. NSPD_API_Map_May12 Update part 6 + Sprint4_SiteFinder_v4 Update part 4.

## Update 2026-05-12 — Engineering networks теперь bundled в NSPD QuarterDump После breakthrough в #94 (REST search-by-quarter = primary pattern) — **инженерные сети возвращаются автоматически** в quarter dump, OSM-расширение становится опциональным. ### Что bundled в `search_by_quarter(cad_quarter)` | Категория | Сколько в test квартале 66:41:0303161 | Что отдаёт | |---|---|---| | Сооружения (36370) | 13 | ЛЭП-опоры, насосные, ТП — поверхностные | | Сооружения ЕГРН (36328) | 7 | Трубопроводы, ЦТП, водозабор | | ЗОУИТ subcategory=17 (37578) | часть из 15 ЗОУИТ | Охранные зоны инженерных коммуникаций | | ЗОУИТ.water (37580) | часть из 15 ЗОУИТ | Водоохранные зоны / СЗО водоснабжения | | ЗОУИТ.СЗЗ (37579) | часть из 15 ЗОУИТ | СЗЗ предприятий | **Все 5 типов инженерных объектов** возвращаются одним REST-запросом с полной геометрией (GeoJSON Polygon / LineString в EPSG:3857) + атрибуцией. ### Новый scope I3 (revision) **Tier 1 (через #94):** - ✅ Сооружения (36370 + 36328) per-quarter — труба/ТП/ЦТП/насосная с геометрией - ✅ ЗОУИТ охранные зоны — водоохранные / СЗО / СЗЗ инженерных коммуникаций - ✅ Расчёт `nearest_water_main_m`, `nearest_substation_m`, `nearest_gas_m`, `nearest_heat_m` через `ST_Distance(parcel_geom, network_geom)` по таблицам: - `nspd_constructions` (36370 + 36328) — точная геометрия - `nspd_zouit` (37578/37580/37579) — охранные зоны **Tier 2 (OSM как fallback / cross-check):** - Расширить OSM POI loader (man_made=water_works / wastewater_plant / power=substation / pipeline=*) — для координатной cross-validation с NSPD - Confidence score: если NSPD + OSM сходятся → high; если только OSM → medium; только NSPD → high **Tier 3 (deferred в #52 B2B):** - РСО прямые договоры для **точных мощностей** (capacity, не геометрии) — этого нет в NSPD ### Severity tier (updated) | Tier | Условие | Цвет | |---|---|---| | green | NSPD: <200м все типы (water+sewage+power+gas+heat) | 🟢 | | yellow | NSPD: 200-500м хотя бы один тип отсутствует / OSM dropped in | 🟡 | | red | NSPD: >500м хотя бы один тип ИЛИ участок в ЗОУИТ сетей (incompatible w/ МКД) | 🔴 | ### Effort revision - **Было:** 1.5-2 дня (OSM-only extension) - **Стало:** 0.5 дня (NSPD bundle через #94) + 1 день OSM extension для cross-check - **Net:** примерно tot ### Acceptance (updated) - [ ] После apply #94: `nspd_constructions` + `nspd_zouit` имеют данные для test квартала - [ ] `/parcels/{cad}/analyze` возвращает в `engineering` секции: - `nearest_water_m`, `nearest_sewage_m`, `nearest_power_m`, `nearest_gas_m`, `nearest_heat_m` (метры) - `severity_tier` (green/yellow/red) - `data_sources` (NSPD-only / NSPD+OSM / OSM-only) - [ ] Cross-check NSPD vs OSM: where both present, distance discrepancy <50m - [ ] Жесткий блок: участок в `ЗОУИТ.subcategory=17` охранной зоне → can_build_mkd=false (см. G3 #30) ### Dependencies - **#94** (NSPD quarter client) — **новый блокер** (был просто recommended) - ETL pipeline после #94 заполняет nspd_constructions + nspd_zouit таблицы - Этот issue становится integration layer + scoring logic См. [[NSPD_API_Map_May12]] Update part 6 + [[Sprint4_SiteFinder_v4]] Update part 4.
Owner

Status update (2026-05-16) — Tier 1 substantially done через #94 PR1+PR2 (TIER 3 risk + TIER 4 opportunity + red lines).

Сделано:

  • nspd_quarter_dumps хранит cached snapshots (#116 / PR #110/#111)
  • TIER 3 risk zones (37580 водоохранные, 37579 СЗЗ) — PR #217
  • TIER 4 opportunity + red lines — PR #220
  • Schema engineering_networks 191-ФЗ + МСК-66 SRID 100000 — data/sql/85_engineering_networks_191fz.sql
  • denorm nspd_parcels / nspd_buildings — PR #222 (#94 PR3, in review)

Не сделано:

  • OSM utilities extension (man_made=water_works|wastewater_plant, power=substation|transformer, pipeline=gas|water|sewerage, man_made=heat_substation) — osm_poi_ekb не расширен этими категориями
  • engineering.nearest_water_m/nearest_substation_m etc fields в analyze response через ST_Distance(parcel_geom, nspd_constructions.geom) — НЕ вычисляются
  • severity_tier (green/yellow/red) для инженерки — нет

Issue остаётся валидным для closure после OSM extension + analyze.engineering вычислений. Effort снизился — schema есть, NSPD данные tier 3/4 поступают.

Status update (2026-05-16) — Tier 1 substantially done через #94 PR1+PR2 (TIER 3 risk + TIER 4 opportunity + red lines). **Сделано:** - `nspd_quarter_dumps` хранит cached snapshots (#116 / PR #110/#111) - TIER 3 risk zones (37580 водоохранные, 37579 СЗЗ) — PR #217 - TIER 4 opportunity + red lines — PR #220 - Schema `engineering_networks` 191-ФЗ + МСК-66 SRID 100000 — `data/sql/85_engineering_networks_191fz.sql` - denorm `nspd_parcels` / `nspd_buildings` — PR #222 (#94 PR3, in review) **Не сделано:** - OSM utilities extension (`man_made=water_works|wastewater_plant`, `power=substation|transformer`, `pipeline=gas|water|sewerage`, `man_made=heat_substation`) — `osm_poi_ekb` не расширен этими категориями - `engineering.nearest_water_m`/`nearest_substation_m` etc fields в analyze response через `ST_Distance(parcel_geom, nspd_constructions.geom)` — НЕ вычисляются - severity_tier (green/yellow/red) для инженерки — нет Issue остаётся валидным для closure после OSM extension + analyze.engineering вычислений. Effort снизился — schema есть, NSPD данные tier 3/4 поступают.
Sign in to join this conversation.
No project
No assignees
2 participants
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#44
No description provided.