fix(tradein/estimator): расширить corridor-clamp slack 0.25→0.40 для премиума без own-листингов #1817

Merged
lekss361 merged 1 commit from fix/tradein-corridor-slack-040 into main 2026-06-20 06:19:13 +00:00
Owner

Зачем

После #1795 (clamp премиум-headline к sold-коридору) досканальная проверка премиум-сегмента (11 элитных домов ЕКБ, in-container smoke) показала: кламп точно таргетирован — дома с own-листингами резолвятся tier-A и трекают реальный asking (Татищева/Шейнкмана/Радищева/Февральской/Юмашева в пределах ~13%). Но дома без own-листингов (Куйбышева 44, Малышева 30, Красноармейская 23, Горького 79 — n=0 own 2-комн за 45 дней) идут tier-C и клампятся к corridor_high×1.25. Чтобы не занижать настоящий премиум без листингов — расширяем cap.

Что

app/core/config.py:110estimate_corridor_clamp_slack дефолт 0.25 → 0.40 (cap = corridor_high×1.40 вместо ×1.25).

Почему безопасно (не реинфляция)

  • Эконом/комфорт были ниже даже ×1.25 → кламп там no-op; расширение slack их не трогает (подтверждено кросс-класс смоуком 11 адресов).
  • Меняется только потолок для tier-C премиума без own-данных: +12% воздуха над sold-коридором.
  • Tier-C гейт остаётся ×1.5 (estimate_anchor_tier_c_corridor_mult) — давит явную контаминацию соседними элитными домами выше 1.5×. Новый cap ×1.40 < гейт ×1.5 → консистентно.
  • Tier-A (own-комплы дома) по-прежнему exempt от клампа.
  • Всё за settings-флагом: откат к ×1.25 (или любому значению) через env ESTIMATE_CORRIDOR_CLAMP_SLACK без деплоя.

Тесты

  • Полный pytest: 2178 passed, 1 skipped (+2 pre-existing CI-deselect: cian cache + search auth — не относятся).
  • Clamp unit-тесты передают slack в _apply_corridor_clamp напрямую (не через дефолт) → не затронуты, остаются зелёными.
  • ruff + pre-commit green.

Связано: #1795 (corridor clamp).

## Зачем После #1795 (clamp премиум-headline к sold-коридору) досканальная проверка премиум-сегмента (11 элитных домов ЕКБ, in-container smoke) показала: кламп **точно таргетирован** — дома с own-листингами резолвятся tier-A и трекают реальный asking (Татищева/Шейнкмана/Радищева/Февральской/Юмашева в пределах ~13%). Но дома **без own-листингов** (Куйбышева 44, Малышева 30, Красноармейская 23, Горького 79 — n=0 own 2-комн за 45 дней) идут tier-C и клампятся к `corridor_high×1.25`. Чтобы не занижать настоящий премиум без листингов — расширяем cap. ## Что `app/core/config.py:110` — `estimate_corridor_clamp_slack` дефолт **0.25 → 0.40** (cap = `corridor_high×1.40` вместо ×1.25). ## Почему безопасно (не реинфляция) - Эконом/комфорт были **ниже** даже ×1.25 → кламп там no-op; расширение slack их не трогает (подтверждено кросс-класс смоуком 11 адресов). - Меняется только потолок для **tier-C** премиума без own-данных: +12% воздуха над sold-коридором. - Tier-C гейт остаётся **×1.5** (`estimate_anchor_tier_c_corridor_mult`) — давит явную контаминацию соседними элитными домами выше 1.5×. Новый cap ×1.40 < гейт ×1.5 → консистентно. - Tier-A (own-комплы дома) по-прежнему exempt от клампа. - Всё за settings-флагом: откат к ×1.25 (или любому значению) через env `ESTIMATE_CORRIDOR_CLAMP_SLACK` без деплоя. ## Тесты - Полный pytest: **2178 passed, 1 skipped** (+2 pre-existing CI-deselect: cian cache + search auth — не относятся). - Clamp unit-тесты передают slack в `_apply_corridor_clamp` напрямую (не через дефолт) → не затронуты, остаются зелёными. - ruff + pre-commit green. Связано: #1795 (corridor clamp).
lekss361 added 1 commit 2026-06-20 06:16:51 +00:00
fix(tradein/estimator): расширить corridor-clamp slack 0.25→0.40 для премиума без own-листингов
All checks were successful
CI / changes (pull_request) Successful in 5s
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
3cb11355e6
lekss361 merged commit faa1af9c56 into main 2026-06-20 06:19:13 +00:00
lekss361 deleted branch fix/tradein-corridor-slack-040 2026-06-20 06:19:13 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1817
No description provided.