feat(tradein/v2): кликабельные строки + параметры в оверлее «Предыдущие оценки» #2424

Merged
lekss361 merged 1 commit from feat/tradein-cacheview-clickable-params into main 2026-07-04 13:49:19 +00:00
Owner

Summary

Frontend-часть живого запроса пользователя (см. PR #2420 — backend-часть, уже задеплоена и live-подтверждена через Network-таб). CacheView («ПРЕДЫДУЩИЕ ОЦЕНКИ») теперь:

  • показывает компактную колонку ПАРАМЕТРЫ (комнаты/площадь/этаж — «2 комн · 54 м²» или «2 комн · 54 м² · 5/9 эт.» когда известны оба этажа; «студия» для rooms≤0; «—» если нет ни комнат, ни площади);
  • строки кликабельны/доступны с клавиатуры (Enter/Space) → router.replace(/v2?id=<uuid>) + закрытие оверлея — переход на полный отчёт по историческому estimate (там уже видны ВСЕ параметры, включая house_type/repair_state/has_balcony, через существующий restore-by-id).

Дизайн-решения:

  • Разделитель « · » — уже доминирующая конвенция в mappers.ts.
  • Площадь — переиспользован существующий fmtArea() (не новый форматтер).
  • Этаж показывается ТОЛЬКО когда известны и floor, и total_floors — не показываем вводящее в заблуждение «5/? эт.».
  • Навигация — router.replace (не push), т.к. это 100%-консистентная существующая конвенция в page.tsx для всех ?id=-переходов.
  • Доступность — role="row" с tabIndex/onKeyDown(Enter+Space, preventDefault на Space)/aria-label/focus-visible ring, тот же паттерн что в 7 соседних v2-компонентах. Невайренный кейс (onSelectRow не передан) остаётся полностью инертным — без регрессии.

Test plan

  • npx tsc --noEmit — чисто
  • npm run lint — чисто (только 3 pre-existing warning в нетронутых файлах)
  • code-reviewer: approve (2 minor non-blocking заметки: key можно на r.id, role="row" как interactive target — не блокеры)
  • Live-проверка после деплоя: клик по строке реально открывает отчёт

Без codegen — у tradein-mvp/frontend нет OpenAPI-codegen пайплайна (это только у Site Finder frontend/), типы в trade-in.ts maintained вручную по конвенции этого файла; новые поля 1:1 сверены с живым SQL-проекцией бэкенда.

Refs #2420

## Summary Frontend-часть живого запроса пользователя (см. PR #2420 — backend-часть, уже задеплоена и live-подтверждена через Network-таб). CacheView («ПРЕДЫДУЩИЕ ОЦЕНКИ») теперь: - показывает компактную колонку **ПАРАМЕТРЫ** (комнаты/площадь/этаж — «2 комн · 54 м²» или «2 комн · 54 м² · 5/9 эт.» когда известны оба этажа; «студия» для rooms≤0; «—» если нет ни комнат, ни площади); - строки кликабельны/доступны с клавиатуры (Enter/Space) → `router.replace(/v2?id=<uuid>)` + закрытие оверлея — переход на полный отчёт по историческому estimate (там уже видны ВСЕ параметры, включая house_type/repair_state/has_balcony, через существующий restore-by-id). **Дизайн-решения:** - Разделитель « · » — уже доминирующая конвенция в `mappers.ts`. - Площадь — переиспользован существующий `fmtArea()` (не новый форматтер). - Этаж показывается ТОЛЬКО когда известны и floor, и total_floors — не показываем вводящее в заблуждение «5/? эт.». - Навигация — `router.replace` (не `push`), т.к. это 100%-консистентная существующая конвенция в page.tsx для всех `?id=`-переходов. - Доступность — `role="row"` с `tabIndex`/`onKeyDown`(Enter+Space, preventDefault на Space)/`aria-label`/focus-visible ring, тот же паттерн что в 7 соседних v2-компонентах. Невайренный кейс (`onSelectRow` не передан) остаётся полностью инертным — без регрессии. ## Test plan - [x] `npx tsc --noEmit` — чисто - [x] `npm run lint` — чисто (только 3 pre-existing warning в нетронутых файлах) - [x] code-reviewer: approve (2 minor non-blocking заметки: `key` можно на `r.id`, `role="row"` как interactive target — не блокеры) - [ ] Live-проверка после деплоя: клик по строке реально открывает отчёт Без codegen — у `tradein-mvp/frontend` нет OpenAPI-codegen пайплайна (это только у Site Finder `frontend/`), типы в `trade-in.ts` maintained вручную по конвенции этого файла; новые поля 1:1 сверены с живым SQL-проекцией бэкенда. Refs #2420
lekss361 added 1 commit 2026-07-04 13:44:44 +00:00
feat(tradein/v2): кликабельные строки + параметры в оверлее «Предыдущие оценки»
All checks were successful
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 / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 59s
a548d142cc
Клик по строке -> переход на полный отчёт (/v2?id=); компактная колонка
ПАРАМЕТРЫ (комнаты/площадь/этаж) поверх уже расширенного GET /history (#2420).
lekss361 merged commit 3a2b4ba825 into main 2026-07-04 13:49:19 +00:00
lekss361 deleted branch feat/tradein-cacheview-clickable-params 2026-07-04 13:49:19 +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#2424
No description provided.