Sergey Krylov f7dc338719
Some checks failed
CI / ci (pull_request) Failing after 3m9s
CI / ci (push) Failing after 3m9s
feat: add actual payouts and filter-as-draft UX to broker events calendar
- Backend: actual events from T-Bank operations, types filter, split forecast/actual summary
- Frontend: draft/applied filters with multi-select types, status column (Факт/Прогноз), green actual amounts
- Docs: update spec, plan, tasks
2026-06-22 21:48:03 +03:00

7.3 KiB
Raw Blame History

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

Статус: реализовано (1-я версия, read-only, T-Bank); доработка UX и смешанного календаря в работе

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

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-статусы.

10. Follow-up: UX фильтров и прошедшие события

  • Согласовать UX-дизайн доработки с пользователем.
  • Создать feature branch codex/broker-events-calendar-ux.
  • Обновить spec.md под смешанный календарь факта и прогноза.
  • Обновить plan.md под backend/frontend реализацию доработки.
  • Прогнать baseline tests перед реализацией.
  • Расширить backend query параметром types.
  • Расширить backend response полями source, actualAmount, nullable estimateMode и раздельным summary.
  • Добавить фактические прошедшие события из операций T-Bank.
  • Добавить фильтрацию нескольких типов событий.
  • Покрыть backend tests для types, actual events, summary и controller forwarding.
  • Обновить frontend response/query types.
  • Перевести страницу События на applied filters + draft filters + кнопку Показать.
  • Добавить multi-select типов событий.
  • Отобразить Факт/Прогноз, Поступило и зелёное выделение фактических выплат.
  • Покрыть frontend tests для нового UX и actual events.
  • Прогнать финальные проверки затронутых backend/frontend пакетов.