167 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Разделы брокерского счёта
Дата: 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-фильтры операций по датам и инструментам;
- изменение правил расчёта доходности;
- экспорт позиций или операций.