7.2 KiB
Raw Permalink 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-контракт. (Done: quality-gate фича исправила OpenAPI, types.ts сгенерирован через 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.
  • Разделить денежные и неденежные события на уровне представления. (Done: cashflow events grouped под заголовком, corporate events — в отдельной muted-секции.)

8. Frontend tests

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

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

  • Обновить опубликованную backend documentation по broker endpoints. (Done: caching.md обновлён — добавлен CACHE_TBANK_EVENTS_TTL в таблицу и key prefixes.)
  • Прогнать 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, если менялась опубликованная документация. (Done: caching.md обновлён, docs build проверен.)
  • Отметить 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 пакетов.