109 lines
7.2 KiB
Markdown
Raw Permalink 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); доработка UX и смешанного календаря завершена
Связанные документы:
- [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.
- [x] Обновить generated frontend API types, если меняется опубликованный Swagger-контракт.
(Done: quality-gate фича исправила OpenAPI, types.ts сгенерирован через codegen, все типы
событий брокера присутствуют.)
## 6. Интерфейс overview
- [x] Добавить overview-виджет ближайших событий для выбранного счёта.
- [x] Показать не более 5 ближайших событий.
- [x] Добавить ссылку на полную вкладку `События`.
- [x] Реализовать loading, empty и local error state без поломки overview.
## 7. Вкладка `События`
- [x] Добавить новый раздел `События` в `BrokerAccountLayout`.
- [x] Добавить маршрут `/broker/:accountId/events`.
- [x] Реализовать выбор диапазона дат.
- [x] Добавить два TextField[type=date] из дизайн-системы на страницу событий.
- [x] Синхронизировать from/to с URL-параметрами (useSearchParams).
- [x] dayjs для валидации, форматирования и дефолтов (todaytoday+7d).
- [x] Валидация to >= from с показом ошибки под полем.
- [x] Реализовать summary по выбранному периоду.
- [x] Реализовать список событий с признаком `estimate`.
- [x] Разделить денежные и неденежные события на уровне представления.
(Done: cashflow events grouped под заголовком, corporate events — в отдельной muted-секции.)
## 8. Frontend tests
- [x] Покрыть hook событий тестами query lifecycle.
- [x] Покрыть overview-виджет сценариями loading, empty, error и success.
- [x] Покрыть страницу `События` сменой диапазона, отображением summary и пустым состоянием.
- [x] Проверить наличие новой вкладки в навигации счёта.
## 9. Документация и quality gates
- [x] Обновить опубликованную backend documentation по broker endpoints.
(Done: `caching.md` обновлён — добавлен CACHE_TBANK_EVENTS_TTL в таблицу и key prefixes.)
- [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).
- [x] Прогнать docs build, если менялась опубликованная документация.
(Done: `caching.md` обновлён, docs build проверен.)
- [x] Отметить roadmap и связанные SDD-статусы.
## 10. Follow-up: UX фильтров и прошедшие события
- [x] Согласовать UX-дизайн доработки с пользователем.
- [x] Создать feature branch `codex/broker-events-calendar-ux`.
- [x] Обновить `spec.md` под смешанный календарь факта и прогноза.
- [x] Обновить `plan.md` под backend/frontend реализацию доработки.
- [x] Прогнать baseline tests перед реализацией.
- [x] Расширить backend query параметром `types`.
- [x] Расширить backend response полями `source`, `actualAmount`, nullable `estimateMode` и раздельным
summary.
- [x] Добавить фактические прошедшие события из операций T-Bank.
- [x] Добавить фильтрацию нескольких типов событий.
- [x] Покрыть backend tests для `types`, actual events, summary и controller forwarding.
- [x] Обновить frontend response/query types.
- [x] Перевести страницу `События` на applied filters + draft filters + кнопку `Показать`.
- [x] Добавить multi-select типов событий.
- [x] Отобразить `Факт`/`Прогноз`, `Поступило` и зелёное выделение фактических выплат.
- [x] Покрыть frontend tests для нового UX и actual events.
- [x] Прогнать финальные проверки затронутых backend/frontend пакетов.