fix(estimator): #1774 Tier A admits same-building novostroyki resales (secondary-dominant gate) #1776
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#1776
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/1774-tier-a-same-building-primary"
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?
Проблема (#1774)
Пользователь оценивает «Евгения Савкова 29» (ЕКБ, Широкая Речка) и видит на cian объявления в том же доме, но оценщик их не учитывает.
Корень (диагностика на проде): в том же доме «29» — 6 вторичных комплов (avito+yandex,
vtorichka) и 4 cian-объявления, помеченныхlisting_segment='novostroyki'(включая ссылку юзера 330047129). Same-building anchor (Tier A) фильтровал(listing_segment IS NULL OR ='vtorichka')— гард #1186 — и выкидывал 4 cian-объявления. Но ихsale_type='free'(свободная продажа собственником) → это вторичные перепродажи/переуступки в сданном доме; cian клеит «новостройка» как таксономию ЖК. Цены идентичны вторичке (153–185k vs 138–188k). Плюс дубльsource_id=330047129(2 active-строки) раздувал вес.Решение (за reversible-флагом, Tier A ONLY)
Ослабление гарда #1186 только в Tier A и только при secondary-dominant доме: впускаем novostroyki, если в том же доме
secondary_count >= 1 AND secondary_count >= primary_count. Чисто-первичный или primary-dominated дом → гард #1186 сохраняется (не якорим перепродажу на ценах застройщика). Флагestimate_sb_tier_a_allow_primary_if_secondary_present(default True) — Леха может выключить без редеплоя кода.(source, source_id)(канон кодовой базы) — схлопывает дубль 330047129 даже при отличии source_url слешем/параметром.Не тронуты: Tier C, радиусный median, asking_to_sold_ratio — гарды #1186 там целы.
Почему secondary-dominant, а не «≥1 вторичка»
Code-review поймал money-кейс: 1 одинокая вторичка + кластер дорогих novostroyki → MAD-clip выкинул бы редкую вторичку как выброс → якорь на застройщике (~27% переоценка). Гейт
secondary_count >= primary_countэто исключает.Остаточный риск (для трекинга)
При parity (sec==prim) MAD-clip теоретически может сместить якорь; на практике защищён band-guard + comp_min floor. Возможный follow-up: тюнить порог / sale_type-aware классификация переуступок.
Тесты
84 unit-теста зелёные (test_tier_a_primary_1774 — новый: secondary-dominant include / primary-dominated exclude / pure-primary exclude / flag-off / dedup same-id-diff-url; test_segment_guard_1186 — Tier C гард цел; test_same_building_anchor; test_anchor_watchdog; backtest+pure_units). ruff чист. Миграций нет.
⚠️ Golden 55-case backtest гоняется офлайн против БД — не покрыт unit-сьютом; релаксация только ДОБАВЛЯет комплы в mixed-домах, так что ранее якорившиеся pure-secondary кейсы не сдвигаются.
Связано
Часть разбора жалобы «не учитывает тот же дом» (Евгения Савкова 29). Соседние: #1773 (avito de-glue адресов — PR #1775; cian newbuilding house-number — зона Лехи), #1772 (кадастровая унификация — data-blocked: кадастр ~0% на домах, FDW cad_buildings без геометрии).