fix(tradein/estimate): отдавать фактический радиус подбора, а не выбор пользователя #2835

Merged
bot-backend merged 1 commit from fix/2632-actual-radius into main 2026-08-12 12:48:19 +00:00

1 commit

Author SHA1 Message Date
bot-backend
dae3f5bc41 fix(tradein/estimate): отдавать фактический радиус подбора, а не выбор пользователя
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 10s
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 4m2s
Сохранённая оценка отдавала search_radius_m=null, и карта рисовала круг по
превью-радиусу 1 км. Прод 2026-08-11 (оценка 4c20518f, Советская 51):
relaxations = ["радиус расширен до 5000 м"], все 10 показанных аналогов вне
круга, самый дальний — 4381 м. По всей базе: у 62 из 388 оценок с расстояниями
(16%) есть аналог дальше километра, p90 максимума 1572 м, максимум 4381 м.

- GET /estimate/{id} восстанавливает фактический радиус из того, что реально
  персистится: подпись каскада «радиус расширен до N м» (точное значение, то же,
  что вернул POST), иначе — размах сохранённых аналогов, но не ниже
  DEFAULT_RADIUS_M. Нет расстояний — остаётся null, фронт падает на выбор
  пользователя, как раньше. Колонки/миграции не требуется.
- Подпись каскада и её разбор — один helper (radius_relaxation_label /
  radius_from_relaxations), иначе строка и парсер разъедутся.
- confidence_explanation называет ФАКТИЧЕСКИЙ радиус: было прибито «расширили
  радиус до 2 км» (константа старого 1км→2км fallback'а) даже когда каскад
  #oblast-F уходил до 5 км — метка называла не результат (ср. #2811).
- Ответ несёт обе величины: requested_radius_m (с чего начали) рядом с
  search_radius_m (чем кончили). На GET requested_radius_m остаётся null —
  radius_m не персистится, подставлять дефолт значило бы выдать догадку за
  выбор пользователя.

Refs #2632
2026-08-12 17:42:49 +05:00