[ИРД-4] Граддокументация (ППТ/ПМТ/ГПЗУ/РНС) + правообладатель и срок права #1061

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

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

Существующее: 🟡 PARTIAL. ekburg_construction_permits (РНС/РВЭ 2022-2026, scraper ekburg_permits.py) → analyze.permits_summary/recent_permits_in_quarter.
Пробел: ППТ/ПМТ/ГПЗУ (существующие + в разработке); кто получил право застройки и на какой срок.
Источник/feasibility: ⚠️ частично НЕ автоматизируется честно. ППТ/ГПЗУ — частично НСПД (см. parser #947) / ekburg ИСОГД (#107). Правообладатель + срок + «в разработке» — public geo-API НЕТ: только официальный запрос в ИСОГД ЕКБ (межвед., 5–14 дн.). Не обещаем полную автоматизацию.
План: (a) дотащить РНС/РВЭ (есть); (b) ППТ/ПМТ/ГПЗУ — НСПД (#947) / ekburg ИСОГД (#107); (c) право/срок — manual/semi-manual через ИСОГД-запрос, поле с пометкой источника.
Acceptance: analyze отдаёт ППТ/ПМТ/ГПЗУ + РНС/РВЭ; право/срок — где доступно, иначе честный «по запросу ИСОГД».
Связано: #947 (граддокумент parser ППТ/ПМТ), #107 (ekburg ИСОГД РНС/ППТ/ГПЗУ).

_Запрос команды (Макс/Леха) 2026-06-04 для «волшебной таблицы» (= analyze/§22). Источники: ПКК pkk.rosreestr.ru, НСПД нспд.рф, portal.okn.midural.ru, приказы ПАТ._ **Существующее:** 🟡 PARTIAL. `ekburg_construction_permits` (РНС/РВЭ 2022-2026, scraper `ekburg_permits.py`) → `analyze.permits_summary`/`recent_permits_in_quarter`. **Пробел:** ППТ/ПМТ/ГПЗУ (существующие + **в разработке**); **кто получил право застройки и на какой срок**. **Источник/feasibility:** ⚠️ **частично НЕ автоматизируется честно.** ППТ/ГПЗУ — частично НСПД (см. parser #947) / ekburg ИСОГД (#107). **Правообладатель + срок + «в разработке» — public geo-API НЕТ**: только официальный запрос в ИСОГД ЕКБ (межвед., 5–14 дн.). Не обещаем полную автоматизацию. **План:** (a) дотащить РНС/РВЭ (есть); (b) ППТ/ПМТ/ГПЗУ — НСПД (#947) / ekburg ИСОГД (#107); (c) право/срок — **manual/semi-manual** через ИСОГД-запрос, поле с пометкой источника. **Acceptance:** analyze отдаёт ППТ/ПМТ/ГПЗУ + РНС/РВЭ; право/срок — где доступно, иначе честный «по запросу ИСОГД». **Связано:** #947 (граддокумент parser ППТ/ПМТ), #107 (ekburg ИСОГД РНС/ППТ/ГПЗУ).
bot-backend added the
scope/backend
needs-human
scrapers
ИРД
GG-форсайт
site-finder
labels 2026-06-05 03:46:22 +00:00
lekss361 added this to the Site Finder v2 — Foresight (GG-форсайт) milestone 2026-06-05 07:22:45 +00:00
Owner

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

Правовая база (проверено по первоисточнику):

  • ППТ / ПМТ — ГрК РФ ст. 41–43.
  • ГПЗУ — ГрК РФ ст. 57.3. Выдаёт ОМСУ (в ЕКБ — Департамент архитектуры) в течение 14 раб. дней, бесплатно. Сведения ГПЗУ действительны для РНС 3 года. ст. 57.3 ГрК.
  • РНС / РВЭ — ГрК РФ ст. 51 / 55.

Honest automatable-vs-manual split:

Данные Источник Авто
РНС/РВЭ (существующие) ekburg_construction_permits (scraper ekburg_permits.py) уже есть (parcels.py:2377-2424)
ППТ/ПМТ/ГПЗУ (готовые) НСПД (#947) / ekburg ИСОГД (#107) 🟡 частично — НСПД геометрия + PDF; ГПЗУ-PDF может требовать OCR
Правообладатель + срок права + «в разработке» официальный запрос в ИСОГД ЕКБ (межвед., 14 раб. дн.) 🔴 public geo-API НЕТ — manual/semi-manual

Подтверждение пробела: срок права застройки и статус «в разработке» не публикуются ни в одном открытом geo-API (ни ПКК/НСПД, ни ekburg open-data — там только утверждённые РНС/ППТ). Канал — только запрос сведений ИСОГД (ст. 57 ГрК).

Уточнённый DoD:

  • analyze отдаёт РНС/РВЭ (есть) + ППТ/ПМТ/ГПЗУ-флаг где доступно из НСПД (#947) / ekburg (#107).
  • Поля right_holder / right_term / graddoc_in_development в схеме, при отсутствии источника — честный fallback {"value": null, "source": "по запросу ИСОГД (14 раб. дн.)"} — не выдумывать.
  • Тест: ГПЗУ найден ИЛИ not_found + ИСОГД-fallback.

Effort / Risk: (a)+(b) ~3-4 дн (зависит от #947/#107/#1057); (c) — UX-решение «честная пометка». Risk: ekburg XLSX/HTML дрейф; ГПЗУ-PDF OCR.

Status-label: ⚠️ needs-human ОБОСНОВАН, но только для части (c) — право/срок/«в разработке» = реальный capability-gap без открытого API. Часть (a) уже сделана; (b) автоматизируема (gated на #947/#107/#1057). Рекомендация: split — выделить (c) в отдельный needs-human под-issue (manual ИСОГД-fallback), а (a)+(b) → status/ready scope/backend. Держать весь эпик в needs-human блокирует автоматизируемые 2/3.

## 🔬 Research-дополнение (2026-06-05) **Правовая база (проверено по первоисточнику):** - **ППТ / ПМТ** — ГрК РФ ст. 41–43. - **ГПЗУ** — ГрК РФ **ст. 57.3**. Выдаёт ОМСУ (в ЕКБ — Департамент архитектуры) в течение **14 раб. дней**, бесплатно. Сведения ГПЗУ действительны для РНС **3 года**. [ст. 57.3 ГрК](https://www.consultant.ru/document/cons_doc_LAW_51040/fb76ce1fdb5356574b298a9dcdafcfc8fc6c937b/). - **РНС / РВЭ** — ГрК РФ ст. 51 / 55. **Honest automatable-vs-manual split:** | Данные | Источник | Авто | |---|---|---| | РНС/РВЭ (существующие) | `ekburg_construction_permits` (scraper `ekburg_permits.py`) | ✅ **уже есть** (`parcels.py:2377-2424`) | | ППТ/ПМТ/ГПЗУ (готовые) | НСПД (#947) / ekburg ИСОГД (#107) | 🟡 частично — НСПД геометрия + PDF; ГПЗУ-PDF может требовать OCR | | **Правообладатель + срок права + «в разработке»** | официальный запрос в ИСОГД ЕКБ (межвед., **14 раб. дн.**) | 🔴 **public geo-API НЕТ** — manual/semi-manual | **Подтверждение пробела:** срок права застройки и статус «в разработке» **не публикуются ни в одном открытом geo-API** (ни ПКК/НСПД, ни ekburg open-data — там только утверждённые РНС/ППТ). Канал — только запрос сведений ИСОГД (ст. 57 ГрК). **Уточнённый DoD:** - [ ] analyze отдаёт РНС/РВЭ (есть) + ППТ/ПМТ/ГПЗУ-флаг где доступно из НСПД (#947) / ekburg (#107). - [ ] Поля `right_holder` / `right_term` / `graddoc_in_development` в схеме, при отсутствии источника — **честный fallback** `{"value": null, "source": "по запросу ИСОГД (14 раб. дн.)"}` — не выдумывать. - [ ] Тест: ГПЗУ найден ИЛИ `not_found` + ИСОГД-fallback. **Effort / Risk:** (a)+(b) ~3-4 дн (зависит от #947/#107/#1057); (c) — UX-решение «честная пометка». Risk: ekburg XLSX/HTML дрейф; ГПЗУ-PDF OCR. **Status-label:** ⚠️ **`needs-human` ОБОСНОВАН, но только для части (c)** — право/срок/«в разработке» = реальный capability-gap без открытого API. Часть (a) уже сделана; (b) автоматизируема (gated на #947/#107/#1057). **Рекомендация: split** — выделить (c) в отдельный `needs-human` под-issue (manual ИСОГД-fallback), а (a)+(b) → `status/ready scope/backend`. Держать весь эпик в `needs-human` блокирует автоматизируемые 2/3.
Owner

Research 2026-06-07 — статус достижим, правообладатель/срок нет (headless)

Поле Вердикт Источник
(а) статус «разработана» 🟡 достижимо БЕЗ нового источника regex по planning_projects.raw_props (ПАГЕ № N от DD.MM.YYYY из full_name/dmd_abstract + doc_status_name="Действующий")
(а) «разрабатывается» 🔴 стадии нет нигде — geoportal знает только утверждённые ДПТ
(б) правообладатель 🔴 нет в headless. geoportal owner_key = внутренний id записи, НЕ имя
(в) срок права 🔴 нет

Проверено live (DescribeFeatureType+GetFeature ЕКБ-WFS): поля dmd_legal_info/dmd_legal_constr/dmd_create_date/dmd_proc_step = null. Отдельного слоя «решение о подготовке ДПТ» нет.

Пути для (б)/(в):

  1. ГИСОГД-СО playwright-spike (рекомендую первым) — gisogd66.midural.ru JS-SPA, headless WebFetch не пробил; нужен mcp__playwright__*: navigate → перехват XHR /api/gis/... → проверить, несёт ли региональная ДПТ-карточка правообладателя/срок (по 56-ФЗ должна агрегировать решения о подготовке). Если да → 🔴🟢.
  2. PDF-крал постановлений «О подготовке ДПТ» (pravo.gov66 + екатеринбург.рф) + extract инициатора/срока — тяжёлый scraper, отдельный issue.

Дёшево сейчас: добавить в planning-harvest парс-проход raw_props → флаг «разработана/действует» + реквизиты утверждающего ПАГЕ (закрывает (а)). РНС-реестр (ekburg_construction_permits) даёт застройщика+срок РС — смежный сигнал, но не право на ДПТ.

Оставляю needs-human (б/в требуют решения: playwright-spike vs PDF-крал).

## Research 2026-06-07 — статус достижим, правообладатель/срок нет (headless) | Поле | Вердикт | Источник | |---|---|---| | (а) статус «разработана» | 🟡 достижимо БЕЗ нового источника | regex по `planning_projects.raw_props` (`ПАГЕ № N от DD.MM.YYYY` из `full_name`/`dmd_abstract` + `doc_status_name="Действующий"`) | | (а) «разрабатывается» | 🔴 | стадии нет нигде — geoportal знает только утверждённые ДПТ | | (б) правообладатель | 🔴 | нет в headless. geoportal `owner_key` = внутренний id записи, НЕ имя | | (в) срок права | 🔴 | нет | **Проверено live** (DescribeFeatureType+GetFeature ЕКБ-WFS): поля `dmd_legal_info`/`dmd_legal_constr`/`dmd_create_date`/`dmd_proc_step` = **null**. Отдельного слоя «решение о подготовке ДПТ» нет. **Пути для (б)/(в):** 1. **ГИСОГД-СО playwright-spike** (рекомендую первым) — `gisogd66.midural.ru` JS-SPA, headless WebFetch не пробил; нужен `mcp__playwright__*`: navigate → перехват XHR `/api/gis/...` → проверить, несёт ли региональная ДПТ-карточка правообладателя/срок (по 56-ФЗ должна агрегировать решения о подготовке). Если да → 🔴→🟢. 2. PDF-крал постановлений «О подготовке ДПТ» (pravo.gov66 + екатеринбург.рф) + extract инициатора/срока — тяжёлый scraper, отдельный issue. **Дёшево сейчас:** добавить в planning-harvest парс-проход `raw_props` → флаг «разработана/действует» + реквизиты утверждающего ПАГЕ (закрывает (а)). РНС-реестр (`ekburg_construction_permits`) даёт застройщика+срок РС — смежный сигнал, но не право на ДПТ. Оставляю needs-human (б/в требуют решения: playwright-spike vs PDF-крал).
Owner

GISOGD-СО playwright-spike — 🔴 правообладатель/срок недоступны headless (verified)

Перехватил реальную сеть gisogd66.midural.ru (agate/Гео-Агат, GeoServer agate_sverdregion):

  • ППТ/ПМТ map-фичи (DescribeFeatureType на ..._parsel_ppm_billing_per_*): поля = kn, area, urban_view_use_*, urban_objectstatustz_v, info_set_key, full_name…ноль legal/owner/term. Та же null-дыра, что у муниципального портала. WFS-харвест НЕ улучшит #1061.
  • Документ-слой (razdel7 «Планировка территории» = 2281 дел по счётчику) — где могли бы быть правообладатель/решение о подготовке: за авторизацией. Anonymous: gisogddocgroups/razdel7/docsearch/zusearch → пустые []; WFS GetFeature на ВСЕ слои (вкл. ЕГРН-парцели/ПЗЗ) → numberMatched:0. Карточка дела достижима только с сессией (agate checksession). Логин-UI на публичном портале не выставлен (отдельный ЛК).

Итог по полям:

  • (а) статус «разработана» 🟡 — достижимо БЕЗ нового источника (regex по planning_projects.raw_props + doc_status_name).
  • (б) правообладатель / (в) срок 🔴 — нет публичного headless-пути. Варианты только: ЕСИА-доступ к ГИСОГД-делам (needs-human/account) ИЛИ PDF-крал постановлений «О подготовке ДПТ» (pravo.gov66/ПАГЕ — там инициатор+срок; тот же паттерн, что enumerator #1062, но отдельный тяжёлый парсер с разнородными формами).

Оставляю needs-human: legal-часть требует решения (ЕСИА vs PDF-крал «о подготовке»). Статус-часть (а) — дешёвый follow-up к planning-harvest, могу сделать отдельно.

## GISOGD-СО playwright-spike — 🔴 правообладатель/срок недоступны headless (verified) Перехватил реальную сеть `gisogd66.midural.ru` (agate/Гео-Агат, GeoServer `agate_sverdregion`): - **ППТ/ПМТ map-фичи** (`DescribeFeatureType` на `..._parsel_ppm_billing_per_*`): поля = `kn, area, urban_view_use_*, urban_objectstatustz_v, info_set_key, full_name…` — **ноль legal/owner/term**. Та же null-дыра, что у муниципального портала. WFS-харвест НЕ улучшит #1061. - **Документ-слой** (razdel7 «Планировка территории» = 2281 дел по счётчику) — где могли бы быть правообладатель/решение о подготовке: **за авторизацией**. Anonymous: `gisogddocgroups/razdel7`/`docsearch`/`zusearch` → пустые `[]`; WFS GetFeature на ВСЕ слои (вкл. ЕГРН-парцели/ПЗЗ) → `numberMatched:0`. Карточка дела достижима только с сессией (agate `checksession`). Логин-UI на публичном портале не выставлен (отдельный ЛК). **Итог по полям:** - (а) статус «разработана» 🟡 — достижимо БЕЗ нового источника (regex по `planning_projects.raw_props` + `doc_status_name`). - (б) правообладатель / (в) срок 🔴 — нет публичного headless-пути. Варианты только: **ЕСИА-доступ** к ГИСОГД-делам (needs-human/account) ИЛИ **PDF-крал постановлений «О подготовке ДПТ»** (pravo.gov66/ПАГЕ — там инициатор+срок; тот же паттерн, что enumerator #1062, но отдельный тяжёлый парсер с разнородными формами). Оставляю needs-human: legal-часть требует решения (ЕСИА vs PDF-крал «о подготовке»). Статус-часть (а) — дешёвый follow-up к planning-harvest, могу сделать отдельно.
Owner

Финальный вердикт по правообладателю/сроку (playwright-verified 2026-06-07)

Проверил городской портал екатеринбург.рф (как нашли изъятие):

  • Постановления Администрации ЕКБ «О подготовке проекта планировки и межевания» существуют (/file/<hash> PDF) — но все видимые 2015 года, и формат = сканы (pdfplumber txt_len=0, как изъятие). Историчны.
  • Современная подготовка ДПТ идёт через КРТ (договор КРТ = право застройщику + срок) → инициатор и реквизиты УЖЕ собраны в ekb_krt_sites (#1126: developer_name, contract_number/date, paga_decisions). Для КРТ-территорий правообладатель/срок закрыты.
  • Для НЕ-КРТ планировки: geoportal даёт только статус «утверждена», без инициатора/срока (verified ранее).

Итоговая карта #1061:

Поле Источник Статус
статус «разработана»/реквизиты ПАГЕ planning_projects.raw_props (regex) 🟡 дёшево, не сделано
правообладатель+срок (КРТ-территории) ekb_krt_sites (#1126, на проде) 🟢 уже есть
правообладатель+срок (НЕ-КРТ) «о подготовке» 2015-сканы (OCR, историчны) / нет current source 🔴
правообладатель+срок (полно, current) ГИСОГД-дела за ЕСИА / офиц.реестр от органа 🔴 needs-human

Вывод: автоматизируемого current-источника правообладателя/срока для произвольного участка нет; для КРТ-площадок данные уже на проде (ekb_krt_sites). Рекомендация: (1) дёшево добавить статус «разработана»+ПАГЕ-реквизиты из planning_projects; (2) правообладатель/срок отдавать из ekb_krt_sites когда участок в КРТ; (3) полное покрытие — только ЕСИА/офиц.реестр (needs-human). Оставляю needs-human для НЕ-КРТ legal-полей.

## Финальный вердикт по правообладателю/сроку (playwright-verified 2026-06-07) Проверил городской портал екатеринбург.рф (как нашли изъятие): - **Постановления Администрации ЕКБ «О подготовке проекта планировки и межевания»** существуют (`/file/<hash>` PDF) — но все видимые **2015 года**, и формат = **сканы** (pdfplumber txt_len=0, как изъятие). Историчны. - Современная подготовка ДПТ идёт **через КРТ** (договор КРТ = право застройщику + срок) → **инициатор и реквизиты УЖЕ собраны** в `ekb_krt_sites` (#1126: developer_name, contract_number/date, paga_decisions). Для КРТ-территорий правообладатель/срок **закрыты**. - Для НЕ-КРТ планировки: geoportal даёт только статус «утверждена», без инициатора/срока (verified ранее). **Итоговая карта #1061:** | Поле | Источник | Статус | |---|---|---| | статус «разработана»/реквизиты ПАГЕ | `planning_projects.raw_props` (regex) | 🟡 дёшево, не сделано | | правообладатель+срок (КРТ-территории) | `ekb_krt_sites` (#1126, на проде) | 🟢 **уже есть** | | правообладатель+срок (НЕ-КРТ) | «о подготовке» 2015-сканы (OCR, историчны) / нет current source | 🔴 | | правообладатель+срок (полно, current) | ГИСОГД-дела за ЕСИА / офиц.реестр от органа | 🔴 needs-human | **Вывод:** автоматизируемого current-источника правообладателя/срока для произвольного участка нет; для КРТ-площадок данные уже на проде (`ekb_krt_sites`). Рекомендация: (1) дёшево добавить статус «разработана»+ПАГЕ-реквизиты из planning_projects; (2) правообладатель/срок отдавать из ekb_krt_sites когда участок в КРТ; (3) полное покрытие — только ЕСИА/офиц.реестр (needs-human). Оставляю needs-human для НЕ-КРТ legal-полей.
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#1061
No description provided.