gendesign/tradein-mvp/backend/app/services/matching
bot-backend 384c4e7ac3
All checks were successful
CI / changes (pull_request) Successful in 8s
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
fix(tradein/matching): не сваливать листинги в чужой дом (P1-P3)
Три гарда в match_or_create_house (+ P2 в match_house_readonly):
- P1: не матчить/алиасить голую улицу (normalized_address без номера дома)
- P2: отклонять Tier-3 гео-кандидата, если номера домов различаются
- P3: не цементировать слабый гео-матч (0.7) как alias-ключ здания

Хелперы has_house_number/house_number_token (по хвостовому токену —
«улица 8 марта» это улица, не дом). Корень mis-bucketing: house 131237
стянул 8 разных Мамина-номеров + голую улицу. Юнит + поведенческие тесты,
603 matching/normalize/house зелёных. Аффектит только НОВЫЕ матчи;
чистка cemented-данных — отдельной миграцией (P4).
2026-06-29 00:06:13 +03:00
..
__init__.py feat(tradein): cross-source matching service (3-tier: cadastr / fingerprint / geo / composite) (#470) 2026-05-23 14:12:16 +00:00
conflict_resolution.py fix(matching): conflict_resolution picks freshest (last_seen_at) value, deterministic (#1539) 2026-06-17 22:43:59 +03:00
houses.py fix(tradein/matching): не сваливать листинги в чужой дом (P1-P3) 2026-06-29 00:06:13 +03:00
listings.py fix(matching): Tier 2b alias sync + collapse double SAVEPOINT (#849) (#870) 2026-05-31 08:05:48 +00:00
normalize.py fix(tradein/matching): не сваливать листинги в чужой дом (P1-P3) 2026-06-29 00:06:13 +03:00