Engineering networks: Hybrid plan (ФГИС ТП XSD + ИСОГД + Водоканал ЕКБ) — альтернативные источники #103

Closed
opened 2026-05-12 09:50:01 +00:00 by lekss361 · 3 comments
lekss361 commented 2026-05-12 09:50:01 +00:00 (Migrated from github.com)

Эшелон: Engineering Data Sources — Alternative pathways

Контекст / открытие

После исчерпывающего audit альтернативных источников engineering networks для Свердл/ЕКБ (см. NSPD_API_Map_May12 Update part 5):

Источник API доступ Effort
ФГИС ТП HMAC-protected + XSD-схемы публикованы 5-7 дней
РГИС Свердл (geoportal.egov66.ru) Test, B2B only multi-week
ИСОГД minstroy.midural.ru HTML + PDF 3-4 дня
МУП Водоканал ЕКБ WordPress сайт + Yandex Maps 1-2 дня
ekburg.ru info-map НЕТ инженерки

Главный insight — XSD-схемы ФГИС ТП

🔥 Приказ Минэкономразвития РФ №89 от 13.02.2025 обязал размещать XSD-схемы для XML-документов тер.планирования на ФГИС ТП:

  • https://fgistp.economy.gov.ru/metod-materials/41.pdf
  • Любой XML-документ ПЗЗ / Генплан / Схема тер.планирования соответствует стандарту
  • Имея XSD → можем парсить локально документы

Hybrid план (3 параллельных потока)

🎯 Поток 1: Водоканал ЕКБ — quick win (1-2 дня)

Что: WordPress scraper для https://xn--80aadbki6adhshb.xn--p1ai/online-service/karta-perekladki-setej/

Реализация:

  • Backend backend/app/services/scrapers/vodokanal_ekb.py
  • WordPress REST API /wp-json/wp/v2/...?slug=karta-perekladki-setej
  • ACF endpoint /wp-json/acf/v3/ (если активен)
  • Если ACF закрыт → Playwright extract embedded Yandex Maps data
  • Schema:
    CREATE TABLE vodokanal_repair_plans (
      id BIGSERIAL PRIMARY KEY,
      street_address TEXT,
      pipe_diameter_mm INT,
      pipe_length_m NUMERIC,
      network_type TEXT,  -- water / sewage
      planned_year INT,
      geom GEOMETRY,
      source_url TEXT,
      fetched_at TIMESTAMPTZ DEFAULT NOW()
    );
    
  • Celery beat: ежемесячный refresh

Включить в Site Finder analyze:

  • engineering.water_repair_within_500m: {count, list} — флаг развития инфраструктуры рядом

Effort: ~1-2 дня

🎯 Поток 2: ИСОГД минстроя Свердл (3-4 дня)

Что: HTML/PDF scraper для http://minstroy.midural.ru/article/show/id/10070

Что выкачиваем:

  • Реестр выданных РНС (разрешения на строительство) — кто получил, на каком участке
  • ППТ (Проекты Планировки Территории) — границы развития районов
  • Утверждённые ПЗЗ — пишут в текстовых документах

Реализация:

  • Backend backend/app/services/scrapers/isogd_sverdl.py
  • Beautiful Soup для HTML списка
  • pdfplumber для извлечения структурированных таблиц
  • Schema:
    CREATE TABLE isogd_permits (
      id BIGSERIAL PRIMARY KEY,
      permit_number TEXT,
      issue_date DATE,
      developer_name TEXT,
      cad_num TEXT,             -- кадастровый номер участка
      object_type TEXT,         -- МКД / ИЖС / коммерч.
      floors INT,
      total_area_sqm NUMERIC,
      address TEXT,
      geom GEOMETRY,
      source_url TEXT,
      fetched_at TIMESTAMPTZ DEFAULT NOW()
    );
    
  • Celery beat: weekly refresh

Включить в Site Finder analyze:

  • engineering.recent_permits_500m: [...] — какие РНС выданы рядом за 12 мес
  • engineering.permits_volume_5km: {total_area, total_units} — общий объём строительства в районе → cross-check с D4 pipeline

Effort: ~3-4 дня

🎯 Поток 3: ФГИС ТП XML parser (5-7 дней, опц.)

Что: Playwright-scraper для скачивания XML-документов тер.планирования по Свердл + парсер через XSD-схемы

Реализация:

  • Скачать XSD-схемы с https://fgistp.economy.gov.ru/metod-materials/41.pdf
  • Извлечь XSD из приказа (приложения) либо запросить через support
  • Backend backend/app/services/scrapers/fgis_tp.py
  • Playwright для HMAC-обхода + поиск документов по «Свердловская область»
  • Скачивание XML-файлов
  • Локальный XSD-парсер (lxml + xmlschema) — извлечь тер.зоны / границы / параметры ПЗЗ
  • Schema:
    CREATE TABLE fgis_tp_documents (
      id BIGSERIAL PRIMARY KEY,
      uin TEXT,             -- УИН документа
      title TEXT,
      doc_type TEXT,        -- Генплан / ПЗЗ / СТП / etc
      territory TEXT,
      approved_date DATE,
      xml_url TEXT,
      parsed_at TIMESTAMPTZ
    );
    
    CREATE TABLE fgis_tp_territorial_zones (
      id BIGSERIAL PRIMARY KEY,
      document_id BIGINT REFERENCES fgis_tp_documents(id),
      zone_code TEXT,       -- Ж-1 / Ж-2 / ОД-1 / etc
      max_floors INT,
      max_far NUMERIC,
      parking_per_unit NUMERIC,
      geom GEOMETRY,
      raw_xml_props JSONB
    );
    

Включить в Site Finder analyze:

  • gate.pzz_zone_official: {zone_code, params} — официальные параметры ПЗЗ
  • Дополняет/заменяет G1 #28 + G4 #31

Effort: ~5-7 дней (зависит от сложности HMAC + scope XSD-схем)

🎯 Поток 4: B2B каналы (multi-week, в #52)

Для Макса:

  1. РГИС Свердл (geoportal.egov66.ru) — Минцифры Свердл, B2B API access
  2. МУП Водоканал ЕКБ — выгрузка полной карты сетей (не только ремонты) в обмен на технический партнёрство
  3. Минстрой ЕКБ (ИСОГД) — официальный data partner, machine API доступ
  4. Свердловэнерго / СвердловскГаз / СТК / Т Плюс — выгрузки сетей под NDA
  5. Прокадастр / EGRN.reestr.net — платные API ~10-30K ₽/мес декодируют НСПД

Acceptance per поток

Поток 1 (Водоканал)

  • vodokanal_repair_plans >50 записей для ЕКБ
  • analyze возвращает water_repair_within_500m
  • Sentry alert если scraper сломался

Поток 2 (ИСОГД)

  • isogd_permits >100 записей для Свердл
  • analyze возвращает recent_permits_500m и permits_volume_5km
  • Cross-check с domrf_kn_objects: рост correlation 0.6+

Поток 3 (ФГИС ТП)

  • >10 документов Свердл загружено
  • >100 тер.зон извлечено
  • analyze возвращает pzz_zone_official для test cad

Owner

  • Поток 1, 2, 3 → backend-engineer (scrapers) + database-expert (schemas)
  • Поток 4 → главное в #52 B2B-реестр (operations + лицензии)

Effort

  • Total для потоков 1+2: ~4-6 дней (быстрый MVP win)
  • +поток 3: еще +5-7 дней (XSD parser)
  • +поток 4: multi-week (зависит от Макса и контрагентов)

Dependencies

  • НСПД WMS-overlay (#102) — уже как baseline
  • #94 NSPD client — не зависит, параллельно

Risks / open

  • ФГИС ТП HMAC обход — может сломаться при изменении портала. Mitigation: Playwright + Sentry alerts.
  • ИСОГД формат не стандартизирован — каждый муниципалитет публикует по-своему. Mitigation: parser per источник.
  • Юр.чистота scrapping — публичные данные по закону, но проверить ToS каждого источника. В #80 B7-2 licenses audit.
  • WordPress сайт Водоканала может менять структуру — нужен Sentry alert на schema change.

Why high value

  • Не зависим от НСПД ESIA-scope — обходим ограничение #101
  • Дополняем НСПД WMS-overlay реальными feature properties
  • Local DB → fast queries для recommend / scoring
  • Trust для девелопера: мы видим РНС, ППТ, ремонты — больше чем НСПД (там только rendered map)
**Эшелон:** Engineering Data Sources — Alternative pathways ## Контекст / открытие После исчерпывающего audit альтернативных источников engineering networks для Свердл/ЕКБ (см. [[NSPD_API_Map_May12]] Update part 5): | Источник | API доступ | Effort | |---|---|---| | **ФГИС ТП** | HMAC-protected + XSD-схемы публикованы | 5-7 дней | | **РГИС Свердл (geoportal.egov66.ru)** | Test, B2B only | multi-week | | **ИСОГД minstroy.midural.ru** | HTML + PDF | 3-4 дня | | **МУП Водоканал ЕКБ** | WordPress сайт + Yandex Maps | 1-2 дня | | **ekburg.ru info-map** | НЕТ инженерки | — | ## Главный insight — XSD-схемы ФГИС ТП 🔥 **Приказ Минэкономразвития РФ №89 от 13.02.2025** обязал размещать **XSD-схемы для XML-документов тер.планирования** на ФГИС ТП: - https://fgistp.economy.gov.ru/metod-materials/41.pdf - Любой XML-документ ПЗЗ / Генплан / Схема тер.планирования соответствует стандарту - Имея XSD → можем **парсить локально** документы ## Hybrid план (3 параллельных потока) ### 🎯 Поток 1: Водоканал ЕКБ — quick win (1-2 дня) **Что:** WordPress scraper для https://xn--80aadbki6adhshb.xn--p1ai/online-service/karta-perekladki-setej/ **Реализация:** - Backend `backend/app/services/scrapers/vodokanal_ekb.py` - WordPress REST API `/wp-json/wp/v2/...?slug=karta-perekladki-setej` - ACF endpoint `/wp-json/acf/v3/` (если активен) - Если ACF закрыт → Playwright extract embedded Yandex Maps data - Schema: ```sql CREATE TABLE vodokanal_repair_plans ( id BIGSERIAL PRIMARY KEY, street_address TEXT, pipe_diameter_mm INT, pipe_length_m NUMERIC, network_type TEXT, -- water / sewage planned_year INT, geom GEOMETRY, source_url TEXT, fetched_at TIMESTAMPTZ DEFAULT NOW() ); ``` - Celery beat: ежемесячный refresh **Включить в Site Finder analyze:** - `engineering.water_repair_within_500m: {count, list}` — флаг развития инфраструктуры рядом **Effort:** ~1-2 дня ### 🎯 Поток 2: ИСОГД минстроя Свердл (3-4 дня) **Что:** HTML/PDF scraper для http://minstroy.midural.ru/article/show/id/10070 **Что выкачиваем:** - Реестр выданных РНС (разрешения на строительство) — кто получил, на каком участке - ППТ (Проекты Планировки Территории) — границы развития районов - Утверждённые ПЗЗ — пишут в текстовых документах **Реализация:** - Backend `backend/app/services/scrapers/isogd_sverdl.py` - Beautiful Soup для HTML списка - pdfplumber для извлечения структурированных таблиц - Schema: ```sql CREATE TABLE isogd_permits ( id BIGSERIAL PRIMARY KEY, permit_number TEXT, issue_date DATE, developer_name TEXT, cad_num TEXT, -- кадастровый номер участка object_type TEXT, -- МКД / ИЖС / коммерч. floors INT, total_area_sqm NUMERIC, address TEXT, geom GEOMETRY, source_url TEXT, fetched_at TIMESTAMPTZ DEFAULT NOW() ); ``` - Celery beat: weekly refresh **Включить в Site Finder analyze:** - `engineering.recent_permits_500m: [...]` — какие РНС выданы рядом за 12 мес - `engineering.permits_volume_5km: {total_area, total_units}` — общий объём строительства в районе → cross-check с D4 pipeline **Effort:** ~3-4 дня ### 🎯 Поток 3: ФГИС ТП XML parser (5-7 дней, опц.) **Что:** Playwright-scraper для скачивания XML-документов тер.планирования по Свердл + парсер через XSD-схемы **Реализация:** - Скачать XSD-схемы с https://fgistp.economy.gov.ru/metod-materials/41.pdf - Извлечь XSD из приказа (приложения) либо запросить через support - Backend `backend/app/services/scrapers/fgis_tp.py` - Playwright для HMAC-обхода + поиск документов по «Свердловская область» - Скачивание XML-файлов - Локальный XSD-парсер (lxml + xmlschema) — извлечь тер.зоны / границы / параметры ПЗЗ - Schema: ```sql CREATE TABLE fgis_tp_documents ( id BIGSERIAL PRIMARY KEY, uin TEXT, -- УИН документа title TEXT, doc_type TEXT, -- Генплан / ПЗЗ / СТП / etc territory TEXT, approved_date DATE, xml_url TEXT, parsed_at TIMESTAMPTZ ); CREATE TABLE fgis_tp_territorial_zones ( id BIGSERIAL PRIMARY KEY, document_id BIGINT REFERENCES fgis_tp_documents(id), zone_code TEXT, -- Ж-1 / Ж-2 / ОД-1 / etc max_floors INT, max_far NUMERIC, parking_per_unit NUMERIC, geom GEOMETRY, raw_xml_props JSONB ); ``` **Включить в Site Finder analyze:** - `gate.pzz_zone_official: {zone_code, params}` — официальные параметры ПЗЗ - Дополняет/заменяет G1 #28 + G4 #31 **Effort:** ~5-7 дней (зависит от сложности HMAC + scope XSD-схем) ### 🎯 Поток 4: B2B каналы (multi-week, в #52) Для Макса: 1. **РГИС Свердл (geoportal.egov66.ru)** — Минцифры Свердл, B2B API access 2. **МУП Водоканал ЕКБ** — выгрузка полной карты сетей (не только ремонты) в обмен на технический партнёрство 3. **Минстрой ЕКБ (ИСОГД)** — официальный data partner, machine API доступ 4. **Свердловэнерго / СвердловскГаз / СТК / Т Плюс** — выгрузки сетей под NDA 5. **Прокадастр / EGRN.reestr.net** — платные API ~10-30K ₽/мес декодируют НСПД ## Acceptance per поток ### Поток 1 (Водоканал) - [ ] `vodokanal_repair_plans` >50 записей для ЕКБ - [ ] analyze возвращает `water_repair_within_500m` - [ ] Sentry alert если scraper сломался ### Поток 2 (ИСОГД) - [ ] `isogd_permits` >100 записей для Свердл - [ ] analyze возвращает `recent_permits_500m` и `permits_volume_5km` - [ ] Cross-check с domrf_kn_objects: рост correlation 0.6+ ### Поток 3 (ФГИС ТП) - [ ] >10 документов Свердл загружено - [ ] >100 тер.зон извлечено - [ ] analyze возвращает `pzz_zone_official` для test cad ## Owner - Поток 1, 2, 3 → `backend-engineer` (scrapers) + `database-expert` (schemas) - Поток 4 → главное в **#52 B2B-реестр** (operations + лицензии) ## Effort - **Total для потоков 1+2:** ~4-6 дней (быстрый MVP win) - **+поток 3:** еще +5-7 дней (XSD parser) - **+поток 4:** multi-week (зависит от Макса и контрагентов) ## Dependencies - НСПД WMS-overlay (#102) — уже как baseline - #94 NSPD client — не зависит, параллельно ## Risks / open - **ФГИС ТП HMAC обход** — может сломаться при изменении портала. Mitigation: Playwright + Sentry alerts. - **ИСОГД формат не стандартизирован** — каждый муниципалитет публикует по-своему. Mitigation: parser per источник. - **Юр.чистота scrapping** — публичные данные по закону, но проверить ToS каждого источника. В #80 B7-2 licenses audit. - **WordPress сайт Водоканала может менять структуру** — нужен Sentry alert на schema change. ## Why high value - **Не зависим от НСПД ESIA-scope** — обходим ограничение #101 - **Дополняем НСПД WMS-overlay** реальными feature properties - **Local DB → fast queries** для recommend / scoring - **Trust для девелопера:** мы видим РНС, ППТ, ремонты — больше чем НСПД (там только rendered map) ## Links - Research: [[NSPD_API_Map_May12]] Update part 5 — полные probe-результаты для каждого источника - Cross-ref: #44 I3, #94, #101, #102, #52 B2B-реестр - ФГИС ТП XSD-приказ: https://fgistp.economy.gov.ru/metod-materials/41.pdf - Водоканал ЕКБ карта: https://xn--80aadbki6adhshb.xn--p1ai/online-service/karta-perekladki-setej/
Owner

Status update — Поток 2 (ИСОГД) частично закрыт через PR #211/#213 (ekburg РНС/РВЭ xlsx parser + Celery beat + analyze integration recent_permits).

Остаётся:

  • Поток 1 (Водоканал ЕКБ) — НЕ реализован, таблицы vodokanal_repair_plans нет
  • Поток 2 расширение (ППТ + ГПЗУ) — есть только РНС/РВЭ (см. #107 — ekburg.ru/isogd full scope)
  • Поток 3 (ФГИС ТП XML + XSD parser) — НЕ начат, таблиц fgis_tp_documents / fgis_tp_territorial_zones нет
  • Поток 4 (B2B) — отдельный реестр #52/#53

MVP уже работает через РНС/РВЭ. Issue остаётся для трекинга Потоков 1, 3.

Status update — Поток 2 (ИСОГД) частично закрыт через PR #211/#213 (ekburg РНС/РВЭ xlsx parser + Celery beat + analyze integration `recent_permits`). **Остаётся:** - **Поток 1 (Водоканал ЕКБ)** — НЕ реализован, таблицы `vodokanal_repair_plans` нет - **Поток 2 расширение (ППТ + ГПЗУ)** — есть только РНС/РВЭ (см. #107 — ekburg.ru/isogd full scope) - **Поток 3 (ФГИС ТП XML + XSD parser)** — НЕ начат, таблиц `fgis_tp_documents` / `fgis_tp_territorial_zones` нет - **Поток 4 (B2B)** — отдельный реестр #52/#53 MVP уже работает через РНС/РВЭ. Issue остаётся для трекинга Потоков 1, 3.
Collaborator

Recon Поток-1 (Водоканал ЕКБ) через браузер/WP-REST — источник изменился, quick-win больше неверен:

  • Старый URL /online-service/karta-perekladki-setej/404 (страница удалена).
  • WP REST поиск перекладк/карта по pages → 0; среди CPT (service/projects/media-center/info/education/years100/...) карты-CPT нет.
  • Сервис карты ЖИВ: статья media-center/novosti/plan-remonta-setej-vodosnabzheniya-na-onlajn-karte/ («План ремонта сетей на онлайн-карте») ссылается на него, НО в контенте статьи нет ни iframe, ни map-URL → карта грузится JS-виджетом (Yandex Maps embed) на отдельной странице, не через чистый WP REST/ACF.
  • Вывод: Поток-1 ≠ «1-2 дня». Чистого scrapeable endpoint нет; нужна более глубокая browser-экстракция data-source встроенной Yandex-карты (constructor API / network sniff) ради marginal-сигнала water_repair_within_500m. Рекомендую деприоритизировать Поток-1 в пользу Поток-3 (ФГИС ТП XSD — durable, Приказ МЭР №89) либо отложить.
  • NB: ЗОУИТ-часть «сетевые обременения» уже отгружена отдельно (#1070, теплосети/электро/газ/вода/связь из cad_zouit).
Recon Поток-1 (Водоканал ЕКБ) через браузер/WP-REST — **источник изменился, quick-win больше неверен**: - Старый URL `/online-service/karta-perekladki-setej/` → **404** (страница удалена). - WP REST поиск `перекладк`/`карта` по pages → 0; среди CPT (`service/projects/media-center/info/education/years100/...`) карты-CPT нет. - Сервис карты ЖИВ: статья `media-center/novosti/plan-remonta-setej-vodosnabzheniya-na-onlajn-karte/` («План ремонта сетей на онлайн-карте») ссылается на него, НО в контенте статьи нет ни iframe, ни map-URL → карта грузится **JS-виджетом (Yandex Maps embed)** на отдельной странице, не через чистый WP REST/ACF. - **Вывод**: Поток-1 ≠ «1-2 дня». Чистого scrapeable endpoint нет; нужна более глубокая browser-экстракция data-source встроенной Yandex-карты (constructor API / network sniff) ради marginal-сигнала `water_repair_within_500m`. Рекомендую деприоритизировать Поток-1 в пользу Поток-3 (ФГИС ТП XSD — durable, Приказ МЭР №89) либо отложить. - NB: ЗОУИТ-часть «сетевые обременения» уже отгружена отдельно (#1070, теплосети/электро/газ/вода/связь из cad_zouit).
lekss361 added the
priority/p1
scope/backend
labels 2026-06-17 20:17:59 +00:00
Collaborator

Ревизия 2026-07-04 — закрываю как superseded

План писался в мае; с тех пор цели issue закрыты другими путями:

Поток Цель Что live сейчас
1. Водоканал ЕКБ вода-данные в analyze Водоканал-лоадер live (Фаза A #2119): резервы мощности воды из инвестпрограмм в §3, с freshness-монитором. Карта перекладок как отдельный слой не делалась — резервы дают больше сигнала, чем ремонты
2. ИСОГД РНС ранний сигнал future-supply не делалось → вынесен в #2367 (единственный живой остаток)
3. ФГИС ТП XSD официальные параметры ПЗЗ перекрыто НСПД quarter-dumps: тер.зоны + градрегламент (этажность/КСИТ) резолвятся из квартальных дампов (#1891 zone-decouple → financial_estimate 0→542/542); отдельный XML/XSD-парсер ФГИС ТП не нужен
4. B2B-каналы полные карты сетей живёт в #52 + #2254 (ЕЭСК реестр ТП — needs-human)

Сверх плана §3 получил полный connection-capacity слой (Фазы A+B1+B2+C, #2119): электро Россети+ЕЭСК (МВт по районам), газ ГРС, тепло ФГИС ФАС, вода — «единый источник по сетям» фактически реализован комбинацией источников, отличной от предложенной здесь.

Смежное: обзор «все сети на карту» — #1746 (открыт). Закрываю; reopen, если понадобится вернуться к ФГИС ТП XML как источнику.

## Ревизия 2026-07-04 — закрываю как superseded План писался в мае; с тех пор цели issue закрыты другими путями: | Поток | Цель | Что live сейчас | |---|---|---| | 1. Водоканал ЕКБ | вода-данные в analyze | ✅ **Водоканал-лоадер live** (Фаза A #2119): резервы мощности воды из инвестпрограмм в §3, с freshness-монитором. Карта перекладок как отдельный слой не делалась — резервы дают больше сигнала, чем ремонты | | 2. ИСОГД РНС | ранний сигнал future-supply | ❌ не делалось → вынесен в **#2367** (единственный живой остаток) | | 3. ФГИС ТП XSD | официальные параметры ПЗЗ | ✅ перекрыто **НСПД quarter-dumps**: тер.зоны + градрегламент (этажность/КСИТ) резолвятся из квартальных дампов (#1891 zone-decouple → financial_estimate 0→542/542); отдельный XML/XSD-парсер ФГИС ТП не нужен | | 4. B2B-каналы | полные карты сетей | живёт в #52 + #2254 (ЕЭСК реестр ТП — needs-human) | Сверх плана §3 получил полный connection-capacity слой (Фазы A+B1+B2+C, #2119): электро Россети+ЕЭСК (МВт по районам), газ ГРС, тепло ФГИС ФАС, вода — «единый источник по сетям» фактически реализован комбинацией источников, отличной от предложенной здесь. Смежное: обзор «все сети на карту» — #1746 (открыт). Закрываю; reopen, если понадобится вернуться к ФГИС ТП XML как источнику.
Sign in to join this conversation.
No project
No assignees
3 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#103
No description provided.