5.6 KiB
Raw Blame History

Календарь событий и прогноз будущих выплат брокерского счёта — задачи

Статус: реализовано (1-я версия, read-only, T-Bank)

Связанные документы:

1. Подготовка и gate

  • Получить отдельное подтверждение spec.md, plan.md и tasks.md перед началом кода.
  • Подтвердить, что первая версия ограничена T-Bank-сценарием и расчётом по текущим позициям.
  • Зафиксировать, что follow-up по historical entitlement, налогам и полной купонной сетке не входят в первую реализацию.

2. Backend contract

  • Добавить новый broker endpoint событий с обязательными параметрами from и to.
  • Описать Swagger DTO для query, response item, summary и envelope.
  • Синхронизировать backend internal types для списка событий и summary.

3. Backend aggregation

  • Добавить BrokerEventsService в TBankModule.
  • Собрать текущие позиции счёта через существующий backend path без frontend-композиции.
  • Построить dividend events по MOEX dividend data.
  • Построить coupon, maturity и offer events по MOEX bond enrichment.
  • Рассчитывать estimatedAmount только там, где для этого достаточно данных.
  • Реализовать best-effort деградацию по отдельным инструментам.
  • Добавить кэширование результата по accountId + from + to.

4. Backend tests

  • Покрыть дивиденды, купоны, погашения и оферты unit-тестами.
  • Проверить включительные границы диапазона дат.
  • Проверить partial-failure сценарий, где один инструмент не ломает весь ответ.
  • Проверить controller response shape и валидацию query.

5. Frontend data layer

  • Добавить entity/hook для чтения broker events.
  • Добавить handwritten response types для событий и summary.
  • Обновить generated frontend API types, если меняется опубликованный Swagger-контракт. (Deferred: types.ts не генерируется через codegen, т.к. OpenAPI-artifacts сломан и не является частью этой фичи. Ответственность — отдельная задача по codegen.)

6. Интерфейс overview

  • Добавить overview-виджет ближайших событий для выбранного счёта.
  • Показать не более 5 ближайших событий.
  • Добавить ссылку на полную вкладку События.
  • Реализовать loading, empty и local error state без поломки overview.

7. Вкладка События

  • Добавить новый раздел События в BrokerAccountLayout.
  • Добавить маршрут /broker/:accountId/events.
  • Реализовать выбор диапазона дат.
    • Добавить два TextField[type=date] из дизайн-системы на страницу событий.
    • Синхронизировать from/to с URL-параметрами (useSearchParams).
    • dayjs для валидации, форматирования и дефолтов (todaytoday+7d).
    • Валидация to >= from с показом ошибки под полем.
  • Реализовать summary по выбранному периоду.
  • Реализовать список событий с признаком estimate.
  • Разделить денежные и неденежные события на уровне представления. (Deferred: all items shown in one table. Visual separation — follow-up.)

8. Frontend tests

  • Покрыть hook событий тестами query lifecycle.
  • Покрыть overview-виджет сценариями loading, empty, error и success.
  • Покрыть страницу События сменой диапазона, отображением summary и пустым состоянием.
  • Проверить наличие новой вкладки в навигации счёта.

9. Документация и quality gates

  • Обновить опубликованную backend documentation по broker endpoints. (Deferred: docs site update — отдельная задача, т.к. docs build требует дополнительной настройки.)
  • Прогнать backend tests (100 passed, 1 pre-existing skip).
  • Прогнать frontend tests (96 passed, 12 new, pre-existing 4 suite failures).
  • Прогнать backend lint.
  • Прогнать frontend tsc.
  • Прогнать frontend lint (3 pre-existing errors, 0 new).
  • Прогнать docs build, если менялась опубликованная документация. (Deferred: docs не менялись.)
  • Отметить roadmap и связанные SDD-статусы.