feat(tradein/v2): срок экспозиции подстрокой в карточке «Ожидаемая цена сделки» #2639

Merged
lekss361 merged 1 commit from feat/tradein-v2-exposure-in-result-card into main 2026-08-02 16:06:04 +00:00
Owner

Что

В центральном блоке 02-РЕЗУЛЬТАТ карточка «ОЖИДАЕМАЯ ЦЕНА СДЕЛКИ» получила подстроку «срок продажи ~57 дн».

Почему так

Разрыв был ровно в одном аргументе: mapSummary получал analyticsData, а mapResultPanel — нет, поэтому срок экспозиции был доступен только в правом сводном рейле и отсутствовал в центральном блоке.

Источник — analytics.kpi.median_exposure_days (за ним house_placement_history.exposure_days, заполнено на 95%, медиана 61 д; прод отдаёт 57).

Намеренно НЕ используется est_days_on_market: он считается по deals.days_on_market, который заполнен в 0 из 96 974 строк, и не персистится.

Решения

  • Подстрока, а не четвёртая карточка — сетка карточек в артборде жёстко трёхколоночная (ResultPanel.tsx, 1.3fr 1.3fr 0.85fr), четвёртая колонка потребовала бы пережатия трёх существующих.
  • Отдельное поле exposureNote, а не переиспользование notenote уже занят сверкой с медианой ДКП и может рендериться одновременно.
  • Гейт на hasExpected: когда прогноза цены нет, карточка рендерит только emptyNote, и подстроке там места нет.
  • analyticsData добавлена в deps useMemo — иначе подстрока не перерисовывалась бы при догрузке аналитики (она приходит отдельным запросом, позже оценки).

Проверка

  • npx tsc --noEmit — чисто.
  • npm run lint — ошибок нет (2 preexisting warning'а в несвязанных файлах: CianAuthBanner, pct).
  • Визуальная проверка на проде — после деплоя.

Заметка про формат

Файлы ResultPanel.tsx и page.tsx не проходят prettier --check и до этой правки — фронт trade-in не покрыт prettier-хуком (.pre-commit-config.yaml ограничен ^frontend/), CI гоняет только type-check + lint. Переформатирование не делалось, чтобы не смешивать 28 строк смысла с сотнями строк пробелов.

## Что В центральном блоке 02-РЕЗУЛЬТАТ карточка «ОЖИДАЕМАЯ ЦЕНА СДЕЛКИ» получила подстроку «срок продажи ~57 дн». ## Почему так Разрыв был ровно в одном аргументе: `mapSummary` получал `analyticsData`, а `mapResultPanel` — нет, поэтому срок экспозиции был доступен только в правом сводном рейле и отсутствовал в центральном блоке. Источник — `analytics.kpi.median_exposure_days` (за ним `house_placement_history.exposure_days`, заполнено на 95%, медиана 61 д; прод отдаёт 57). **Намеренно НЕ используется `est_days_on_market`**: он считается по `deals.days_on_market`, который заполнен в 0 из 96 974 строк, и не персистится. ## Решения - Подстрока, а не четвёртая карточка — сетка карточек в артборде жёстко трёхколоночная (`ResultPanel.tsx`, `1.3fr 1.3fr 0.85fr`), четвёртая колонка потребовала бы пережатия трёх существующих. - Отдельное поле `exposureNote`, а не переиспользование `note` — `note` уже занят сверкой с медианой ДКП и может рендериться одновременно. - Гейт на `hasExpected`: когда прогноза цены нет, карточка рендерит только `emptyNote`, и подстроке там места нет. - `analyticsData` добавлена в deps `useMemo` — иначе подстрока не перерисовывалась бы при догрузке аналитики (она приходит отдельным запросом, позже оценки). ## Проверка - `npx tsc --noEmit` — чисто. - `npm run lint` — ошибок нет (2 preexisting warning'а в несвязанных файлах: `CianAuthBanner`, `pct`). - Визуальная проверка на проде — после деплоя. ## Заметка про формат Файлы `ResultPanel.tsx` и `page.tsx` не проходят `prettier --check` и **до** этой правки — фронт trade-in не покрыт prettier-хуком (`.pre-commit-config.yaml` ограничен `^frontend/`), CI гоняет только `type-check` + `lint`. Переформатирование не делалось, чтобы не смешивать 28 строк смысла с сотнями строк пробелов.
lekss361 added 1 commit 2026-08-02 16:04:10 +00:00
feat(tradein/v2): показать срок экспозиции в карточке «ожидаемая цена сделки»
All checks were successful
CI / changes (pull_request) Successful in 8s
CI Trade-In / changes (pull_request) Successful in 8s
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 1m4s
be5771931e
Подстрока «срок продажи ~N дн» под пилюлей дельты во второй карточке
02-РЕЗУЛЬТАТ, источник — analytics.kpi.median_exposure_days (реальные
данные house_placement_history). Не используем est_days_on_market —
считается по deals.days_on_market, который 0 в 96974/96974 строк.
lekss361 merged commit 966415dc8a into main 2026-08-02 16:06:04 +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#2639
No description provided.