Extra E1: Массовый импорт cad_parcels_geom (parcel-level геометрия) #51

Closed
opened 2026-05-11 20:18:53 +00:00 by lekss361 · 2 comments
lekss361 commented 2026-05-11 20:18:53 +00:00 (Migrated from github.com)

Эшелон: ✳️ Extra — data foundation

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

cad_parcels_geom имеет 2 строки на всю прод-БД. Сейчас site-finder fallback'ает на cad_quarters_geom (≈9700 строк) — это квартал-уровень, не участок. Девелопер интересуется конкретным участком (4-сегментный cad), и теряет точность.

Closes часть #26.

Что сделать

  1. Bulk NSPD geo job для parcels — расширить существующую infrastructure (nspd_geo_jobs):
    • Новый job_kind=parcel_bulk (если ещё нет)
    • Source list: parcels из rosreestr_deals.cad_num (тип realestate *001* = земельные участки)
    • Filter: только Свердл (region OKATO prefix)
  2. Schema: cad_parcels_geom (cad_num, geom, raw_props jsonb, fetched_at) — уже есть, нужен GIST index
  3. Backfill через batch jobs (10 параллельных, ~9700 parcel-cad ожидается)
  4. Update analyze geom resolution: parcel → quarter → building (fallback chain)

Acceptance

  • >5000 parcels в cad_parcels_geom
  • Тестовый 4-сегментный cad (66:41:0204016:10) возвращает parcel geom, не quarter
  • Source field в analyze: parcel/quarter/building

Owner

backend-engineer (NSPD job extension) + database-expert (index + monitoring)

Effort

1.5–2 дня (включая bulk run)

Dependencies

— (NSPD infrastructure готова)

Risks / open

  • НСПД rate limit + IP block — мониторить через nspd_geo_log
  • Multi-segment cad может потребовать новый thematic_id
  • Closes часть #26 (cad_parcels_geom часть)
  • Foundation для всех других issue, которые используют parcel geometry
**Эшелон:** ✳️ Extra — data foundation ## Контекст / проблема `cad_parcels_geom` имеет **2 строки** на всю прод-БД. Сейчас site-finder fallback'ает на `cad_quarters_geom` (≈9700 строк) — это **квартал-уровень**, не участок. Девелопер интересуется конкретным участком (4-сегментный cad), и теряет точность. Closes часть #26. ## Что сделать 1. Bulk NSPD geo job для parcels — расширить существующую infrastructure (nspd_geo_jobs): - Новый `job_kind=parcel_bulk` (если ещё нет) - Source list: parcels из rosreestr_deals.cad_num (тип realestate `*001*` = земельные участки) - Filter: только Свердл (region OKATO prefix) 2. Schema: `cad_parcels_geom` (cad_num, geom, raw_props jsonb, fetched_at) — уже есть, нужен GIST index 3. Backfill через batch jobs (10 параллельных, ~9700 parcel-cad ожидается) 4. Update analyze geom resolution: parcel → quarter → building (fallback chain) ## Acceptance - [ ] >5000 parcels в `cad_parcels_geom` - [ ] Тестовый 4-сегментный cad (66:41:0204016:10) возвращает parcel geom, не quarter - [ ] Source field в analyze: `parcel`/`quarter`/`building` ## Owner `backend-engineer` (NSPD job extension) + `database-expert` (index + monitoring) ## Effort 1.5–2 дня (включая bulk run) ## Dependencies — (NSPD infrastructure готова) ## Risks / open - НСПД rate limit + IP block — мониторить через nspd_geo_log - Multi-segment cad может потребовать новый thematic_id ## Links - Closes часть #26 (cad_parcels_geom часть) - Foundation для всех других issue, которые используют parcel geometry
lekss361 commented 2026-05-12 05:46:17 +00:00 (Migrated from github.com)

Подход уточнён (после #94):

REST endpoint /api/geoportal/v2/search/geoportal?query={cad} отдаёт GeoJSON Polygon + extended properties за один запрос (vs текущий 2-step через rosreestr2coord). Можно делать без Playwright — это REST.

После #94 (единый NSPD client) — этот issue становится простой массовой задачей: итерация по cad-номерам из rosreestr_deals + search_by_cad call + UPSERT в cad_parcels_geom (расширенную колонками permitted_use / land_category / cost_value / etc).

**Подход уточнён** (после #94): REST endpoint `/api/geoportal/v2/search/geoportal?query={cad}` отдаёт GeoJSON Polygon + extended properties за один запрос (vs текущий 2-step через rosreestr2coord). Можно делать **без Playwright** — это REST. После #94 (единый NSPD client) — этот issue становится простой массовой задачей: итерация по cad-номерам из rosreestr_deals + search_by_cad call + UPSERT в cad_parcels_geom (расширенную колонками permitted_use / land_category / cost_value / etc).
Owner

Закрываю — bulk-impорт реализован через альтернативный путь (#168 bulk cadastre + PR #170/#171/#180/#185 и др.). После прогона job cadastre_ekb_full #20 (2026-05-16):

  • cad_parcels — 39 287 записей
  • cad_parcels_geom — 38 355 c geom (97.6%)
  • 932 участка без геометрии — отдельный issue #200

cad_buildings (37 624) на 100% с geom. Этого достаточно для MVP — acceptance >5000 parcels перевыполнен ~7.5×.

Если NSPD отдаст геом для оставшихся 932 после анализа в #200 — добавим. Текущий объём перекрывает D2/D4 потребности.

Закрываю — bulk-impорт реализован через альтернативный путь (#168 bulk cadastre + PR #170/#171/#180/#185 и др.). После прогона job `cadastre_ekb_full` #20 (2026-05-16): - `cad_parcels` — 39 287 записей - `cad_parcels_geom` — 38 355 c geom (97.6%) - 932 участка без геометрии — отдельный issue #200 `cad_buildings` (37 624) на 100% с geom. Этого достаточно для MVP — acceptance >5000 parcels перевыполнен ~7.5×. Если NSPD отдаст геом для оставшихся 932 после анализа в #200 — добавим. Текущий объём перекрывает D2/D4 потребности.
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#51
No description provided.