feat(mera/estimate): характеристики дома из справочника, а не только из формы #3242

Merged
lekss361 merged 1 commit from feat/3234-house-facts-into-estimate into main 2026-08-29 18:06:18 +00:00

1 commit

Author SHA1 Message Date
bot-backend
ca3504059e feat(mera/estimate): характеристики дома из справочника, а не только из формы
All checks were successful
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 10s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m56s
Tier H в `_fetch_analogs` («тот же класс дома»: год ±15 + этажность ±30%)
существует давно, но его докстринг честно предупреждал: «пропускается если
year_built или total_floors неизвестны». Он и пропускался — потому что кормили
его так:

- `total_floors` брался ИСКЛЮЧИТЕЛЬНО из `payload`, фолбэка не было вообще;
- фолбэк года шёл в Overpass/OSM (`get_house_metadata`), а в кэше
  `house_metadata` лежит 68 строк на всю базу.

При этом `target_house_id` резолвится строкой выше — дом известен, просто его
характеристики никто не читал. После наполнения справочника из ГИС ЖКХ и DOM.РФ
в `houses` год есть у 86.8% домов, этажность — у 98.3%.

Теперь приоритет: payload → houses → OSM. Пользователь по-прежнему главнее
справочника; Overpass дёргается только если после первых двух что-то осталось
неизвестным, то есть в подавляющем большинстве случаев внешний вызов с
таймаутом больше не тратится. Год из справочника проходит тот же
`_sanitize_build_year`, что и раньше.

Замер на 1123 прошлых оценках: 450 шли без года (для 301 справочник его знает),
240 без этажности (знаем для 108). Цена смешения классов домов в пуле аналогов —
на 466 оценках с восстановимым пулом медианный сдвиг медианы 2.28%, p90 = 16.3%,
у 18% оценок больше 10%. Систематического смещения нет: смешение даёт шум.
2026-08-29 21:00:18 +03:00