# Разделы брокерского счёта Дата: 2026-06-18 Статус: реализовано Эпик: [Портфель брокера](../../epics/BrokerPortfolio.md) ## Цель Сделать страницу конкретного брокерского счёта кратким и понятным обзором, а подробные позиции и операции разнести по самостоятельным разделам, не теряя контекст выбранного счёта. ## Пользовательский результат Пользователь может: - быстро увидеть полную стоимость счёта, денежный остаток и текущую структуру активов; - понять, сколько разных акций и выпусков облигаций находится на счёте; - перейти к отдельной таблице акций или облигаций; - увидеть последние операции на overview и открыть всю доступную историю; - отфильтровать историю по одному точному типу операции, например только по выплатам купонов или только по обычному налогу. ## Область изменений Фича изменяет опыт работы с конкретным брокерским счётом и включает: - обзор счёта; - общую навигацию разделов счёта; - отдельный раздел акций; - отдельный раздел облигаций; - отдельный раздел операций; - данные сводки, необходимые для точных счётчиков позиций. ## Требования ### 1. Общая навигация - Разделы `Обзор`, `Акции`, `Облигации` и `Операции` принадлежат одному выбранному брокерскому счёту. - На широком экране разделы доступны через постоянное боковое меню. - На узком экране боковое меню заменяется горизонтальными прокручиваемыми вкладками. - Активный раздел визуально и семантически обозначен. - Переход между разделами не меняет выбранный брокерский счёт. ### 2. Обзор счёта Overview показывает: - название счёта; - полную стоимость портфеля; - денежный остаток; - существующие показатели дневной и ожидаемой доходности; - круговую диаграмму структуры портфеля; - карточку акций с количеством разных позиций, стоимостью и долей; - карточку облигаций с количеством разных выпусков, стоимостью и долей; - пять последних доступных операций; - переход ко всей доступной истории операций. Карточки акций и облигаций ведут в соответствующие разделы счёта. ### 3. Распределение портфеля - Проценты рассчитываются от полной стоимости счёта, включая денежный остаток. - Диаграмма поддерживает срезы `Акции`, `Облигации`, `ETF/фонды`, `Деньги` и `Прочие`. - `Прочие` объединяет остальные и неизвестные классы инструментов. - Срез с нулевым значением не отображается. - Отрицательное значение не отображается как сектор диаграммы и показывается текстом рядом со сводкой. - Легенда показывает название среза, денежную стоимость и процент. - Информация остаётся понятной без различения цветов. ### 4. Счётчики позиций - Количество акций означает число разных позиций акций, а не сумму штук всех акций. - Количество облигаций означает число разных выпусков облигаций, а не сумму штук всех облигаций. - Счётчики отражают полный состав счёта и не зависят от текущей страницы таблицы. ### 5. Раздел акций - Раздел показывает только позиции типа `share`. - Первая версия содержит таблицу с существующими колонками: тикер, название, количество, текущая цена и текущая стоимость. - Тикер ведёт на страницу акции, когда маршрут инструмента может быть определён. - Таблица сохраняет cursor-пагинацию по 10 позиций. - При отсутствии акций показывается отдельное пустое состояние. ### 6. Раздел облигаций - Раздел показывает только позиции типа `bond`. - Первая версия содержит таблицу с существующими колонками: тикер, название, количество, текущая цена и текущая стоимость. - Тикер ведёт на страницу облигации, когда маршрут инструмента может быть определён. - Таблица сохраняет cursor-пагинацию по 10 позиций. - При отсутствии облигаций показывается отдельное пустое состояние. ### 7. Последние операции на overview - Overview показывает не более пяти последних операций доступного по умолчанию периода. - Отображение операции сохраняет дату, русское название типа, инструмент и сумму. - Блок содержит переход к полному разделу операций. - Если операций нет, блок показывает спокойное пустое состояние и сохраняет переход к полной истории. ### 8. Раздел операций - Раздел показывает cursor-пагинированную историю по 10 операций. - Без отдельного фильтра дат раздел использует существующий период по умолчанию: с начала текущего календарного года до текущего момента. - Под всей доступной историей в рамках первой версии понимаются все cursor-страницы этого периода, а не операции за всё время существования счёта. - Пользователь может выбрать ровно один точный тип операции либо значение `Все операции`. - Типы с разным финансовым смыслом не объединяются. В частности, `Налог`, `Налог по облигациям` и `Налог на дивиденды` являются отдельными значениями. - В интерфейсе показываются русские названия известных типов, а не технические enum-значения. - Выбор нового типа начинает просмотр результатов с первой cursor-страницы. - Выбранный фильтр сохраняется в адресе страницы и восстанавливается при открытии ссылки. - Значение `Все операции` удаляет фильтр типа. - Фильтр по датам, инструменту и выбор нескольких типов не входят в первую версию. ### 9. Загрузка, ошибки и пустые состояния - Первичная загрузка сводки и таблиц показывает skeleton соответствующей формы. - При переходе между cursor-страницами текущие строки не исчезают; поверх таблицы показывается состояние обновления. - Ошибка одного раздела не скрывает общую навигацию счёта. - Для пустых акций, пустых облигаций и отсутствия операций выбранного типа используются отдельные понятные сообщения. - Недоступные отдельные значения отображаются как `—` и не подменяются нулём. ## Ограничения - Backend остаётся единственным клиентом T-Bank. - Денежные значения форматируются в валюте, указанной в данных. - Точная структура портфеля и счётчики не должны требовать загрузки всех cursor-страниц на frontend. - Существующая cursor-пагинация позиций и операций сохраняется. - Фича не добавляет отдельные страницы для ETF, фондов и прочих инструментов. - Фича не добавляет новую аналитику доходности, риска или прогнозов. ## Acceptance Criteria - На широком экране у счёта есть боковая навигация `Обзор`, `Акции`, `Облигации`, `Операции`. - На узком экране те же разделы доступны через горизонтальные прокручиваемые вкладки. - Overview не содержит полных таблиц позиций и полной истории операций. - Overview показывает полную стоимость, деньги, существующую доходность, диаграмму, карточки акций и облигаций и не более пяти последних операций. - Диаграмма рассчитывает доли от полной стоимости счёта вместе с деньгами. - Диаграмма имеет текстовую легенду со стоимостью и процентом каждого ненулевого среза. - Карточки акций и облигаций показывают количество разных позиций, а не сумму штук. - Количество позиций корректно для портфеля, содержащего больше одной cursor-страницы. - Раздел акций содержит только акции и сохраняет пагинацию по 10 строк. - Раздел облигаций содержит только облигации и сохраняет пагинацию по 10 строк. - Раздел операций содержит пагинацию по 10 строк и фильтр по одному точному типу. - Без параметров дат раздел операций показывает доступный период с начала текущего календарного года. - Фильтры `Выплата купона`, `Налог`, `Налог по облигациям` и `Налог на дивиденды` дают независимые результаты. - После смены типа операций открывается первая страница отфильтрованной истории. - Выбранный тип восстанавливается из URL после перезагрузки. - Загрузка, обновление, ошибка и пустое состояние каждого раздела отображаются согласно требованиям. ## Вне области фичи - страницы ETF, фондов, валют, деривативов и прочих инструментов; - multi-select типов операций; - продуктовые группы операций; - UI-фильтры операций по датам и инструментам; - изменение правил расчёта доходности; - экспорт позиций или операций.