[tradein][v2] Визуальный аудит — иерархия 3 цен, CTA, микрокопи, консистентность после honest-hero (эпик #2262) #2266

Closed
opened 2026-07-03 06:30:10 +00:00 by lekss361 · 2 comments
Owner

Под-issue эпика #2262. Дименсия: визуал / иерархия / копирайт.

Контекст

1.3 (#2159) перевернул подачу: герой теперь = expected_sold («оценка»), median вторичный, третий тир ДКП/Росреестр «справочно». Три цены (asking 11.29 / expected 10.00 / ДКП 9.43) в одном ряду — нужен свежий взгляд, что иерархия читается и не путает.

Чек-лист

  • 3-цены иерархия: ясно ли, что «ОЖИДАЕМАЯ СДЕЛКА» — главная? Не конкурирует ли визуально с «РЕКОМЕНДОВАННОЙ ЦЕНОЙ В ОБЪЯВЛЕНИИ»? Бейдж «−11% К ОБЪЯВЛ.» читается как выгода, не как «занижение»?
  • CTA «← К ОЦЕНКЕ» / «ОСТАВИТЬ ЗАЯВКУ» / «Скачать PDF» — приоритет, заметность (#2193 уже усилил «К оценке»).
  • Микрокопи: унификация «оценка/цена/стоимость» (был разнобой, OfferCard «Оценка по рынку»→«Цена в объявлении»); сырые внутренние подписи (#1993 — CV, kicker'ы капсом); пустые блоки скрываются (#1994).
  • Консистентность между секциями (Аналитика/Продажи в доме/Аналоги/История) — единый визуальный язык, отступы 4/8/12/16/24/32, tabular-nums.
  • Мобильная раскладка герой-дуо + оверлеев.

Инструменты

mcp__playwright__* (render-feedback на живых ?id=), mcp__lighthouse__get_accessibility_score для быстрого скана. Правки — через frontend-engineer.

DoD

Ранжированный список визуальных/копи-дефектов; high-приоритет → PR. НЕ дублировать #2062/#2081 (там round-1/2) — это re-look ПОСЛЕ honest-hero.

Под-issue эпика #2262. **Дименсия: визуал / иерархия / копирайт.** ## Контекст 1.3 (#2159) перевернул подачу: герой теперь = `expected_sold` («оценка»), median вторичный, третий тир ДКП/Росреестр «справочно». Три цены (asking 11.29 / expected 10.00 / ДКП 9.43) в одном ряду — нужен свежий взгляд, что иерархия читается и не путает. ## Чек-лист - **3-цены иерархия:** ясно ли, что «ОЖИДАЕМАЯ СДЕЛКА» — главная? Не конкурирует ли визуально с «РЕКОМЕНДОВАННОЙ ЦЕНОЙ В ОБЪЯВЛЕНИИ»? Бейдж «−11% К ОБЪЯВЛ.» читается как выгода, не как «занижение»? - **CTA** «← К ОЦЕНКЕ» / «ОСТАВИТЬ ЗАЯВКУ» / «Скачать PDF» — приоритет, заметность (#2193 уже усилил «К оценке»). - **Микрокопи:** унификация «оценка/цена/стоимость» (был разнобой, OfferCard «Оценка по рынку»→«Цена в объявлении»); сырые внутренние подписи (#1993 — CV, kicker'ы капсом); пустые блоки скрываются (#1994). - **Консистентность** между секциями (Аналитика/Продажи в доме/Аналоги/История) — единый визуальный язык, отступы 4/8/12/16/24/32, tabular-nums. - Мобильная раскладка герой-дуо + оверлеев. ## Инструменты `mcp__playwright__*` (render-feedback на живых `?id=`), `mcp__lighthouse__get_accessibility_score` для быстрого скана. Правки — через frontend-engineer. ## DoD Ранжированный список визуальных/копи-дефектов; high-приоритет → PR. НЕ дублировать #2062/#2081 (там round-1/2) — это re-look ПОСЛЕ honest-hero.
lekss361 added the
scope/frontend
tradein
ux
labels 2026-07-03 06:31:17 +00:00
Author
Owner

Визуальный аудит выполнен (прод, живая оценка Белинского 86 — a545ca58, 2026-07-03)

Вердикт по трём вопросам issue: иерархия — частично (expected выделен рамкой/цветом, но asking конкурирует: первый в порядке чтения, тот же масштаб 38 vs 40px, «тяжелее» по цвету); бейдж — НЕ читается как выгода (круговой гейдж 51px с обрубком «К ОБЪЯВЛ.» = технический индикатор); конверсионный CTA — отсутствует («ОСТАВИТЬ ЗАЯВКУ» нет в DOM вообще, единственная залитая кнопка = re-run «ОЦЕНИТЬ КВАРТИРУ»).

HIGH:

  • H1 Флагманская карточка «ОЖИДАЕМАЯ ЦЕНА СДЕЛКИ» рендерится с четырьмя прочерками на живом отчёте (a545ca58: expected_sold=null от transient DB-error — бэк-фикс уже в PR по #2265). Нужен явный FE-fallback-state вместо дыры в визуальном центре.
  • H2 Мобилки нет: 390px → overflowX 473px, десктопная сетка без брейкпоинта, герой обрезан, рейка за экраном. → отдельный issue (полноценная responsive-раскладка — не фикс-PR).
  • H3 Две «медианы объявлений» на одном экране расходятся на 58%: рейка «37 · 14,23 млн» vs герой/оверлей «МЕДИАНА 8,99 млн» по тем же 37 аналогам. Trust-killer, разбираемся какое поле читает рейка.

MEDIUM: M1 иерархия только на цвете (asking понизить к 28-30px); M2 бейдж → пилюля «−N% к цене объявления»; M3 дисклеймер разброса 10px-микропринт; M4 залитый акцент отдан re-run'у (передать PDF; сам lead-CTA «Оставить заявку» = продуктовое решение, эскалирую); M5 чарт: метка «2026» в начале оси X перед 2019; M6 «срок продажи» немонотонен (+5% быстрее медианы, малое n — нужен gate); M7 оверлеи наследуют scroll предыдущего; M8 разнобой «цена/стоимость/к рынку/к объявл.».

LOW: сырой жаргон (CV 42,2%, P25-P75, ДКП без расшифровки, литеральный «Обновлено: —»); метро вклеено в адрес без пробелов; триплеты в «Продажи в доме» (манифестация dedup-бага — бэк-фикс в PR #2265); off-by-one 49 vs 50.

Работает хорошо (подтверждено): «← К ОЦЕНКЕ» заметен (#2193); tabular-nums везде — разряды не пляшут; kicker-система единообразна; честность-микрокопи («Росреестр · по улице», «61 объявление · точно по этому дому»); ДКП-тир корректно третичен; desktop 1440 без overflow.

Фикс-PR (H1, H3, M1-M3, M5-M8, LOW-quickies + M4-минимум «PDF primary») — после мерджа a11y-PR #2264 (пересечение по файлам). Скриншоты в сессии аудита.

## Визуальный аудит выполнен (прод, живая оценка Белинского 86 — a545ca58, 2026-07-03) **Вердикт по трём вопросам issue:** иерархия — частично (expected выделен рамкой/цветом, но asking конкурирует: первый в порядке чтения, тот же масштаб 38 vs 40px, «тяжелее» по цвету); бейдж — НЕ читается как выгода (круговой гейдж 51px с обрубком «К ОБЪЯВЛ.» = технический индикатор); конверсионный CTA — отсутствует («ОСТАВИТЬ ЗАЯВКУ» нет в DOM вообще, единственная залитая кнопка = re-run «ОЦЕНИТЬ КВАРТИРУ»). **HIGH:** - **H1** Флагманская карточка «ОЖИДАЕМАЯ ЦЕНА СДЕЛКИ» рендерится с четырьмя прочерками на живом отчёте (a545ca58: expected_sold=null от transient DB-error — бэк-фикс уже в PR по #2265). Нужен явный FE-fallback-state вместо дыры в визуальном центре. - **H2** Мобилки нет: 390px → overflowX 473px, десктопная сетка без брейкпоинта, герой обрезан, рейка за экраном. → отдельный issue (полноценная responsive-раскладка — не фикс-PR). - **H3** Две «медианы объявлений» на одном экране расходятся на 58%: рейка «37 · 14,23 млн» vs герой/оверлей «МЕДИАНА 8,99 млн» по тем же 37 аналогам. Trust-killer, разбираемся какое поле читает рейка. **MEDIUM:** M1 иерархия только на цвете (asking понизить к 28-30px); M2 бейдж → пилюля «−N% к цене объявления»; M3 дисклеймер разброса 10px-микропринт; M4 залитый акцент отдан re-run'у (передать PDF; сам lead-CTA «Оставить заявку» = продуктовое решение, эскалирую); M5 чарт: метка «2026» в начале оси X перед 2019; M6 «срок продажи» немонотонен (+5% быстрее медианы, малое n — нужен gate); M7 оверлеи наследуют scroll предыдущего; M8 разнобой «цена/стоимость/к рынку/к объявл.». **LOW:** сырой жаргон (CV 42,2%, P25-P75, ДКП без расшифровки, литеральный «Обновлено: —»); метро вклеено в адрес без пробелов; триплеты в «Продажи в доме» (манифестация dedup-бага — бэк-фикс в PR #2265); off-by-one 49 vs 50. **Работает хорошо (подтверждено):** «← К ОЦЕНКЕ» заметен (#2193); tabular-nums везде — разряды не пляшут; kicker-система единообразна; честность-микрокопи («Росреестр · по улице», «61 объявление · точно по этому дому»); ДКП-тир корректно третичен; desktop 1440 без overflow. Фикс-PR (H1, H3, M1-M3, M5-M8, LOW-quickies + M4-минимум «PDF primary») — после мерджа a11y-PR #2264 (пересечение по файлам). Скриншоты в сессии аудита.
Author
Owner

PR #2312 — post-merge QA PASS

Задеплоено ~20:39 UTC, живой прогон на Белинского 86 (54м²):

  • H3 (расходящиеся медианы): hero, оверлей «Аналогичные объявления» и «Сводка объекта» теперь показывают одно и то же число (10,01 млн / 185 339 ₽/м²) — унификация на median_price_rub подтверждена живьём.
  • Иерархия цен: asking 30px/400 vs expected 40px/600 — визуально разведены.
  • Пилюля «−15% к цене объявления» вместо кругового гейджа.
  • Accent-контраст флагманской карточки читаем (расчётно ≈4.6:1 на реальном фоне).
  • График истории цен: годы на оси X в правильном хронологическом порядке (2019→2022→...→2026).
  • «СТОИМОСТЬ» как отдельное слово — 0 вхождений на странице (заменено на «ЦЕНА»).
  • 0 console errors, все network-запросы 200/304.

Единственное непокрытое живьём — null-fallback флагманской карточки (H1): адрес теста имел непустой expected_sold_price, конкретный null-кейс не воспроизведён в этом QA-прогоне. Не блокирует — фикс на уровне кода верифицирован ранее pre-push review (mappers.ts hasExpected gate + emptyNote).

Issue закрыт. Эпик #2262 отмечаю по этому пункту — это был последний открытый пункт эпика.

## PR #2312 — post-merge QA PASS Задеплоено ~20:39 UTC, живой прогон на Белинского 86 (54м²): - H3 (расходящиеся медианы): hero, оверлей «Аналогичные объявления» и «Сводка объекта» теперь показывают **одно и то же число** (10,01 млн / 185 339 ₽/м²) — унификация на `median_price_rub` подтверждена живьём. - Иерархия цен: asking 30px/400 vs expected 40px/600 — визуально разведены. - Пилюля «−15% к цене объявления» вместо кругового гейджа. - Accent-контраст флагманской карточки читаем (расчётно ≈4.6:1 на реальном фоне). - График истории цен: годы на оси X в правильном хронологическом порядке (2019→2022→...→2026). - «СТОИМОСТЬ» как отдельное слово — 0 вхождений на странице (заменено на «ЦЕНА»). - 0 console errors, все network-запросы 200/304. Единственное непокрытое живьём — null-fallback флагманской карточки (H1): адрес теста имел непустой `expected_sold_price`, конкретный null-кейс не воспроизведён в этом QA-прогоне. Не блокирует — фикс на уровне кода верифицирован ранее pre-push review (mappers.ts `hasExpected` gate + `emptyNote`). **Issue закрыт.** Эпик #2262 отмечаю по этому пункту — это был последний открытый пункт эпика.
Sign in to join this conversation.
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#2266
No description provided.