fix(tradein/matching): Tier-2a city-guard для non-ЕКБ coord-less (п.2, defense-in-depth) #2502
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#2502
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/tradein-oblast-tier2a-cityguard"
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?
п.2 (#2500 follow-up) — Tier-2a city-guard (defense-in-depth, LATENT)
resolve_city_token()в normalize.py + guard в matching/houses.py: coord-less карточка с resolved НЕ-ЕКБ городом → skip Tier-2a/2b → New house (не мис-баскет в ЕКБ-дом). ЕКБ happy-path байт-в-байт (guard активен только приlat=lon=NoneИ resolved non-ЕКБ; ЕКБ bare/city-qualified/coord-bearing — не затронуты). Zero prod-impact (oblast-sweep выключен). 66+155 тестов, live-verified (ЕКБ-alias 6675 fingerprint сохранён; synthetic Н.Тагил → skip).⚠️ ВАЖНО — что этот PR НЕ закрывает
Реальные Avito SERP-карточки bare (только улица+№, БЕЗ города — 0 oblast-токенов, 2.1% «екатеринбург»). Для bare-карточки
resolve_city_token→None → guard дремлет → настоящий bare-oblast Tier-2a-остаток НЕ закрыт этим PR (закрыт только city-qualified путь, которого в Avito сегодня нет). Полное закрытие bare-пути невозможно из адреса (нет сигнала «не ЕКБ») — нужен sweep-context: прокинуть target-город свипа (#2500 уже тянетcity_slug) вmatch_or_create_houseкак coord-less city-override. Это трогает ingest→match цепочку.GATE: oblast per-city sweep НЕ включать, пока bare-путь не закрыт (sweep-city threading ИЛИ city-keyed aliases). Этот PR — безопасный defense-in-depth слой, не полное закрытие.