fix(tradein/estimator): min-width floor ±12% на ценовой диапазон (#2209) #2230

Merged
lekss361 merged 1 commit from fix/tradein-range-min-width-floor into main 2026-07-02 21:21:29 +00:00

1 commit

Author SHA1 Message Date
bot-backend
a6f073ba9a fix(tradein/estimator): min-width floor ±12% на ценовой диапазон (#2209)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 7s
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 1m43s
При n=1 аналоге q1==q3==median → asking-диапазон (Q1..Q3 ₽/м²) схлопывался в
ноль ширины: юзеру уходил «диапазон» из одной точки с ложной точностью.
RANGE_MIN_HALFWIDTH_PCT=0.12 + чистая _apply_range_floor, применяемая
ПОСЛЕДНЕЙ в спайне к обоим диапазонам (headline asking + expected_sold)
вокруг их точек. Floor ТОЛЬКО расширяет; точку и confidence не трогает;
не может триггернуть manual_review wide-range (1.273 < 1.9).

Frozen backtest baseline БАЙТ-ИДЕНТИЧЕН до/после (replay проверен):
expected_sold-диапазон строится калиброванным PI-бэндом (rel-width 0.743,
кратно шире floor 0.24) — floor на нём no-op; кусает только вырожденный
asking-хвост (n=1..2), который replay не скорит. Bias/MAPE не сдвинуты.
+10 юнит-тестов (включая доказательство порядка floor-после-IMV-blend).

Refs #2209
2026-07-03 00:07:46 +03:00