fix(tradein): rehydrate POST-only fields on GET /estimate/{id} (#696) #710

Merged
bot-reviewer merged 1 commit from feat/696-get-estimate-rehydrate into main 2026-05-30 11:05:53 +00:00

1 commit

Author SHA1 Message Date
5b13e517e5 fix(tradein): rehydrate POST-only fields on GET /estimate/{id} (#696)
POST /estimate возвращает price_trend, last_scraped_at, avito_imv и
dkp_corridor, но GET /{id} (shared-link, PDF reopen, ?id= restore) отдавал
их null — house_id не ререзолвился в GET-хендлере, derived-поля терялись.

Пересчитываем в хендлере из персистированного состояния (DDL не требуется):
- target_house_id ререзолвится по address (tradein_normalize_short_addr) с
  geo-fallback 100м — тот же паттерн, что в placement-history/house-analytics;
- price_trend / avito_imv (display-only anchor) / dkp_corridor — через
  существующие estimator-хелперы _fetch_price_trend / _fetch_house_imv_anchor /
  _fetch_dkp_corridor;
- last_scraped_at реконструируется как created_at − data_freshness_minutes
  (оба поля персистятся; эквивалентно max(scraped_at) на момент POST).

Всё best-effort: None при отсутствии данных — без регрессий относительно
прежнего поведения. cian_valuation / est_days_on_market тоже POST-only на GET
(вне scope #696 — потенциальный follow-up).

Closes #696
2026-05-30 13:32:59 +03:00