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