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
Owner

Summary

Фронтовая половина #3257. Бэкенд (GET /house-facts + валидатор floor <= total_floors) уехал в PR #3257, а UI-коммит остался незапушенным — этот PR его догоняет.

  • fetchHouseFacts() в trade-in-api.ts + типы HouseFactsResponse / asHouseType
  • ParamsPanel: после выбора подсказки адреса дёргаем /house-facts и подставляем total_floors, build_year, house_typeтолько в пустые поля, введённое пользователем не перетираем
  • Гонки закрыты: AbortController + счётчик поколений (houseFactsGenRef), очистка на unmount — тот же класс бага, что чинили в #3226
  • Подставленные поля помечаются подсказкой «из справочника»
  • 4 теста (ParamsPanel.prefill.test.tsx): подстановка в пустое поле, отсутствие перетирания, found=false → no-op, устаревший ответ не применяется. Проверены мутационно.

Test plan

  • npm test -- ParamsPanel.prefill — 4/4 зелёные
  • визуальная проверка в браузере после деплоя
## Summary Фронтовая половина #3257. Бэкенд (`GET /house-facts` + валидатор `floor <= total_floors`) уехал в PR #3257, а UI-коммит остался незапушенным — этот PR его догоняет. - `fetchHouseFacts()` в `trade-in-api.ts` + типы `HouseFactsResponse` / `asHouseType` - `ParamsPanel`: после выбора подсказки адреса дёргаем `/house-facts` и подставляем `total_floors`, `build_year`, `house_type` — **только в пустые поля**, введённое пользователем не перетираем - Гонки закрыты: `AbortController` + счётчик поколений (`houseFactsGenRef`), очистка на unmount — тот же класс бага, что чинили в #3226 - Подставленные поля помечаются подсказкой «из справочника» - 4 теста (`ParamsPanel.prefill.test.tsx`): подстановка в пустое поле, отсутствие перетирания, `found=false` → no-op, устаревший ответ не применяется. Проверены мутационно. ## Test plan - [x] `npm test -- ParamsPanel.prefill` — 4/4 зелёные - [ ] визуальная проверка в браузере после деплоя
lekss361 added 1 commit 2026-08-29 20:37:44 +00:00
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
767db1f66d
Фронтовая половина #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,
гонка двух выборов). Проверены мутацией — снятие гейта поколений и снятие
условия «только пустое поле» роняют ровно по одному тесту каждое.
lekss361 merged commit 79fc8c45ff into main 2026-08-29 20:39:27 +00:00
lekss361 deleted branch feat/3257-house-facts-prefill-ui 2026-08-29 20:39:27 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3259
No description provided.