fix(tradein/matching): P1 extended — never create a house from a numberless address (no cadastral) #2194
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#2194
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/tradein-no-numberless-house-insert"
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
match_or_create_houseсоздавал дом из ЛЮБОГО адреса на финальном INSERT-new tier — так на проде выросли 3 384 «дома без домов»-вёдра («Москва» — 664 листинга, «Екатеринбург (Avito)» — 587, «р-н Чкаловский, мкр. Вторчермет» — 480), к которым прилинковано 28 656 листингов. P1-guard (инцидент house 131237) блокировал numberless только в Tier 2b и alias-регистрации.Расширение: перед INSERT-new —
if not has_num and not cad → (None, 0.0, "no_house_number"), дом не создаётся. Кадастр остаётся достаточной идентичностью (numberless+cadnum → создаётся).Сигнатура →
tuple[int | None, float, str]; аудит всех callers:scrapers/base.py— уже гейтитhouse_id is not None(без правок)estimator._save_yandex_history_items— nullable house_id, паттерн существовал (без правок)scraper_adapters.py+scraper-kit/contracts.py— аннотации синхронизированы (анти type-drift)avito_houses.py— None-guard в_persist_house(крашил быint(None)) + graceful-skip enrichmentPrereq для data-op: purge существующих numberless-вёдер (снапшот + unlink listings → перелинковка следующими проходами скрейперов) — без этого гейта активные безномерные листинги пересоздали бы мусор.
Test plan
Связано: #2184/#2185 (fias-каналы), issue #2189 (канон), purge data-op (после deploy этого PR).