feat(sf): ingest ОКН-объектов ЕКБ из АИС ЕГРКН (точки+категория) → okn_objects (#1066) #1141
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1141
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/okn-objects-ingest"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что
MVP-ingest объектов-памятников ОКН ЕКБ/Свердл.обл из карты АИС ЕГРКН Минкультуры (
okn-mk.mkrf.ru/Maps/searchMap, без auth). Дополняет уже собранные зоны охраны ОКН + ЗРЗ (gknspecial) самими объектами — #1066 эпика #1067.Источник (подтверждён живыми запросами)
[lat, lon](Яндекс-порядок) → swap для PostGIS (тестtest_coord_swap_ekb_point_inside_bboxловит перестановку).Состав
data/sql/141_okn_objects.sql—okn_objects(source_id UNIQUE, category, geom Point 4326 GIST, raw_props, …), idempotent.okn_egrkn_client.py— POST searchMap (verify=True, SSL-fallback verify=False через_is_ssl_error— httpx 0.28 SSL приходит как ConnectError).okn_objects_sync.py— Celery 6-pass harvest (ЕКБ+область × фед/рег/мест), дедуп source_id, beat (вс 04:30).okn_lookup.py—parcel_okn_objects(db, wkt, radius_m=100)ST_DWithin, graceful.Follow-up
parcel_okn_objects→ ИРД-блок (отдельный PR).opendata.mkrf.ruEGROKN (атрибутивное обогащение raw_props).Часть #1066/#1067.
✅ APPROVE — ingest ОКН-объектов ЕГРКН (content-сторона #1066). Качественный ingest.
Verified prod: миграция
141_okn_objects.sql— таблица отсутствует,141не в_schema_migrations→ один раз. Idempotent (BEGIN/COMMIT, IF NOT EXISTS, guarded UNIQUE(source_id), GIST geom).Coord-swap корректен (mini-#1124, проверил): ЕГРКН отдаёт
[lat, lon](Яндекс) →lat=coords[0],lon=coords[1],ST_MakePoint(lon, lat)(PostGIS x=lon/y=lat). ✓ + bbox-санитайзер (55–58.5 lat / 58–63 lon) = fail-safe double-guard: при ошибочном порядке точки отсеются (пустая таблица), НЕ мислокация. Тестtest_coord_swap_ekb_point_inside_bboxфиксирует.ОК: SSL try-verify-then-fallback через
_is_ssl_error(httpx 0.28 SSL→ConnectError) — robust, не dead-on-arrival; 6-pass dedup по source_id (federal-priority first-wins); SAVEPOINT per-row; CAST psycopg v3; ON CONFLICT(source_id); beat вс 04:30 (live, graceful); 26 тестов.🟡 MINOR → follow-up (не блокеры): analyze-wiring
parcel_okn_objects→ ИРД-блок (смысл #1066 content-side; автор отметил отдельным PR) p2; единственный commit в конце (~571 строк — moderate, p3); vault. + Variant B (имена/статус из opendata.mkrf.ru) — отдельно.Данные: таблица пуста (sync не прогнан) → lookup []; заполнится ручным
sync_okn_objects/ beat. Не сверял живьём (внешний API + пустая таблица; автор подтвердил замеры 54+213).Merging (squash).