fix(tradein): канон срезает гео-префиксы (Россия/Екатеринбург/мкр/пр-т) + REINDEX — покрытие 38%→~70% (147) #2073

Merged
lekss361 merged 1 commit from fix/tradein-canon-geo-prefixes into main 2026-06-28 17:54:28 +00:00
Owner

Root cause

Низкое покрытие (38%) знаменателя — НЕ дыра ГАР, а баг канона: адреса домов несут гео-префиксы, которые tradein_canon_addr не срезал (Россия,/Екатеринбург,/мкр. Эльмаш,), + баг пр-т→хвост т. ГАР УЖЕ знает квартиры для ~2 800 «незаматченных» домов.

Фикс (миграция 147)

CREATE OR REPLACE FUNCTION tradein_canon_addr: нормализует пр-т/пр-кт→проспект, б-р→бульвар; срезает гео-префикс-сегменты (россия/екатеринбург/город/р-н/мкр/м-н/пгт/снт/обл, дом-маркер д.); затем прежний strip типов улиц. Backward-compatible (чистые адреса → тот же канон). REINDEX gar_house_flats_canon_idx (функциональный индекс держит старые значения после смены функции — обязателен, внутри миграции).

Validation (prod ROLLBACK-tx)

  • Recovery: 2 905 матчей / 2 789 правдоподобных из 4 041 незаматченных (выше оценки 2000-2700).
  • No-regression: 0 потерянных матчей (4 678/4 681 тот же flat_count; 3 changed — все улучшение: пр-кт Ленина undercount→полный).
  • False-positive: 0 в выборке 12 пар (улица+номер точны, нет 33→333).

Покрытие credible-% поднимется с ~38% до ~70% после деплоя + ре-матча.

Test plan

  • ROLLBACK-валидация (recovery/no-regression/false-positive) на проде.
  • Авто-apply миграции на деплое (после 146).
  • Post-deploy: python -m app.tasks.gar_flats_load --match-only --region 66 (main-сессия) → до-заполнит gar_flat_count.

Часть QA-серии после ревью Макса (канон-фикс). Дальше: дедуп квартир (кросс-площадочные дубли) + ЖКХ точные числа (Крауля 89А: ГАР 11 vs ЖКХ 429).

## Root cause Низкое покрытие (38%) знаменателя — **НЕ дыра ГАР, а баг канона**: адреса домов несут гео-префиксы, которые `tradein_canon_addr` не срезал (`Россия,`/`Екатеринбург,`/`мкр. Эльмаш,`), + баг `пр-т`→хвост `т`. ГАР УЖЕ знает квартиры для ~2 800 «незаматченных» домов. ## Фикс (миграция 147) `CREATE OR REPLACE FUNCTION tradein_canon_addr`: нормализует `пр-т/пр-кт→проспект`, `б-р→бульвар`; срезает гео-префикс-сегменты (россия/екатеринбург/город/р-н/мкр/м-н/пгт/снт/обл, дом-маркер `д.`); затем прежний strip типов улиц. Backward-compatible (чистые адреса → тот же канон). **REINDEX `gar_house_flats_canon_idx`** (функциональный индекс держит старые значения после смены функции — обязателен, внутри миграции). ## Validation (prod ROLLBACK-tx) - **Recovery: 2 905 матчей / 2 789 правдоподобных** из 4 041 незаматченных (выше оценки 2000-2700). - **No-regression: 0 потерянных** матчей (4 678/4 681 тот же flat_count; 3 changed — все улучшение: `пр-кт Ленина` undercount→полный). - **False-positive: 0** в выборке 12 пар (улица+номер точны, нет 33→333). Покрытие credible-% поднимется с ~38% до **~70%** после деплоя + ре-матча. ## Test plan - [x] ROLLBACK-валидация (recovery/no-regression/false-positive) на проде. - [ ] Авто-apply миграции на деплое (после 146). - [ ] Post-deploy: `python -m app.tasks.gar_flats_load --match-only --region 66` (main-сессия) → до-заполнит `gar_flat_count`. Часть QA-серии после ревью Макса (канон-фикс). Дальше: дедуп квартир (кросс-площадочные дубли) + ЖКХ точные числа (Крауля 89А: ГАР 11 vs ЖКХ 429).
lekss361 added 1 commit 2026-06-28 17:53:52 +00:00
fix(tradein): канон срезает гео-префиксы (Россия/Екатеринбург/мкр/пр-т) + REINDEX — покрытие 38%→~70%
All checks were successful
CI / changes (pull_request) Successful in 9s
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
22ce9e73f4
lekss361 merged commit b45a819cb6 into main 2026-06-28 17:54:28 +00:00
lekss361 deleted branch fix/tradein-canon-geo-prefixes 2026-06-28 17:54:28 +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#2073
No description provided.