feat(sf): КРТ-реквизиты (ekb_krt_sites) в ИРД-блок analyze (#1060) #1131
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#1131
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/krt-analyze-join"
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?
Что
block["krt_requisites"]в ИРД-блоке analyze: когда участок попадает в КРТ-площадку — отдаёт застройщика/цену торгов/градпотенциал изekb_krt_sites(#1126). Завершает #1060.Расследование ключа (важно)
ird_overlays.opportunity_krtоказался ККР (комплексные кадастровые работы) Роскадастра, НЕ КРТ-застройка (raw_props: contractNum/krcustomername — кадастровые работы). Геометрию КРТ для матча взял изplanning_projects(ПМТ/ППТ полигоны, m.134).planning_projects.full_nameПАГЕ-№ ↔ekb_krt_sites.paga_decisions[].number+year→confidence='exact'.matched=False, confidence='none', реквизиты НЕ передаются (никакой ложной атрибуции застройщика).Состав
krt_lookup.py::parcel_krt_requisites(db, parcel_wkt)— ST_Intersects к planning_projects + exact-матч к ekb_krt_sites, graceful.build_ird_analyze_block.NB (follow-up)
Живой
_krt_at(geoportal WFSportal_geo_oks_krt) в analyze остаётся отдельным geom-фактом, кekb_krt_sitesне привязан (нет общего ключа). Кандидат на harvest КРТ-геометрии в БД → закрывает и латентность (#1130).Часть #1060/#1067.
✅ APPROVE — КРТ-реквизиты в analyze. Хорошее defensive-проектирование (no false attribution).
Verified:
build_ird_analyze_blockтолько добавляет ключkrt_requisitesв DB-дешёвой секции, рядом с planning/reservations) → callers/тесты не ломаются._patch_overlayпатчитparcel_krt_requisites.confidence='exact', дедуп (pp_id,krt_id). psycopg v3: bindCAST(:parcel_wkt AS text)✓;dmd_actual_year::text/split_part— column-cast, не bind, ОК.opportunity_krt=ККР (Роскадастр, не КРТ-застройка) → матч через planning_projects ПМТ — корректный вывод, избегает ложного join. matched=False для непривязанных → нет ложной атрибуции застройщика. 👍🟡 MINOR (actionable → follow-up #issue, НЕ блокер): в
_PLANNING_NO_MATCH_SQLregex записан многострочным литералом — встроенные\nзагрязняют alternation на концах строк. Проверил в Postgres:Краснофлотцев→match ✓, ноДонбасской→False,Лумумбы→False (концевые токены строк склеены с\n |). Затрагивает ТОЛЬКО geom-only fallback-hint (matched=False) — не exact-данные, не падение, well-formed блок. Сейчас (ekb_krt_sites пуст) fallback — активный путь → 2 топонима молча без hint. Fix: схлопнуть regex в одну строку. Заодно:jsonb_array_elementsупадёт на не-array paga_decisions (scraper всегда пишет array, но guardjsonb_typeof(...)='array'надёжнее) + хардкод-список топонимов хрупок к новым площадкам.Данные: ekb_krt_sites пуст на проде (sync не прогнан) → exact-матчей пока 0, 3/15 заработают после наполнения (проверено автором локально; на проде не сверял — пустая таблица).
Merging (squash); regex → follow-up.