|
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 7s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 52s
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
Follow-up к #2500: закрывает Tier-2a-дыру, которую geo-guard Tier-2b не доставал. Coord-less карточка, чей адрес РАЗРЕШАЕТ non-ЕКБ город обл.66 (resolve_city_token), больше не матчит глобально-уникальный alias (ни по fingerprint, ни по normalized_address) — иначе non-ЕКБ карточка баккетилась бы в одноимённый ЕКБ-дом и корраптила ЕКБ-данные. При срабатывании guard'а обе alias-выборки пропускаются → fall-through в New house (Tier-3 coord-gated, тоже пропускается). normalize.py: + resolve_city_token() (город обл.66 или None), + EKB_CITY_TOKEN; has_city_token переиспользует resolve_city_token. EKB happy-path байт-в-байт: guard срабатывает ТОЛЬКО когда адрес называет non-ЕКБ город И нет координат. ЕКБ-карточки (resolved city = екатеринбург) и доминирующие bare/city-less coord-less карточки Avito (resolved None) идут Tier-2a/2b как раньше. ВАЖНО (документировано в коде и отчёте): реальные Avito SERP-адреса — bare (без city-токена; 2% из 5037 avito-alias'ов несут 'екатеринбург', 0% — oblast). Значит для bare oblast-карточки resolve_city_token=None и guard дремлет: полное закрытие bare-Tier-2a-остатка требует sweep-context/city-keyed aliases — отдельный follow-up, вне scope, актуален лишь при включённом oblast-sweep. Zero prod-impact сегодня. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| conflict_resolution.py | ||
| houses.py | ||
| listings.py | ||
| normalize.py | ||