From d7b65e256fe98f429c4a659c3ca388c3129f4ba8 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Sat, 27 Jun 2026 13:45:48 +0300 Subject: [PATCH] docs: mark HTML parity analytics task and DoD verified MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Flip BrokerDashboardAnalyticsCard + analytics component tests checkboxes for the parity iteration. - Mark verified DoD items (dashboard tests 49/49, full frontend tests 175/175, lint, build). - Add code-to-spec mapping table linking the analytics card to the HTML reference and spec §6 for the next agent / reviewer. - Be explicit that live visual + mobile-overflow checks still need manual verification with a running backend. --- .../broker-dashboard-redesign/tasks.md | 51 ++++++++++++++++--- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/docs/features/broker-dashboard-redesign/tasks.md b/docs/features/broker-dashboard-redesign/tasks.md index 282b7f9..1ebdd33 100644 --- a/docs/features/broker-dashboard-redesign/tasks.md +++ b/docs/features/broker-dashboard-redesign/tasks.md @@ -65,8 +65,8 @@ - [ ] Обновить `BrokerDashboardEventsCard`: `thead`, двухстрочный инструмент, type badges, semantic amount colors, status badges. - [ ] Обновить `BrokerDashboardIncomeCard`: `thead`, двухстрочный инструмент, type badges, semantic amount colors. - [ ] Обновить `BrokerDashboardTableSkeleton`: общий skeleton-паттерн для событий и доходов с корректной геометрией колонок. -- [ ] Обновить `BrokerDashboardAnalyticsCard`: `₽` для RUB и positive/negative tone карточек. -- [ ] Обновить component tests dashboard под HTML parity. +- [x] Обновить `BrokerDashboardAnalyticsCard`: `₽` для RUB и positive/negative tone карточек. +- [x] Обновить component tests dashboard под HTML parity (analytics tones). - [ ] Проверить, что блок `Доходы` не расширяет backend/API и остаётся в рамках текущих income-типов. - [ ] Проверить desktop layout `/broker/2084014113` против `docs/research/2026-06-27-broker-account-redesign.html`. - [ ] Проверить mobile layout `/broker/2084014113` на viewport `390x844` против `docs/research/2026-06-27-broker-account-redesign.html`. @@ -83,11 +83,48 @@ ## Definition of Done для HTML parity -- [ ] `rtk npm run test:frontend -- --run src/widgets/broker-dashboard` проходит. -- [ ] `rtk npm run test:frontend` проходит после HTML parity изменений. -- [ ] `rtk npm run lint -w apps/frontend` проходит после HTML parity изменений. -- [ ] `rtk npm run build:frontend` проходит после HTML parity изменений. +- [x] `rtk npm run test:frontend -- --run src/widgets/broker-dashboard` проходит. (49/49) +- [x] `rtk npm run test:frontend` проходит после HTML parity изменений. (175/175) +- [x] `rtk npm run lint -w apps/frontend` проходит после HTML parity изменений. +- [x] `rtk npm run build:frontend` проходит после HTML parity изменений. - [ ] На `/broker/2084014113` заголовки карточек, toolbar таблиц, бейджи типов, подписи инструментов, цвета сумм, analytics colors и skeleton визуально соответствуют `docs/research/2026-06-27-broker-account-redesign.html`. + Проверено только по тестам и code-to-spec mapping внизу файла — live dev server не запускался + в этой итерации (нет backend/auth в среде). Необходима ручная проверка пользователем. - [ ] Нет общего горизонтального overflow на mobile; горизонтальный scroll допускается только внутри таблиц. -- [ ] `docs/features/broker-dashboard-redesign/tasks.md` обновлён по факту выполнения. + Требует live dev server + ручной проверки на viewport `390x844`. +- [x] `docs/features/broker-dashboard-redesign/tasks.md` обновлён по факту выполнения. + +### Code-to-spec mapping для analytics (HTML parity) + +`BrokerDashboardAnalyticsCard.tsx` (`apps/frontend/src/widgets/broker-dashboard/ui/`) против +HTML-эталона (`docs/research/2026-06-27-broker-account-redesign.html:1145-1158`): + +| HTML reference element | React-компонент / data-testid | Спецификация §6 (spec.md:165-180) | +|------------------------|------------------------------------------------------------|----------------------------------------------------------------------| +| `
` | `BrokerDashboardCard` с `ariaLabel="Аналитика доходности"` | Секция с заголовком, доступная по aria-label | +| `

Аналитика доходности

` | Заголовок карточки | Компактный card heading (§2) | +| `.analytics-item.positive .analytics-value` | `data-testid="dashboard-analytics-totalDeposits"` (tone `positive`) | Пополнения — positive (§6, AC `Блок Аналитика доходности`) | +| `.analytics-item.negative .analytics-value` для Выводы | `data-testid="dashboard-analytics-totalWithdrawn"` (tone `negative`, префикс `−`) | Выводы — negative, всегда со знаком `−` (§6) | +| `.analytics-item.negative .analytics-value` для Нетто (если нетто<0) | `data-testid="dashboard-analytics-netInvested"` (tone `negative` при `value<0`) | Нетто — sign-based (§6) | +| `.analytics-item.positive .analytics-value` для Дивиденды/Купоны/Всего получено | `data-testid="dashboard-analytics-totalDividends"`, `…-totalCoupons`, `…-totalReceived` | Positive если `value > 0`, neutral если `value === 0` (§6) | +| `113 773,03 ₽` (валюта) | `formatDashboardCurrency` через `shared/lib/formatters` | RUB отображается как `₽` (AC, §2) | + +Тесты в `BrokerDashboard.test.tsx`: + +- `renders analytics card with the ₽ symbol and no "RUB" code` — подтверждает замену `RUB` на `₽`. +- `applies positive, negative and neutral tones to analytics values` — подтверждает tone-атрибуты + для каждого поля с разнообразными значениями (`totalDeposits: 1000`, `totalWithdrawn: 250`, + `netInvested: -150`, `totalDividends: 75`, `totalCoupons: 0`, `totalReceived: 90`). + +### Что НЕ было проверено в этой итерации + +- Реальный визуальный рендеринг `/broker/2084014113` на desktop и `390x844` mobile. + Требуется ручная проверка пользователем с поднятым backend (нужны реальные auth и T-Bank/MOEX + прокси). Dev server не запускался. +- Поведение отсутствующего/ошибочного analytics под live-нагрузкой. Логика в карточке покрыта + тестами, но проверка UX-сообщений и skeleton-states в браузере не делалась. +- Реальный viewport на `390x844` для подтверждения отсутствия общего горизонтального overflow. + Геометрия таблиц уже переключена на внутренний `overflowX: 'auto'` (`BrokerDashboardEventsCard.tsx:176`, + `BrokerDashboardIncomeCard.tsx`), но фактическая вёрстка в браузере не сверялась с эталоном. +