fix(tradein/estimate): домовой IMV-якорь приводится к базису ремонта квартиры (#2677) #2816

Merged
bot-backend merged 1 commit from fix/2677-house-anchor-renovation into main 2026-08-12 20:17:11 +00:00

1 commit

Author SHA1 Message Date
bot-backend
1ec37a793b fix(tradein/estimate): домовой IMV-якорь приводится к базису ремонта квартиры
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
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
CI Trade-In / backend-tests (pull_request) Successful in 3m55s
median_price к моменту blend'а уже домножен на _repair_coefficient («требует
ремонта» −6%, «евро» +10%), а домовой якорь из house_imv_evaluations запрошен
у Avito с ОДНИМ ремонтом (renovation_type). Порог anchor > median×1.15 и сам
blend клали два разных базиса на одну шкалу: у клиента с «требует ремонта»
порог фактически падал до ×1.081, а сработавший blend возвращал половину его
−6% обратно вверх — то есть однонаправленный якорь наполовину отменял
поправку на ремонт.

Правка не трогает калибровку: якорь домножается ровно на тот коэффициент,
который код УЖЕ применил к медиане (coef(ремонт клиента) / coef(ремонт строки
якоря)). Карточка Avito остаётся сырой — чужое число мы не правим; в blend
уходит пересчитанное, и пояснение это называет.

Замер на проде (1061 персистированная оценка, 2026-08-10, тем же кодом:
match_house_readonly → _fetch_house_imv_anchor → _apply_imv_blend):
- реализованный эффект СЕГОДНЯ 0 ₽ — blend не сработал ни разу (0 маркеров
  в confidence_explanation при 174 repair-заметках и 725 anchor-заметках
  в той же колонке, то есть канал показать срабатывание способен);
- 674/1061 оценок резолвятся в дом, 240 получают домовой якорь, порог
  пересекают 19 — все они гасятся гейтом anchor_tier is None выше по потоку;
- на этих 19 старый код против базис-согласованного: 9 оценок «требует
  ремонта» −3.3…−9.8 % (−4.13 млн ₽ суммарно), 1 оценка «хороший ремонт»
  +9.6 % (+0.47 млн ₽).

Однонаправленность blend'а НЕ трогаю — это отдельное продуктовое решение
(config: «ОДНОНАПРАВЛЕННО: только повышаем»), не дефект в смысле #2677.

Refs #2677
2026-08-10 14:36:51 +05:00