2026-06-22 06:41:37 +03:00

86 lines
5.3 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.

# Календарь событий и прогноз будущих выплат брокерского счёта — задачи
Статус: реализовано (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-статусы.