🎯 Реестры РНС/РВЭ ЕКБ 2022-2026 (xlsx, актуальные) — екатеринбург.рф #105

Closed
opened 2026-05-12 10:33:52 +00:00 by lekss361 · 0 comments
lekss361 commented 2026-05-12 10:33:52 +00:00 (Migrated from github.com)

Эшелон: Data Foundation — Construction Permits ЕКБ (актуальные)

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

После audit регионального портала Свердл (open.midural.ru РНС stale 2021) и Минстроя Свердл (stale 2018-2021) найдены актуальные реестры РНС/РВЭ за 2022-2026 на официальном портале Екатеринбурга!

Источник: https://xn--80acgfbsl1azdqr.xn--p1ai/дляработы/гиз/градостроительство/разрешение

Год URL Размер Формат
2026 (Q1+апр) /file/70bf01bf31538ee9dd82dadfc47192a0 231 KB xlsx
2025 /file/6a0a18c9ee327e6e4f76c32a5385a6bd 487 KB xlsx
2024 /file/907bfa0cf78d5a93c6ccafed1af51fc5 417 KB xlsx
2023 /file/3b2ef86bf5673adaa65263672f0c623f 350 KB xlsx
2022 /file/51a7e5654d2fa018bc6db402ab4d5775 302 KB xlsx

Содержание: Формы 3 и 4 (стандартные госформы Росстата) — РНС + РВЭ объектов кап.строительства ЕКБ. Опубликованы Комитетом по строительству Администрации Екатеринбурга (полномочия переданы Минстрою Свердл по соглашению).

Свежесть: Регламенты на этой странице обновлены 31.03.2026 = ~6 недель назад. Реестры 2026 включают Q1+апрель.

Что сделать

Phase 1 — Excel parser (1 день)

# backend/app/services/scrapers/ekburg_permits.py
import openpyxl
import httpx
from typing import AsyncIterator

EKBURG_PERMITS_URLS = {
    2026: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/70bf01bf31538ee9dd82dadfc47192a0',
    2025: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/6a0a18c9ee327e6e4f76c32a5385a6bd',
    2024: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/907bfa0cf78d5a93c6ccafed1af51fc5',
    2023: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/3b2ef86bf5673adaa65263672f0c623f',
    2022: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/51a7e5654d2fa018bc6db402ab4d5775'
}

class EkburgPermitsClient:
    async def download_xlsx(self, year: int) -> bytes: ...
    def parse_form_3_rns(self, wb: Workbook) -> Iterator[dict]: ...  # лист РНС
    def parse_form_4_rvе(self, wb: Workbook) -> Iterator[dict]: ...  # лист РВЭ

Phase 2 — Schema (0.5 дня)

CREATE TABLE ekburg_construction_permits (
  id BIGSERIAL PRIMARY KEY,
  permit_type TEXT CHECK (permit_type IN ('RNS','RVE')),  -- разрешение на строит. / ввод
  permit_number TEXT,
  issue_date DATE,
  developer_inn TEXT,
  developer_name TEXT,
  object_name TEXT,
  object_type TEXT,  -- МКД / нежилое / коммерч / ИЖС
  construction_address TEXT,
  total_area_sqm NUMERIC,
  floors_count INT,
  units_count INT,  -- кол-во квартир
  expiry_date DATE,   -- для РНС
  source_year INT,
  source_url TEXT,
  geocoded_lat NUMERIC,
  geocoded_lon NUMERIC,
  geom GEOMETRY,
  raw_row JSONB,
  fetched_at TIMESTAMPTZ DEFAULT NOW(),
  UNIQUE(permit_type, permit_number)
);
CREATE INDEX gist_ekburg_permits_geom ON ekburg_construction_permits USING GIST(geom);
CREATE INDEX idx_ekburg_permits_issue_date ON ekburg_construction_permits(issue_date);
CREATE INDEX idx_ekburg_permits_developer ON ekburg_construction_permits(developer_name);

Phase 3 — Geocoding pipeline (0.5 дня)

  • Nominatim (OSM-based, бесплатный) для адресов
  • Кеш для повторного использования
  • Fallback: только адрес без координат если geocode fails

Phase 4 — Celery beat (0.5 дня)

  • tasks.ekburg_permits_sync.monthly_refresh — раз в месяц
  • Hash-check файлов (etag/size) — refresh только если изменилось
  • Sentry alert если файл недоступен

Phase 5 — Site Finder integration (0.5 дня)

analyze_parcel расширение engineering.recent_permits:

{
  "engineering": {
    "permits_500m": [
      {"developer": "Атомстрой", "object": "ЖК Сортировочный", "year": 2024, "floors": 18, "units": 240}
    ],
    "permits_5km_summary": {
      "rns_total_area": 450000,    // м² разрешено к строительству
      "rve_total_units": 8200,     // квартир сдано
      "by_developer": [...]
    },
    "permits_velocity": {
      "rns_2024_2026_yoy_growth": 0.15  // +15% per год
    }
  }
}

Cross-check с D4 #36 pipeline 24mo — пересечение с domrf_kn_objects unfinished.

Acceptance

  • xlsx parser извлекает >100 records per год
  • Geocoding >90% адресов
  • ekburg_construction_permits >3000 records (5 лет × ~700/год)
  • analyze возвращает engineering.permits_500m
  • Cross-check с domrf_kn_objects: developer-name match >70%
  • Monthly refresh работает

Owner

backend-engineer (parser + ETL + integration) + database-expert (schema)

Effort

~3 дня total (1 + 0.5 + 0.5 + 0.5 + 0.5)

Это в 2-3 раза быстрее изначального плана ISOGD scraper в #103!

Dependencies

  • Никаких. Полностью независимо от НСПД / open.midural / Минстрой Свердл.

Why critical priority

Свежие данные 2022-2026 — единственный публичный источник свежих РНС/РВЭ ЕКБ
Стандартные формы — Формы 3 и 4 Росстата, гарантированная схема
xlsx легко парсится — openpyxl уже в наших dependencies (через exporters/excel.py)
Без auth, без CORS, без HMAC — просто HTTP GET
Регулярные апдейты — регламенты от 31.03.2026 указывают на active maintenance
Cross-validation — можно сравнить с domrf_kn_objects (D6 obj_class fix) + sale_graph (D2 velocity)

Полезные применения для Site Finder

  1. engineering.recent_permits_500m — какие РНС выданы рядом за 12 мес
  2. competition.pipeline_24mo_real — реальные планируемые объекты (а не только из DOM.РФ)
  3. market.developer_track_record — история застройщика в районе
  4. market.area_construction_growth — рост объёма строительства YoY
  5. gate.permit_density — плотность РНС в районе как proxy для investment hotness

Closes / supersedes

  • #103 Поток 2 (ИСОГД scraper) — большая часть замещается этим issue
  • Часть #104 — РНС часть из open.midural.ru НЕ актуальна, используем ekburg.ru
**Эшелон:** Data Foundation — Construction Permits ЕКБ (актуальные) ## Контекст / открытие После audit регионального портала Свердл (open.midural.ru РНС stale 2021) и Минстроя Свердл (stale 2018-2021) найдены **актуальные реестры РНС/РВЭ за 2022-2026** на **официальном портале Екатеринбурга**! **Источник:** https://xn--80acgfbsl1azdqr.xn--p1ai/дляработы/гиз/градостроительство/разрешение | Год | URL | Размер | Формат | |---|---|---|---| | **2026** (Q1+апр) | `/file/70bf01bf31538ee9dd82dadfc47192a0` | 231 KB | xlsx | | **2025** | `/file/6a0a18c9ee327e6e4f76c32a5385a6bd` | 487 KB | xlsx | | **2024** | `/file/907bfa0cf78d5a93c6ccafed1af51fc5` | 417 KB | xlsx | | **2023** | `/file/3b2ef86bf5673adaa65263672f0c623f` | 350 KB | xlsx | | **2022** | `/file/51a7e5654d2fa018bc6db402ab4d5775` | 302 KB | xlsx | **Содержание:** Формы 3 и 4 (стандартные госформы Росстата) — РНС + РВЭ объектов кап.строительства ЕКБ. Опубликованы Комитетом по строительству Администрации Екатеринбурга (полномочия переданы Минстрою Свердл по соглашению). **Свежесть:** Регламенты на этой странице обновлены **31.03.2026** = ~6 недель назад. Реестры 2026 включают Q1+апрель. ## Что сделать ### Phase 1 — Excel parser (1 день) ```python # backend/app/services/scrapers/ekburg_permits.py import openpyxl import httpx from typing import AsyncIterator EKBURG_PERMITS_URLS = { 2026: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/70bf01bf31538ee9dd82dadfc47192a0', 2025: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/6a0a18c9ee327e6e4f76c32a5385a6bd', 2024: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/907bfa0cf78d5a93c6ccafed1af51fc5', 2023: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/3b2ef86bf5673adaa65263672f0c623f', 2022: 'https://xn--80acgfbsl1azdqr.xn--p1ai/file/51a7e5654d2fa018bc6db402ab4d5775' } class EkburgPermitsClient: async def download_xlsx(self, year: int) -> bytes: ... def parse_form_3_rns(self, wb: Workbook) -> Iterator[dict]: ... # лист РНС def parse_form_4_rvе(self, wb: Workbook) -> Iterator[dict]: ... # лист РВЭ ``` ### Phase 2 — Schema (0.5 дня) ```sql CREATE TABLE ekburg_construction_permits ( id BIGSERIAL PRIMARY KEY, permit_type TEXT CHECK (permit_type IN ('RNS','RVE')), -- разрешение на строит. / ввод permit_number TEXT, issue_date DATE, developer_inn TEXT, developer_name TEXT, object_name TEXT, object_type TEXT, -- МКД / нежилое / коммерч / ИЖС construction_address TEXT, total_area_sqm NUMERIC, floors_count INT, units_count INT, -- кол-во квартир expiry_date DATE, -- для РНС source_year INT, source_url TEXT, geocoded_lat NUMERIC, geocoded_lon NUMERIC, geom GEOMETRY, raw_row JSONB, fetched_at TIMESTAMPTZ DEFAULT NOW(), UNIQUE(permit_type, permit_number) ); CREATE INDEX gist_ekburg_permits_geom ON ekburg_construction_permits USING GIST(geom); CREATE INDEX idx_ekburg_permits_issue_date ON ekburg_construction_permits(issue_date); CREATE INDEX idx_ekburg_permits_developer ON ekburg_construction_permits(developer_name); ``` ### Phase 3 — Geocoding pipeline (0.5 дня) - Nominatim (OSM-based, бесплатный) для адресов - Кеш для повторного использования - Fallback: только адрес без координат если geocode fails ### Phase 4 — Celery beat (0.5 дня) - `tasks.ekburg_permits_sync.monthly_refresh` — раз в месяц - Hash-check файлов (etag/size) — refresh только если изменилось - Sentry alert если файл недоступен ### Phase 5 — Site Finder integration (0.5 дня) `analyze_parcel` расширение `engineering.recent_permits`: ```json { "engineering": { "permits_500m": [ {"developer": "Атомстрой", "object": "ЖК Сортировочный", "year": 2024, "floors": 18, "units": 240} ], "permits_5km_summary": { "rns_total_area": 450000, // м² разрешено к строительству "rve_total_units": 8200, // квартир сдано "by_developer": [...] }, "permits_velocity": { "rns_2024_2026_yoy_growth": 0.15 // +15% per год } } } ``` Cross-check с **D4 #36 pipeline 24mo** — пересечение с domrf_kn_objects unfinished. ## Acceptance - [ ] xlsx parser извлекает >100 records per год - [ ] Geocoding >90% адресов - [ ] `ekburg_construction_permits` >3000 records (5 лет × ~700/год) - [ ] analyze возвращает `engineering.permits_500m` - [ ] Cross-check с domrf_kn_objects: developer-name match >70% - [ ] Monthly refresh работает ## Owner `backend-engineer` (parser + ETL + integration) + `database-expert` (schema) ## Effort **~3 дня total** (1 + 0.5 + 0.5 + 0.5 + 0.5) Это **в 2-3 раза быстрее** изначального плана ISOGD scraper в #103! ## Dependencies - Никаких. Полностью независимо от НСПД / open.midural / Минстрой Свердл. ## Why critical priority ✅ **Свежие данные 2022-2026** — единственный публичный источник свежих РНС/РВЭ ЕКБ ✅ **Стандартные формы** — Формы 3 и 4 Росстата, гарантированная схема ✅ **xlsx легко парсится** — openpyxl уже в наших dependencies (через exporters/excel.py) ✅ **Без auth, без CORS, без HMAC** — просто HTTP GET ✅ **Регулярные апдейты** — регламенты от 31.03.2026 указывают на active maintenance ✅ **Cross-validation** — можно сравнить с domrf_kn_objects (D6 obj_class fix) + sale_graph (D2 velocity) ## Полезные применения для Site Finder 1. **`engineering.recent_permits_500m`** — какие РНС выданы рядом за 12 мес 2. **`competition.pipeline_24mo_real`** — реальные планируемые объекты (а не только из DOM.РФ) 3. **`market.developer_track_record`** — история застройщика в районе 4. **`market.area_construction_growth`** — рост объёма строительства YoY 5. **`gate.permit_density`** — плотность РНС в районе как proxy для investment hotness ## Closes / supersedes - **#103 Поток 2 (ИСОГД scraper)** — большая часть замещается этим issue - **Часть #104** — РНС часть из open.midural.ru НЕ актуальна, используем ekburg.ru ## Links - Research: [[OpenData_Sources_Sverdl_May12]] Update part 2 — full audit - Источник: https://xn--80acgfbsl1azdqr.xn--p1ai/дляработы/гиз/градостроительство/разрешение - Cross-ref: #103 (ИСОГД), #104 (open.midural), #36 D4, #38 D6
Sign in to join this conversation.
No project
No assignees
1 participant
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#105
No description provided.