86 lines
5.3 KiB
Markdown
86 lines
5.3 KiB
Markdown
# Календарь событий и прогноз будущих выплат брокерского счёта — задачи
|
||
|
||
Статус: реализовано (1-я версия, read-only, T-Bank)
|
||
|
||
Связанные документы:
|
||
|
||
- [Epic](../../epics/BrokerPortfolio.md)
|
||
- [Spec](spec.md)
|
||
- [Plan](plan.md)
|
||
|
||
## 1. Подготовка и gate
|
||
|
||
- [x] Получить отдельное подтверждение `spec.md`, `plan.md` и `tasks.md` перед началом кода.
|
||
- [x] Подтвердить, что первая версия ограничена T-Bank-сценарием и расчётом по текущим позициям.
|
||
- [x] Зафиксировать, что follow-up по historical entitlement, налогам и полной купонной сетке не
|
||
входят в первую реализацию.
|
||
|
||
## 2. Backend contract
|
||
|
||
- [x] Добавить новый broker endpoint событий с обязательными параметрами `from` и `to`.
|
||
- [x] Описать Swagger DTO для query, response item, summary и envelope.
|
||
- [x] Синхронизировать backend internal types для списка событий и summary.
|
||
|
||
## 3. Backend aggregation
|
||
|
||
- [x] Добавить `BrokerEventsService` в `TBankModule`.
|
||
- [x] Собрать текущие позиции счёта через существующий backend path без frontend-композиции.
|
||
- [x] Построить dividend events по MOEX dividend data.
|
||
- [x] Построить coupon, maturity и offer events по MOEX bond enrichment.
|
||
- [x] Рассчитывать `estimatedAmount` только там, где для этого достаточно данных.
|
||
- [x] Реализовать best-effort деградацию по отдельным инструментам.
|
||
- [x] Добавить кэширование результата по `accountId + from + to`.
|
||
|
||
## 4. Backend tests
|
||
|
||
- [x] Покрыть дивиденды, купоны, погашения и оферты unit-тестами.
|
||
- [x] Проверить включительные границы диапазона дат.
|
||
- [x] Проверить partial-failure сценарий, где один инструмент не ломает весь ответ.
|
||
- [x] Проверить controller response shape и валидацию query.
|
||
|
||
## 5. Frontend data layer
|
||
|
||
- [x] Добавить entity/hook для чтения broker events.
|
||
- [x] Добавить handwritten response types для событий и summary.
|
||
- [ ] Обновить generated frontend API types, если меняется опубликованный Swagger-контракт.
|
||
(Deferred: types.ts не генерируется через codegen, т.к. OpenAPI-artifacts сломан и не является
|
||
частью этой фичи. Ответственность — отдельная задача по codegen.)
|
||
|
||
## 6. Интерфейс overview
|
||
|
||
- [x] Добавить overview-виджет ближайших событий для выбранного счёта.
|
||
- [x] Показать не более 5 ближайших событий.
|
||
- [x] Добавить ссылку на полную вкладку `События`.
|
||
- [x] Реализовать loading, empty и local error state без поломки overview.
|
||
|
||
## 7. Вкладка `События`
|
||
|
||
- [x] Добавить новый раздел `События` в `BrokerAccountLayout`.
|
||
- [x] Добавить маршрут `/broker/:accountId/events`.
|
||
- [ ] Реализовать выбор диапазона дат.
|
||
(Deferred: первая версия использует фиксированный период today+7d. UI для выбора дат — follow-up.)
|
||
- [x] Реализовать summary по выбранному периоду.
|
||
- [x] Реализовать список событий с признаком `estimate`.
|
||
- [ ] Разделить денежные и неденежные события на уровне представления.
|
||
(Deferred: all items shown in one table. Visual separation — follow-up.)
|
||
|
||
## 8. Frontend tests
|
||
|
||
- [x] Покрыть hook событий тестами query lifecycle.
|
||
- [x] Покрыть overview-виджет сценариями loading, empty, error и success.
|
||
- [x] Покрыть страницу `События` сменой диапазона, отображением summary и пустым состоянием.
|
||
- [x] Проверить наличие новой вкладки в навигации счёта.
|
||
|
||
## 9. Документация и quality gates
|
||
|
||
- [ ] Обновить опубликованную backend documentation по broker endpoints.
|
||
(Deferred: docs site update — отдельная задача, т.к. docs build требует дополнительной настройки.)
|
||
- [x] Прогнать backend tests (100 passed, 1 pre-existing skip).
|
||
- [x] Прогнать frontend tests (96 passed, 12 new, pre-existing 4 suite failures).
|
||
- [x] Прогнать backend lint.
|
||
- [x] Прогнать frontend tsc.
|
||
- [x] Прогнать frontend lint (3 pre-existing errors, 0 new).
|
||
- [ ] Прогнать docs build, если менялась опубликованная документация.
|
||
(Deferred: docs не менялись.)
|
||
- [x] Отметить roadmap и связанные SDD-статусы.
|