12 KiB
MODIFIED Requirements
Requirement: Account page presents an upcoming events list
Страница Brokerage Account MUST предоставлять действие перехода на отдельную страницу «Будущие события». Эта страница MUST показывать все полученные события компактным списком без фильтров, пагинации и суммарного итога списка, с датой, типом, инструментом и прогнозной суммой в исходной валюте, если она известна. Прогнозный итог визуальной группы режима «Все счета» не является суммарным итогом списка. Страница MUST объяснять, что прогноз основан на позиции счёта, указан до налогов и может быть неполным из-за доступности данных источника. Это предметное ограничение прогноза MUST NOT превращаться в отчёт о технической синхронизации.
При временном сбое обновления страница MUST сохранять ранее доступный результат
той же выборки с его исходными calculatedAt и окном, без индикации
собственного чтения и ручного повтора. Состояние источника из meta, включая
неуспех последней часовой попытки и неполноту, MUST представляться по
frontend-data-resilience. При отсутствии результата SHALL показываться
первичное ожидание либо нейтральная недоступность с автоматическим
восстановлением по frontend-data-resilience. Подтверждённая потеря доступа
MUST скрывать личные данные независимо от наличия сохранённого результата.
Scenario: Просмотр ближайших событий
- WHEN User открывает «Будущие события» из обзора Brokerage Account
- THEN он видит отсортированный список событий ближайших 30 дней, где offer обозначен без суммы
Scenario: Пустое состояние страницы
- WHEN запрос будущих событий успешно возвращает полный пустой список
- THEN страница сообщает, что на ближайшие 30 дней событий не найдено, и объясняет предметные ограничения покрытия источника
Scenario: Ошибка страницы
- WHEN запрос будущих событий завершается временной ошибкой
- THEN страница сохраняет доступный результат той же выборки либо показывает нейтральную недоступность без ручного повтора, восстанавливая чтение автоматически и не выдавая частичные данные за полный прогноз
Scenario: Прогнозный дивиденд с неизвестной суммой
- WHEN прогноз содержит дивиденд с известной датой реестра, но без суммы
- THEN его карточка обозначает дату как дату реестра и сумму как неизвестную, не показывает нулевую или полученную выплату
Scenario: Ошибка обновления при сохранённом прогнозе на странице
- WHEN запрос будущих событий возвращает последний полный прогноз вместе с ошибкой его обновления
- THEN страница показывает этот прогноз с его исходными
calculatedAtи окном и отдельно обозначает неуспех обновления источника, не предлагая ручной повтор
Scenario: Первая загрузка либо ошибка без сохранённого прогноза
- WHEN запрос будущих событий возвращает
data: null, аmetaобозначает выполнение первой загрузки либо её неуспех - THEN страница показывает доступное состояние первичного ожидания либо нейтральной недоступности без частичного списка и восстанавливает чтение автоматически
ADDED Requirements
Requirement: All-accounts upcoming events group same-day events of one instrument
В режиме «Все счета» страница «Будущие события» и ближайшие события обзора MUST объединять в визуальную группу два и более показанных Future Cash Event с одинаковыми датой и видом даты (как на экране), identity Instrument и типом события, даже если они на одном счёте. События без Instrument или без пары MUST показываться как раньше. В режиме одного Brokerage Account группировка MUST NOT применяться.
Scenario: Прогноз купонов одной облигации на двух счетах
- WHEN в режиме «Все счета» на одну дату ожидается купон по облигации на брокерском счёте 200 RUB и купон по той же облигации на ИИС 100 RUB
- THEN они показаны одной группой с облигацией, типом «Купон» и прогнозным итогом 300 RUB, а под заголовком видны строки «брокерский счёт 200 RUB» и «ИИС 100 RUB»
Scenario: Разные типы или даты не объединяются
- WHEN в режиме «Все счета» по одной облигации ожидаются купон и погашение на одну дату либо купоны на разные даты
- THEN ни одна группа не содержит события разных типов или разных дат
Scenario: Событие без Instrument
- WHEN в режиме «Все счета» на одну дату показаны два события одного типа без identity Instrument
- THEN они показаны отдельными строками без группы
Scenario: Режим одного счёта не меняется
- WHEN User открывает «Будущие события» одного Brokerage Account
- THEN события показаны отдельными строками без группы, как до изменения
Requirement: All-accounts upcoming event group shows each event and a forecast total
Заголовок группы событий MUST показывать дату (для дивиденда — как дату реестра, если она такая), Instrument, тип и прогнозный итог. Под ним MUST всегда быть видна, без раскрытия, отдельная строка каждого события со счётом и прогнозной суммой (или пометкой о неизвестной сумме). Итог SHALL быть точной суммой со знаком по каждой валюте без конвертации и округления. Итог MUST NOT показываться, если у события группы нет суммы или полнота прогноза не подтверждена.
Scenario: Событие с неизвестной суммой в группе
- WHEN в режиме «Все счета» группа содержит дивиденд на одном счёте с известной суммой и дивиденд по той же бумаге на ту же дату на другом счёте без суммы
- THEN заголовок группы не показывает итог, а строка второго счёта обозначает сумму как неизвестную
Scenario: Оферта без сумм
- WHEN в режиме «Все счета» на одну дату ожидается оферта по одной облигации на двух счетах
- THEN они показаны одной группой без итога, и каждая строка показывает свой счёт
Scenario: Прогнозный итог по нескольким валютам
- WHEN группа содержит дивиденд 10 USD на одном счёте и дивиденд 200 RUB по той же бумаге на ту же дату на другом счёте
- THEN заголовок показывает отдельные прогнозные итоги 10 USD и 200 RUB без конвертации
Scenario: Прогнозный итог скрыт при неполном прогнозе
- WHEN в режиме «Все счета» прогноз обозначен неполным, и на странице есть группа событий с известными суммами
- THEN заголовок группы не показывает итог, а строки событий остаются видны со своими суммами
Scenario: Группа дивидендов по дате реестра
- WHEN группа содержит дивиденды, датированные датой реестра
- THEN заголовок обозначает дату как дату реестра
Requirement: All-accounts upcoming event grouping preserves order and limits
Группа событий MUST занимать позицию своего первого события в порядке ответа; события внутри группы и остальные строки MUST сохранять относительный порядок ответа. Группировка MUST NOT менять состав, окно, порядок по дате или лимит обзора, который считается по событиям; группы собираются только из показанных событий.
Scenario: Группировка в ближайших событиях обзора
- WHEN в режиме «Все счета» среди пяти ближайших событий есть два события с одинаковым ключом
- THEN блок обзора показывает те же пять событий, что и без группировки, два из них одной группой
Scenario: Позиция группы событий
- WHEN порядок ответа содержит события A, B, C, где A и C образуют группу, а B не входит ни в одну группу
- THEN список показывает группу (A, C) на месте A, затем B