fix(tradein/estimator): kitchen_area_m2/ceiling_height_m/is_apartments comp-scoring (#2012) #2396
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#2396
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/tradein-2012-comp-scoring-features"
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?
Summary
Три независимых feature-флага, все default OFF — dormant capability, zero изменений текущего прод-поведения (грепнул все
.env*/compose — ничего не оверрайдит на true).estimate_kitchen_area_signal_enabled/estimate_ceiling_height_signal_enabled— уhouse_type/year_builtесть target-значение из инпута юзера для сравнения; уkitchen_area_m2/ceiling_height_mtarget-значения физически нет (форма юзера их не собирает, backtest ground-truth — rosreestr ДКП — тоже без этих колонок). Изобретать внешнюю "типичную" константу без данных — необоснованно. Вместо этого: self-referential штраф — отклонение кандидата от медианы САМОГО ПУЛА кандидатов текущего запроса, в Tier H/W relevance_score. NULL-safe (не штрафует, не участвует в медиане), sparse-safe (полный skip при <5 non-null в пуле).estimate_is_apartments_filter_enabled— hard-filter в_COMMON_WHERE+ Tier W, симметрично existing novostroyki-guard (#1186). NULL проходит без штрафа, только явныйtrueисключается.Review fixup
_stratify_candidatesтребует вход, уже отсортированный поrelevance_score(per-source guaranteed-quota selection зависит от порядка)._apply_kitchen_ceiling_signalмутируетrelevance_scorein-place ПОСЛЕ SQL-фетча, но ДО stratify — добавлен явный re-sort в обоих call-sites (Tier H, Tier W), чтобы diversity-quota selection видел пост-adjustment порядок, когда флаг когда-нибудь включат. Сейчас no-op (флаги off), но был latent footgun для первого PR, который включит хоть один флаг.⚠️ Live-backtest НЕ прогнан
Ни у воркера, ни у main-сессии не было доступа к prod DB в этой сессии (db-tunnel down). Обязательно перед флипом любого флага в default ON:
Флаги независимы — можно тестировать по отдельности. Сравнить MAPE/range-coverage/calibration.
Test plan
test_estimator_kitchen_ceiling_2012.py) — NULL-safety/sparse-safety/математика/is_apartments на всех тирах — все green-k estimator: 495 passed (no regressions)ruff check— cleanRefs #2012