fix(tradein/matching): P1 extended — never create a house from a numberless address (no cadastral) #2194

Merged
lekss361 merged 2 commits from fix/tradein-no-numberless-house-insert into main 2026-07-02 18:46:21 +00:00
Owner

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 enrichment

Prereq для data-op: purge существующих numberless-вёдер (снапшот + unlink listings → перелинковка следующими проходами скрейперов) — без этого гейта активные безномерные листинги пересоздали бы мусор.

Test plan

  • Новые: numberless → None + ничего не создано; address=None+coords → gated; numberless+cadnum → создаётся
  • Affected-модули: 92 passed (matching, savepoint, avito_houses_dedup, adapters contracts, yandex_valuation/history, estimator integration)
  • ruff + pre-commit green; полный suite — в CI

Связано: #2184/#2185 (fias-каналы), issue #2189 (канон), purge data-op (после deploy этого PR).

## 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 enrichment Prereq для data-op: purge существующих numberless-вёдер (снапшот + unlink listings → перелинковка следующими проходами скрейперов) — без этого гейта активные безномерные листинги пересоздали бы мусор. ## Test plan - [x] Новые: numberless → None + ничего не создано; address=None+coords → gated; numberless+cadnum → создаётся - [x] Affected-модули: 92 passed (matching, savepoint, avito_houses_dedup, adapters contracts, yandex_valuation/history, estimator integration) - [x] ruff + pre-commit green; полный suite — в CI Связано: #2184/#2185 (fias-каналы), issue #2189 (канон), purge data-op (после deploy этого PR).
lekss361 added 1 commit 2026-07-02 18:35:06 +00:00
fix(tradein/matching): P1 extended — never create a house from a numberless address (no cadastral)
All checks were successful
CI / changes (pull_request) Successful in 14s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
0eb033d77d
lekss361 added 1 commit 2026-07-02 18:45:03 +00:00
fix(tradein/scraper-kit): mirror numberless None-guards in avito houses provider copy
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
e84b6e553a
lekss361 merged commit a9d06c9c44 into main 2026-07-02 18:46:21 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2194
No description provided.