Files
ksv741 6efb989ed9
Conventional commits / commits (pull_request) Successful in 13s
Specs security / security (pull_request) Successful in 8s
Specs verify / verify (pull_request) Successful in 12s
spec: archive three completed changes (main#33, frontend#63, screener)
2026-10-14 21:40:26 +03:00

8.8 KiB
Raw Blame History

MODIFIED Requirements

Requirement: Account page presents an upcoming events list

Страница Brokerage Account MUST предоставлять read-only действие перехода на отдельную страницу «Будущие события». Эта страница MUST показывать события сохранённого полного прогноза компактным списком без фильтров, пагинации, суммарного итога или действия ручной синхронизации, с датой, типом, инструментом и прогнозной суммой в исходной валюте, если она известна. Купоны и дивиденды MUST использовать то же представление выплаты, что и исполненные купоны, дивиденды и события графика инструмента, но MUST быть явно обозначены как прогноз, а не полученные деньги. Дата дивиденда MUST быть обозначена как дата реестра. Страница MUST показывать calculatedAt, исходное окно прогноза и наблюдаемые freshness, полноту, время последнего успешного прогноза, последнюю часовую попытку и доступность из meta понятным текстом или иконкой с доступным именем, а не только цветом. Она MUST объяснять, что прогноз рассчитан по количеству бумаг на calculatedAt, а показанные события дополнительно ограничены запрошенным включительным UTC-окном; прогноз указан до налогов и может быть неполным из-за доступности данных источника. Открытие страницы и повтор HTTP-чтения MUST NOT запускать личную синхронизацию.

Scenario: Просмотр ближайших событий

  • WHEN User открывает «Будущие события» из обзора Brokerage Account
  • THEN он видит отсортированный read-only список событий сохранённого 30-календарного окна и calculatedAt, где купоны и дивиденды представлены как прогнозные выплаты, а offer обозначен без суммы

Scenario: Прогнозный дивиденд с неизвестной суммой

  • WHEN прогноз содержит дивиденд с известной датой реестра, но без суммы
  • THEN его карточка обозначает дату как дату реестра и сумму как неизвестную, не показывает нулевую или полученную выплату

Scenario: Пустое состояние страницы

  • WHEN запрос будущих событий успешно возвращает пустой список
  • THEN страница сообщает, что в сохранённом окне прогноза событий не найдено, показывает calculatedAt и объясняет ограничения покрытия источника

Scenario: Первая загрузка либо ошибка без сохранённого прогноза

  • WHEN запрос будущих событий возвращает data: null, а meta обозначает выполнение первой загрузки либо её неуспех
  • THEN страница показывает доступное состояние загрузки либо ошибки без частичного списка и предоставляет при ошибке действие повторить только HTTP-чтение

Scenario: Ошибка страницы

  • WHEN запрос будущих событий завершается ошибкой
  • THEN страница не показывает частичный список и предоставляет действие повторить только HTTP-чтение

Scenario: Ошибка обновления при сохранённом прогнозе на странице

  • WHEN запрос будущих событий возвращает последний полный прогноз вместе с ошибкой его обновления
  • THEN страница показывает этот прогноз с его исходными calculatedAt и окном, отдельно сообщает об ошибке обновления и предоставляет действие повторить только HTTP-чтение

Requirement: Account overview includes upcoming events

Обзор Brokerage Account MUST показывать не более пяти ближайших Future Cash Event сохранённого полного прогноза в применённом запрошенном окне, его calculatedAt, исходное окно, наблюдаемую freshness, полноту, последнюю часовую попытку и доступность из meta, а также действие перехода на read-only полную страницу «Будущие события». Купоны и дивиденды MUST быть представлены той же карточкой выплаты, что на полной странице событий и остальных экранах, с явным обозначением прогнозного статуса; погашение и оферта сохраняют своё значение. Статус MUST быть понятен текстом или иконкой с доступным именем, а не только цветом. Неуспешное обновление при сохранённом прогнозе MUST оставаться локальным состоянием блока, сохранять показанные события и их исходное окно и MUST NOT заменять успешно отображённый Portfolio. Если полного прогноза нет, неуспешное обновление MUST оставаться локальным состоянием блока без частичного списка. Обзор MUST NOT предоставлять действие ручной синхронизации; его повтор MUST выполнять только HTTP-чтение.

Scenario: Отображение ближайших событий

  • WHEN обзор счёта успешно загружен и сохранённый прогноз содержит будущие события
  • THEN обзор показывает первые пять событий в порядке даты, calculatedAt и действие перехода к полной странице, используя единое представление для прогнозных купонов и дивидендов

Scenario: Ближайшие события недоступны без сохранённого прогноза

  • WHEN обзор счёта успешно загружен, а события возвращают data: null и meta обозначает выполнение первой загрузки либо её неуспех
  • THEN Portfolio остаётся доступным, а блок будущих событий отображает собственное доступное состояние загрузки либо ошибки без частичного списка

Scenario: Ближайшие события недоступны

  • WHEN обзор счёта успешно загружен, но запрос будущих событий завершается ошибкой
  • THEN Portfolio остаётся доступным, а блок будущих событий отображает собственную ошибку

Scenario: Неуспешное обновление не скрывает сохранённый прогноз

  • WHEN обзор счёта получает сохранённый полный прогноз вместе с ошибкой его обновления
  • THEN Portfolio и события сохранённого окна остаются доступными, а блок отдельно обозначает ошибку и предлагает повторить только HTTP-чтение