feat(tradein/v2): позиция квартиры на рынке — плашка на карточке рекомендованной цены (#2899) #3024

Merged
bot-backend merged 3 commits from feat/2899-market-percentile-ui into main 2026-08-21 12:34:08 +00:00

3 commits

Author SHA1 Message Date
b6ab582211 chore(tradein/v2): #2899 — убрать шум prettier из предыдущего коммита (у tradein-frontend нет prettier-конвенции), оставить только правки
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 10s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-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 1m17s
2026-08-21 17:01:25 +05:00
03af7386e9 feat(tradein/v2): #2899 — сами правки типа/маппера/ResultPanel (в первый коммит попал только тест: git checkout HEAD откатил рабочее дерево до коммита)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
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 56s
2026-08-21 17:00:05 +05:00
07655a2642 feat(tradein/v2): позиция квартиры на рынке — плашка на карточке рекомендованной цены (#2899)
Some checks failed
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 11s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-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) Failing after 44s
Почему: бэкенд с #2926 отдаёт market_percentile (1..99, null при когорте
< 15), на проде он уже считается (21.08: 69 при 16 аналогах, 57 при 23,
null при 11), но фронт поле не знал — «бейдж из макета» так и не появился.

Что: AggregatedEstimate.market_percentile в wire-типе; маппер даёт карточке
«РЕКОМЕНДОВАННАЯ ЦЕНА» ту же спокойную плашку, что у карточки 2: лейбл по
терцилям («Низ рынка» ≤33 / «В рынке» / «Верх рынка» ≥67) и подпись
«69-й перцентиль среди 16 аналогов» — число рядом, чтобы лейбл не читался
точнее, чем он есть; при null плашки нет (не «В рынке» по умолчанию).
ResultPanel: JSX плашки вынесен в DeltaPill и рисуется и в ветке с
гистограммой — раньше delta у карточки с барами терялся бы молча.

Тест marketPercentile.test.ts (vitest): лейблы и границы терцилей, null →
нет плашки, delta карточки 2 не тронут, склонение по n_analogs. На main
красный по значению (delta карточки 1 === undefined).

Refs #2899
2026-08-21 16:59:05 +05:00