feat(#3051): deals.doc_type + регион и тип документа как параметры импорта Росреестра #3421
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
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#3421
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/3051-deals-doc-type-region-param"
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?
Summary
Пункты 3 и 6 из #3051 (эпик #2989). Тип документа терялся при загрузке, а фильтр ДКП и регион 66 стояли литералами в двух местах — на них упирается расширение на регион 77.
Для Москвы это не косметика: в источнике за 2024 по
region_code=77лежит 30 627 ДДУ с медианой 112 743 ₽/м² против 107 005 ДКП с медианой 256 250 ₽/м². Это цены котлована, и без различимого признака они развалят любой ценовой коридор.288_deals_doc_type.sql— колонкаdoc_type text(idempotent), бэкфилл'ДКП'дляsource='rosreestr'(всё, что там лежит, прошло фильтр ДКП на импорте — не эвристика), явныйregion_code=66вdefault_paramsрасписания. Индекса нет: селективность 2-3 значения, живые выборки идут поregion_code/deal_date/geom.scheduler.import_rosreestr_dkp—region_codeиdoc_typesизparams, дефолты66/['ДКП']воспроизводят текущее прод-поведение байт-в-байт. Фильтры через bind-параметры (CAST(:region_code AS int),ANY(CAST(:doc_types AS text[]))),doc_typeтеперь пишется вdeals.dedup_hashоставлен как'ros:dkp:' || id—idуникален в источнике независимо от типа документа, а смена формы ключа осиротила бы все уже загруженные строки (ровно то, что чинила миграция 077). Причина записана комментарием.deploy/import-rosreestr.sh— те же два параметра как env со старыми дефолтами,doc_typeпротащен через staging.Test plan
EXPLAIN (VERBOSE):Remote SQL ... WHERE ((doc_type = ANY ('{ДКП}'::text[]))) ... AND ((region_code = 66)) ... LIMIT 2000— оба предиката и LIMIT уезжают на удалённую сторону, регрессии плана нетuv run pytest tests/test_rosreestr_dedup_key.py -q→ 10 passed (обновлён под уход литералов из SQL живого импорта)uv run ruff check+ruff format --checkпо изменённым файламbash -n deploy/import-rosreestr.shdeals= 108 623 строки / 49 MB, всеsource='rosreestr'— разовый UPDATE на деплое дёшевНовые тесты не писались — до живой проверки функционала.
Часть #3051 (п. 3 и 6), эпик #2989.
Уточнение: на момент этого комментария PR уже был смержен другой сессией (20:04:29 UTC,
541c4ff2) — закрывать нечего. Веткаfeat/3051-rosreestr-import-region-param(PR #3422) перебазируется поверх main как дельта: маппингcity='Москва'/addressдля 77 без потери сделок с пустым city, исходный округ вraw_payload, колонкиokato/quarter_cad_number/districtу foreign table, wildcard-расписаниеrosreestr_dkp_import_*с выключенным seed 77, чекпоинт per-source.