feat(tradein): ингест зданий из геопортала ЕКБ + tier в геокодере (полный кадастр города) #1786
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1786
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-ekb-geoportal-buildings"
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?
Зачем
НСПД
cad_buildingsтеряет ~70% зданий ЕКБ (grid-walk лоссовый + НСПД мигрировал layer id, см. #1785). Геопортал Екатеринбурга (геопортал.екатеринбург.рф, открытый GeoServer WFS) отдаёт полные здания города — в одном малом bbox 6825 vs 34 у НСПД, и содержит дома, которых у нас нет (Космонавтов 7б и пр.). Это закрывает дыры геокода вторички из своих данных.Что
130_ekb_geoportal_buildings.sql— таблицаekb_geoportal_buildings(street/house/street_norm/house_norm/lat/lon/floors/material/purpose/source_keys, UNIQUE (street_norm,house_norm)).ekb_geoportal_client.py— async WFS-клиентfetch_topo_buildings(bbox)слояportal:portal_geo_topo_buildс браузерными заголовками (без них 403), парс GeoJSON → центроид (чистый Python area-weighted, без shapely — его нет в tradein), graceful[].ekb_geoportal_ingest.py(python -m) — тайлит ЕКБ на 8484 тайла 0.004°×0.003°, группирует части по (улица,дом), upsert. Тайлинг провалидирован: максимум в центре 9,324 < cap 20000 → без обрезки.geocoder.py—_geoportal_house_match()подключён первым локальным tier'ом (геопортал → cad_buildings → legacy ILIKE → Yandex/Nominatim, всё аддитивно).test_ekb_geoportal_ingest.py(22) + правка 2 cadastral-тестов.Источник (верифицировано live с прода)
WFS
GET /api/gis/ows/3/portal/wfs?...typeNames=portal:portal_geo_topo_build&CQL_FILTER=BBOX(geoloc,lon_min,lat_min,lon_max,lat_max); поляtopo_street/topo_num_house/topo_floor/topo_material/topo_purpose+ геометрия. Прод дотягивается (200 с браузерным UA/Referer).После мержа
Деплой применит миграцию 130 → main session запустит загрузчик на проде (
python -m app.tasks.ekb_geoportal_ingest, ~30-45 мин) → зальёт все здания → перепроверка дом 7б + упавших адресов.Тесты
pytest— 50 passed.ruffчисто. Pre-commit green.Связано: #1785 (анализ НСПД→геопортал).