docs(events): describe date range filtering
This commit is contained in:
@@ -14,13 +14,15 @@ sequenceDiagram
|
|||||||
B->>T: GetAccounts и GetPortfolio
|
B->>T: GetAccounts и GetPortfolio
|
||||||
B->>T: GetDividends (дивиденты по акциям)
|
B->>T: GetDividends (дивиденты по акциям)
|
||||||
B->>M: Получает события облигаций
|
B->>M: Получает события облигаций
|
||||||
B-->>F: Прогноз на 30 дней
|
B-->>F: Прогноз за выбранный период (по умолчанию 30 дней)
|
||||||
F-->>U: Компактный список событий
|
F-->>U: Компактный список событий
|
||||||
```
|
```
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
|
||||||
`GET /api/v1/brokerage-accounts/:accountId/events` требует Bearer access token. Ответ содержит `accountId`, `calculatedAt` и отсортированный по календарной дате список `events`.
|
`GET /api/v1/brokerage-accounts/:accountId/events` требует Bearer access token. Необязательные query-параметры `from` и `to` принимают календарные даты `YYYY-MM-DD`, обе границы включены. Без `from` начало — сегодня в UTC; без `to` конец — через 30 дней после начала. Неверный формат или несуществующая дата возвращают `400`; обратный диапазон — `400` / `INVALID_EVENTS_PERIOD`. Эти же параметры поддерживает `/api/v1/brokerage-accounts/all/events`.
|
||||||
|
|
||||||
|
Ответ содержит `accountId`, `calculatedAt` и отсортированный по календарной дате список `events`.
|
||||||
|
|
||||||
Событие содержит `type` (`coupon`, `dividend`, `maturity`, `offer`), `date`, `dateKind`, идентификаторы и название Instrument, а также nullable `projectedAmount` как Money `{ currency, value }`. Для `offer` и неизвестных денежных условий сумма не создаётся искусственно и передаётся `null`. Дивиденд передаёт `dateKind: registry`: это дата закрытия реестра, а не гарантированная дата зачисления.
|
Событие содержит `type` (`coupon`, `dividend`, `maturity`, `offer`), `date`, `dateKind`, идентификаторы и название Instrument, а также nullable `projectedAmount` как Money `{ currency, value }`. Для `offer` и неизвестных денежных условий сумма не создаётся искусственно и передаётся `null`. Дивиденд передаёт `dateKind: registry`: это дата закрытия реестра, а не гарантированная дата зачисления.
|
||||||
|
|
||||||
@@ -28,16 +30,15 @@ sequenceDiagram
|
|||||||
|
|
||||||
При первом открытии полного списка frontend показывает structural skeleton
|
При первом открытии полного списка frontend показывает structural skeleton
|
||||||
заголовка и event rows вместо отдельного spinner. Placeholder не представляет
|
заголовка и event rows вместо отдельного spinner. Placeholder не представляет
|
||||||
данные и не является интерактивным; error и empty outcomes остаются отдельными
|
данные и не является интерактивным; при пустом результате фильтр остаётся доступным для изменения периода.
|
||||||
состояниями после завершения запроса.
|
|
||||||
|
|
||||||
Page VM владеет account route input, authenticated entity query, выбором
|
Page VM владеет account route input, authenticated entity query, выбором
|
||||||
loading/error/empty/loaded и retry. Container вызывает один VM и передаёт
|
loading/error/loaded, пустого результата и retry. Container вызывает один VM и передаёт
|
||||||
данные существующим state views. Query без account ID остаётся отключённым;
|
данные существующим state views. Query без account ID остаётся отключённым;
|
||||||
выделение VM не меняет порядок выбора состояний или поведение фонового refetch.
|
выделение VM не меняет порядок выбора состояний или поведение фонового refetch.
|
||||||
|
|
||||||
- Период включает текущую календарную дату и следующие 30 дней.
|
- По умолчанию период включает текущую календарную дату и следующие 30 дней. Полный список позволяет выбрать другой период полями «С» и «По», как в операциях: «Применить» сохраняет даты в URL и запрашивает события, «Сбросить» возвращает период по умолчанию. Обзор счёта сохраняет прогноз на 30 дней.
|
||||||
- Суммы до налогов рассчитываются по текущему количеству бумаг на `calculatedAt`; они не учитывают будущие сделки или владение на дату реестра.
|
- Суммы до налогов рассчитываются по текущему количеству бумаг на `calculatedAt`; они не учитывают будущие сделки или владение на дату реестра.
|
||||||
- Список не имеет фильтров, пагинации, конвертации валют и общего итога.
|
- Фильтр дат применяется на сервере до сортировки и подсчёта `incomeTotalsByCurrency` (купоны и дивиденды). Запрос дивидендов и ключ его кэша учитывают выбранный период. Список не имеет пагинации и конвертации валют.
|
||||||
- Поддерживаются только известные события по доступным позициям: дивиденды по акциям из T-Bank `GetDividends` (дата фиксации реестра `record_date`, сумма `dividend_net` на бумагу; отменённые выплаты `Cancelled` не попадают в прогноз), а также купоны, полное погашение и оферты облигаций из MOEX `bondization`. Будущее частичное погашение и амортизация не синтезируются без надёжного расписания.
|
- Поддерживаются только известные события по доступным позициям: дивиденды по акциям из T-Bank `GetDividends` (дата фиксации реестра `record_date`, сумма `dividend_net` на бумагу; отменённые выплаты `Cancelled` не попадают в прогноз), а также купоны, полное погашение и оферты облигаций из MOEX `bondization`. Будущее частичное погашение и амортизация не синтезируются без надёжного расписания.
|
||||||
- Ошибка T-Bank или MOEX возвращает `503` без частичного списка. Инструмент без поддерживаемых данных не создаёт строку «нет данных».
|
- Ошибка T-Bank или MOEX возвращает `503` без частичного списка. Инструмент без поддерживаемых данных не создаёт строку «нет данных».
|
||||||
|
|||||||
Reference in New Issue
Block a user