[ИРД-2] ПЗЗ — ВРИ + предельные параметры (высота/FAR/паркинг) #1059

Closed
opened 2026-06-05 03:46:20 +00:00 by bot-backend · 4 comments
Collaborator

Запрос команды (Макс/Леха) 2026-06-04 для «волшебной таблицы» (= analyze/§22). Источники: ПКК pkk.rosreestr.ru, НСПД нспд.рф, portal.okn.midural.ru, приказы ПАТ.

Существующее: 🟡 PARTIAL. НСПД territorial_zones=875838 зашит; analyze.zoning (zone_code/zone_name) + nspd_zoning; gate_verdict проверяет префикс «Ж-».
Пробел: ВРИ (виды разрешённого использования) + предельные параметры (макс. высота/этажность, FAR/плотность, паркинг) НЕ распарсены — отдаётся только имя зоны.
Источник: НСПД 875838 (есть). Caveat: предельные параметры часто НЕ в props НСПД — они в тексте регламента ПЗЗ; ВРИ-классификатор = Приказ Росреестра П/0412. Открытый shape ПЗЗ ЕКБ НЕ публичен на data.midural (см. parcels.py:2126).
План: распарсить ВРИ из props/классификатора + извлечь height/FAR/parking из pzz_zones_ekb.raw_props (см. #31) / регламента → поля в analyze.zoning.
Acceptance: analyze отдаёт ВРИ + предельные параметры (или честный «нет в данных»).
Связано: #29 (ВРИ+категория из НСПД), #31 (max_floors/FAR из pzz raw_props), #28.

_Запрос команды (Макс/Леха) 2026-06-04 для «волшебной таблицы» (= analyze/§22). Источники: ПКК pkk.rosreestr.ru, НСПД нспд.рф, portal.okn.midural.ru, приказы ПАТ._ **Существующее:** 🟡 PARTIAL. НСПД `territorial_zones=875838` зашит; `analyze.zoning` (zone_code/zone_name) + `nspd_zoning`; `gate_verdict` проверяет префикс «Ж-». **Пробел:** **ВРИ** (виды разрешённого использования) + **предельные параметры** (макс. высота/этажность, FAR/плотность, паркинг) НЕ распарсены — отдаётся только имя зоны. **Источник:** НСПД 875838 (есть). Caveat: предельные параметры **часто НЕ в props НСПД** — они в тексте регламента ПЗЗ; ВРИ-классификатор = Приказ Росреестра П/0412. Открытый shape ПЗЗ ЕКБ НЕ публичен на data.midural (см. `parcels.py:2126`). **План:** распарсить ВРИ из props/классификатора + извлечь height/FAR/parking из `pzz_zones_ekb.raw_props` (см. #31) / регламента → поля в `analyze.zoning`. **Acceptance:** analyze отдаёт ВРИ + предельные параметры (или честный «нет в данных»). **Связано:** #29 (ВРИ+категория из НСПД), #31 (max_floors/FAR из pzz raw_props), #28.
bot-backend added the
scope/backend
status/ready
ИРД
GG-форсайт
site-finder
labels 2026-06-05 03:46:20 +00:00
lekss361 added this to the Site Finder v2 — Foresight (GG-форсайт) milestone 2026-06-05 07:22:43 +00:00
Owner

🔬 Research-дополнение (2026-06-05)

Правовая база — ВРИ-классификатор (verified)

  • Приказ Росреестра от 10.11.2020 № П/0412 «Об утверждении классификатора ВРИ ЗУ», Минюст 15.12.2020 № 61482. Действует в 2026 — issue цитирует верно. pravo.gov.ru, ГАРАНТ 75062082.
  • ⚠️ Свежая правка — учесть: Приказ Росреестра от 18.12.2025 № П/0447/25 вносит изменения в П/0412; классификатор действует в редакции с 17.04.2026. Правки точечные (код 7.1 / 7.1.2 ж/д); жилые коды 2.x не затронуты, но при хардкоде таблицы брать редакцию ≥17.04.2026. Консультант LAW_530901.

Предельные параметры — где физически лежат (verified)

  • Подтверждаю caveat issue: предельные параметры (высота/этажность, % застройки, плотность, паркинг) НЕ в props НСПД 875838. НСПД даёт только zone_code + имя зоны (quarter_dump_lookup.py:301-305, pzz_loader.py:101-108). Параметры — в тексте градрегламента ПЗЗ.
  • ⚠️ Актуальный источник ПЗЗ ЕКБ (исправить в коде/доках): ПЗЗ сейчас — Постановление Администрации г. Екатеринбурга от 10.06.2022 № 1597 (ред. от 15.07.2025 № 1598), а не Решение Гордумы № 22/83 от 19.06.2018 (утратило силу). ГАРАНТ 404818751.
  • Открытого машиночитаемого shape ПЗЗ ЕКБ на data.midural.ru нет (подтверждает parcels.py:2204-2210). Геометрия зон → НСПД 875838; предельные параметры → парсинг текста регламента / ручной справочник pzz_zones_ekb.raw_props.

Авто vs вручную

Поле Авто? Источник Метод
zone_code / zone_name НСПД 875838cad_territorial_zones grid-walk WMS
ВРИ (коды зоны) 🟡 props НСПД + классиф. П/0412 (ред. 17.04.2026) парсинг props + статич. таблица
высота/этажность/%/FAR/паркинг текст регламента ПЗЗ (Пост. №1597) / ГИСОГД ручной импорт pzz_zones_ekb.raw_props (#31)

Уточнённый DoD

  1. analyze.zoning.vri: list[{code, name}] — коды по П/0412 ред. 17.04.2026 (таблица помечена № приказа и датой).
  2. Предельные параметры из pzz_zones_ekb.raw_props (#31); при отсутствии — честный {"data_available": false, "note": "см. регламент ПЗЗ Пост. №1597"}, без выдуманных значений.
  3. Тест: участок в зоне Ж-… → vri непуст; без pzz_zones_ekb → честный «нет в данных», не падение.

Effort / Risk

  • Effort: S (ВРИ) + M (схема + интеграция #31). Risk: код низкий; data-риск средний — параметры не в открытых данных, по большинству участков останутся «нет в данных» пока не сделан #31.
  • Зависимости: #31 (max_floors/FAR из raw_props) — фактический prereq непустых параметров; #29.

Рекомендация по label

Держать status/ready по ВРИ-части. Полные предельные параметры зависят от #31 — если #31 не закрыт, сузить acceptance до «ВРИ + честный fallback», полноту параметров вынести в #31 (иначе риск пустого результата по половине acceptance).

## 🔬 Research-дополнение (2026-06-05) ### Правовая база — ВРИ-классификатор (verified) - **Приказ Росреестра от 10.11.2020 № П/0412** «Об утверждении классификатора ВРИ ЗУ», Минюст **15.12.2020 № 61482**. **Действует** в 2026 — issue цитирует верно. [pravo.gov.ru](http://publication.pravo.gov.ru/Document/View/0001202012160040), [ГАРАНТ 75062082](https://base.garant.ru/75062082/). - ⚠️ **Свежая правка — учесть:** **Приказ Росреестра от 18.12.2025 № П/0447/25** вносит изменения в П/0412; классификатор действует **в редакции с 17.04.2026**. Правки точечные (код 7.1 / 7.1.2 ж/д); жилые коды 2.x не затронуты, но при хардкоде таблицы брать редакцию ≥17.04.2026. [Консультант LAW_530901](https://www.consultant.ru/document/cons_doc_LAW_530901/). ### Предельные параметры — где физически лежат (verified) - Подтверждаю caveat issue: **предельные параметры (высота/этажность, % застройки, плотность, паркинг) НЕ в props НСПД `875838`**. НСПД даёт только `zone_code` + имя зоны (`quarter_dump_lookup.py:301-305`, `pzz_loader.py:101-108`). Параметры — **в тексте градрегламента ПЗЗ**. - ⚠️ **Актуальный источник ПЗЗ ЕКБ (исправить в коде/доках):** ПЗЗ сейчас — **Постановление Администрации г. Екатеринбурга от 10.06.2022 № 1597** (ред. от 15.07.2025 № 1598), а **не** Решение Гордумы № 22/83 от 19.06.2018 (утратило силу). [ГАРАНТ 404818751](https://base.garant.ru/404818751/). - Открытого машиночитаемого shape ПЗЗ ЕКБ на `data.midural.ru` **нет** (подтверждает `parcels.py:2204-2210`). Геометрия зон → НСПД `875838`; предельные параметры → парсинг текста регламента / ручной справочник `pzz_zones_ekb.raw_props`. ### Авто vs вручную | Поле | Авто? | Источник | Метод | |---|---|---|---| | zone_code / zone_name | ✅ | НСПД `875838` → `cad_territorial_zones` | grid-walk WMS | | ВРИ (коды зоны) | 🟡 | props НСПД + классиф. П/0412 (ред. 17.04.2026) | парсинг props + статич. таблица | | высота/этажность/%/FAR/паркинг | ❌ | текст регламента ПЗЗ (Пост. №1597) / ГИСОГД | ручной импорт `pzz_zones_ekb.raw_props` (#31) | ### Уточнённый DoD 1. `analyze.zoning.vri: list[{code, name}]` — коды по П/0412 **ред. 17.04.2026** (таблица помечена № приказа и датой). 2. Предельные параметры из `pzz_zones_ekb.raw_props` (#31); при отсутствии — честный `{"data_available": false, "note": "см. регламент ПЗЗ Пост. №1597"}`, **без выдуманных значений**. 3. Тест: участок в зоне Ж-… → `vri` непуст; без `pzz_zones_ekb` → честный «нет в данных», не падение. ### Effort / Risk - **Effort:** S (ВРИ) + M (схема + интеграция #31). **Risk:** код низкий; data-риск средний — параметры не в открытых данных, по большинству участков останутся «нет в данных» пока не сделан #31. - **Зависимости:** **#31** (max_floors/FAR из raw_props) — фактический prereq непустых параметров; #29. ### Рекомендация по label Держать `status/ready` **по ВРИ-части**. Полные предельные параметры зависят от #31 — если #31 не закрыт, сузить acceptance до «ВРИ + честный fallback», полноту параметров вынести в #31 (иначе риск пустого результата по половине acceptance).
Owner

🛰️ Разведка ПЗЗ ВРИ+параметры — геопортал ЕКБ (2026-06-06, Playwright)

TL;DR: 🟢 геометрия+индекс зоны — в WFS; ВРИ+предельные параметры — через urbanCard (поле pzzList), endpoint подтверждён вживую.

Геометрия + индекс зоны (WFS, CONFIRMED)

  • portal:portal_geo_urban_ter_zone = 10532 фич, portal_geo_subzone = 321 (подзоны).
  • Атрибуты фичи: urban_index («СХ-3»), urban_kind_obj_v («СХ-3 Зона ведения садоводства и огородничества» — имя зоны), info_set_key (ссылка на документ ПЗЗ), guid, геометрия.
  • INTERSECTS(geoloc, POINT(lon lat)) 4326 lon-lat → индекс+имя зоны участка. 🟢

ВРИ + предельные параметры (высота/FAR/паркинг) — urbanCard

Сам регламент в фиче НЕ лежит — резолвится через POST /api/urbanCard/portal (подтверждено вживую: HTTP 200, схема ответа):

{ title, parcels[], constructions[], adrCapitalBuildings[],
  pzzList[],                          ← регламент ПЗЗ (ВРИ + предельные параметры)
  regionsSpecialUse:{ waterProtectionRegions, …}, …}  ← бонус: ЗОУИТ (ИРД-7/8)
  • Тело: {project:'portal', keys:[<objectKey>]} (200; вернул пустые массивы на ключ зоны — точный ключ = parcel/точка, не zone-key, уточнить воркеру: вероятно urbanCard ждёт кадастровый/parcel key либо точку из searchByGeom).
  • searchByGeom (POST /api/gis/spatialObject/searchByGeom, точка 4326) на тест-точке вернул UrbanTerZone + SpecialZone×9 (ЗОУИТ) + GknParcel — связка point→объекты→urbanCard рабочая.

Pipeline

parcel point → searchByGeom (layerKeys incl. ter_zone 17041) → UrbanTerZone key + urban_index
            → urbanCard → pzzList (ВРИ-списки 540н + предельные параметры) + regionsSpecialUse (ЗОУИТ)
analyze.zoning: index/name (WFS) + регламент (urbanCard pzzList)

Совпадает с планом 132_ird_overlays.sql C8 (content_source='ekb_geoportal', ВРИ/параметры из urbanCard).

Пробелы

  • Точный ключ для urbanCard (parcel vs zone vs point) — не финализировал (вернул пустой pzzList на zone-key; нужен parcel-key/точка — 1 click-capture закроет).
  • Структура pzzList (поля высота/FAR/паркинг/ВРИ-коды 540н) — снять с заполненной карточки.

Feasibility 🟢/🟡status/ready. Геометрия+индекс детерминированно (WFS), регламент через urbanCard (endpoint жив, контракт ключа — первый шаг воркера).

## 🛰️ Разведка ПЗЗ ВРИ+параметры — геопортал ЕКБ (2026-06-06, Playwright) **TL;DR: 🟢 геометрия+индекс зоны — в WFS; ВРИ+предельные параметры — через `urbanCard` (поле `pzzList`), endpoint подтверждён вживую.** ### Геометрия + индекс зоны (WFS, CONFIRMED) - `portal:portal_geo_urban_ter_zone` = **10532** фич, `portal_geo_subzone` = **321** (подзоны). - Атрибуты фичи: `urban_index` (**«СХ-3»**), `urban_kind_obj_v` (**«СХ-3 Зона ведения садоводства и огородничества»** — имя зоны), `info_set_key` (ссылка на документ ПЗЗ), `guid`, геометрия. - `INTERSECTS(geoloc, POINT(lon lat))` 4326 lon-lat → индекс+имя зоны участка. 🟢 ### ВРИ + предельные параметры (высота/FAR/паркинг) — `urbanCard` Сам регламент в фиче НЕ лежит — резолвится через **`POST /api/urbanCard/portal`** (подтверждено вживую: HTTP 200, схема ответа): ``` { title, parcels[], constructions[], adrCapitalBuildings[], pzzList[], ← регламент ПЗЗ (ВРИ + предельные параметры) regionsSpecialUse:{ waterProtectionRegions, …}, …} ← бонус: ЗОУИТ (ИРД-7/8) ``` - Тело: `{project:'portal', keys:[<objectKey>]}` (200; вернул пустые массивы на ключ зоны — **точный ключ = parcel/точка, не zone-key**, уточнить воркеру: вероятно urbanCard ждёт кадастровый/parcel key либо точку из searchByGeom). - `searchByGeom` (POST `/api/gis/spatialObject/searchByGeom`, точка 4326) на тест-точке вернул `UrbanTerZone` + `SpecialZone`×9 (ЗОУИТ) + `GknParcel` — связка point→объекты→urbanCard рабочая. ### Pipeline ``` parcel point → searchByGeom (layerKeys incl. ter_zone 17041) → UrbanTerZone key + urban_index → urbanCard → pzzList (ВРИ-списки 540н + предельные параметры) + regionsSpecialUse (ЗОУИТ) analyze.zoning: index/name (WFS) + регламент (urbanCard pzzList) ``` Совпадает с планом `132_ird_overlays.sql` C8 (content_source='ekb_geoportal', ВРИ/параметры из urbanCard). ### Пробелы - Точный ключ для urbanCard (parcel vs zone vs point) — не финализировал (вернул пустой `pzzList` на zone-key; нужен parcel-key/точка — 1 click-capture закроет). - Структура `pzzList` (поля высота/FAR/паркинг/ВРИ-коды 540н) — снять с заполненной карточки. **Feasibility 🟢/🟡 → `status/ready`.** Геометрия+индекс детерминированно (WFS), регламент через urbanCard (endpoint жив, контракт ключа — первый шаг воркера).
Owner

Реализовано в merged-работе ИРД-эпика (за флагом enable_ird_analyze, default off):

  • ВРИ + предельные параметры ПЗЗird.zone_regulation в ответе analyze: кэш zone_regulation_cache (миграция data/sql/133_zone_regulation_cache.sql) + backend/app/services/site_finder/zone_regulation.py:
    • 3 списка ВРИ (540н: main/conditional/auxiliary) из ЕКБ-геопортала urbanCard.
    • Числовой экстракт предельных параметров (parse_limit_params, regex по реальному тексту регламента): max_far (КСИ), max_building_pct, max_floors, min_parcel_area_m2, underground_pct, max_height_m; «не подлежат установлению» → честно отсутствует.
    • PR #1099 (C8b) + wiring в analyze #1101 (D9b).

Acceptance («analyze отдаёт ВРИ + предельные параметры или честный "нет в данных"») закрывается при enable_ird_analyze=true. Перевожу в needs-human — подтвердить после включения флага.

Реализовано в merged-работе ИРД-эпика (за флагом `enable_ird_analyze`, default off): - **ВРИ + предельные параметры ПЗЗ** — `ird.zone_regulation` в ответе analyze: кэш `zone_regulation_cache` (миграция `data/sql/133_zone_regulation_cache.sql`) + `backend/app/services/site_finder/zone_regulation.py`: - 3 списка ВРИ (540н: main/conditional/auxiliary) из ЕКБ-геопортала urbanCard. - **Числовой экстракт предельных параметров** (`parse_limit_params`, regex по реальному тексту регламента): `max_far` (КСИ), `max_building_pct`, `max_floors`, `min_parcel_area_m2`, `underground_pct`, `max_height_m`; «не подлежат установлению» → честно отсутствует. - PR #1099 (C8b) + wiring в analyze #1101 (D9b). Acceptance («analyze отдаёт ВРИ + предельные параметры или честный "нет в данных"») закрывается при `enable_ird_analyze=true`. Перевожу в `needs-human` — подтвердить после включения флага.
lekss361 added
needs-human
and removed
status/ready
labels 2026-06-06 20:46:40 +00:00
Owner

Сделано — на проде (verified 2026-06-07)

zone_regulation_cache = 33 зоны (все типы ПЗЗ ЕКБ: Ж-1…Ж-5, Ц-1…Ц-4, ЦС-1…ЦС-6, СО, СХ, ПК, Р-1…Р-4, ТОП, ТЖД, ЗГЛ, КРТ, Ф) с числовыми предельными параметрами: max_floors, max_height_m, max_far, max_building_pct + ВРИ-списки (main/conditional/auxiliary). Пример: Ж-5 — этажность 5, FAR 4, застройка 100%; Ц-1 — общественно-деловая.

Источник: ЕКБ-геопортал urbanCard (#1099). Врезано в /analyze через zone_regulation (#1101, flag-on #1115). Closing.

## ✅ Сделано — на проде (verified 2026-06-07) `zone_regulation_cache` = **33 зоны** (все типы ПЗЗ ЕКБ: Ж-1…Ж-5, Ц-1…Ц-4, ЦС-1…ЦС-6, СО, СХ, ПК, Р-1…Р-4, ТОП, ТЖД, ЗГЛ, КРТ, Ф) с **числовыми предельными параметрами**: `max_floors`, `max_height_m`, `max_far`, `max_building_pct` + ВРИ-списки (main/conditional/auxiliary). Пример: Ж-5 — этажность 5, FAR 4, застройка 100%; Ц-1 — общественно-деловая. Источник: ЕКБ-геопортал urbanCard (#1099). Врезано в `/analyze` через `zone_regulation` (#1101, flag-on #1115). Closing.
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#1059
No description provided.