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