39 lines
3.7 KiB
Markdown
39 lines
3.7 KiB
Markdown
# Будущие события брокерского счёта
|
||
|
||
Авторизованный пользователь видит до пяти ближайших событий на обзоре `/accounts/:accountId` и открывает полный список известных событий Brokerage Account, доступного через текущее T-Bank connection, на `/accounts/:accountId/events`. Ошибка или пустой результат блока на обзоре не заменяет Portfolio.
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
participant U as User
|
||
participant F as Frontend
|
||
participant B as Backend
|
||
participant T as T-Bank gRPC
|
||
participant M as MOEX ISS
|
||
U->>F: Открывает будущие события
|
||
F->>B: GET /api/v1/brokerage-accounts/:accountId/events
|
||
B->>T: GetAccounts и GetPortfolio
|
||
B->>T: GetDividends (дивиденты по акциям)
|
||
B->>M: Получает события облигаций
|
||
B-->>F: Прогноз на 30 дней
|
||
F-->>U: Компактный список событий
|
||
```
|
||
|
||
## API
|
||
|
||
`GET /api/v1/brokerage-accounts/:accountId/events` требует Bearer access token. Ответ содержит `accountId`, `calculatedAt` и отсортированный по календарной дате список `events`.
|
||
|
||
Событие содержит `type` (`coupon`, `dividend`, `maturity`, `offer`), `date`, `dateKind`, идентификаторы и название Instrument, а также nullable `projectedAmount` как Money `{ currency, value }`. Для `offer` и неизвестных денежных условий сумма не создаётся искусственно и передаётся `null`. Дивиденд передаёт `dateKind: registry`: это дата закрытия реестра, а не гарантированная дата зачисления.
|
||
|
||
## Поведение и ограничения
|
||
|
||
При первом открытии полного списка frontend показывает structural skeleton
|
||
заголовка и event rows вместо отдельного spinner. Placeholder не представляет
|
||
данные и не является интерактивным; error и empty outcomes остаются отдельными
|
||
состояниями после завершения запроса.
|
||
|
||
- Период включает текущую календарную дату и следующие 30 дней.
|
||
- Суммы до налогов рассчитываются по текущему количеству бумаг на `calculatedAt`; они не учитывают будущие сделки или владение на дату реестра.
|
||
- Список не имеет фильтров, пагинации, конвертации валют и общего итога.
|
||
- Поддерживаются только известные события по доступным позициям: дивиденды по акциям из T-Bank `GetDividends` (дата фиксации реестра `record_date`, сумма `dividend_net` на бумагу; отменённые выплаты `Cancelled` не попадают в прогноз), а также купоны, полное погашение и оферты облигаций из MOEX `bondization`. Будущее частичное погашение и амортизация не синтезируются без надёжного расписания.
|
||
- Ошибка T-Bank или MOEX возвращает `503` без частичного списка. Инструмент без поддерживаемых данных не создаёт строку «нет данных».
|