feat(mera/estimate): предзаполнять этажность, год и тип дома из справочника (UI) #3259

Merged
lekss361 merged 1 commit from feat/3257-house-facts-prefill-ui into main 2026-08-29 20:39:27 +00:00

1 commit

Author SHA1 Message Date
bot-backend
767db1f66d feat(mera/estimate): предзаполнять этажность, год и тип дома из справочника
All checks were successful
CI / changes (pull_request) Successful in 11s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (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 / frontend-checks (pull_request) Successful in 59s
Фронтовая половина #3257. После выбора адреса из автокомплита дёргается
GET /geocode/house-facts и заполняет поля, которые пользователь не трогал.
Покрытие справочника: этажность 98.3%, год 86.8% — значит большинству
пользователей эти три поля больше заполнять не придётся.

Три вещи, которые здесь ломаются молча, поэтому сделаны явно:

1. Не затираем ввод. Подставляем только в пустое поле либо в то, что раньше
   заполнили мы сами. Человек вписал 16 этажей — 16 и останется.

2. Гонка. Пользователь успевает выбрать второй адрес, пока летит первый запрос.
   Гейт по счётчику поколений + AbortController: ответ на устаревший адрес не
   применяется, даже если пришёл последним.

3. Не зовём setState после размонтирования. В этом файле уже был ровно такой
   баг (#3226, debounce-таймер переживал unmount) — при размонтировании
   отменяем летящий запрос.

found=false и сетевые сбои — тихий no-op с console.debug: предзаполнение это
удобство, а не функциональность формы, ронять или пугать красным нечего.

Рядом с подставленным значением показываем «из справочника» вместо обычной
подсказки поля, чтобы человек понимал, откуда число. Правит руками — пометка
снимается.

Тесты: 4 кейса на предзаполнение (пустое поле, ввод не затирается, found=false,
гонка двух выборов). Проверены мутацией — снятие гейта поколений и снятие
условия «только пустое поле» роняют ровно по одному тесту каждое.
2026-08-29 23:37:24 +03:00