spec: archive quiet-user-feedback and sync canonical specs (#50)
Native archive применил 9 added и 12 modified требований без удалений; все 10 сценариев сохранены. Новый canonical spec frontend-user-feedback внесён в AI_INDEX.
This commit was merged in pull request #52.
This commit is contained in:
+82
@@ -0,0 +1,82 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Realized analytics never presents an incomplete result as complete
|
||||
|
||||
Система MUST формировать итог выбранного периода, его trend buckets,
|
||||
instrument breakdown и drill-down только после успешного получения всех
|
||||
необходимых cursor pages исполненных операций этого периода. Каждое comparison
|
||||
MUST дополнительно требовать полного результата соответствующего периода
|
||||
сравнения. Ошибка любой необходимой страницы MUST NOT возвращать частичные
|
||||
totals, comparisons, buckets или
|
||||
breakdown как полный результат. При временной недоступности клиент MUST
|
||||
сохранять предыдущий полный результат той же выборки либо показывать
|
||||
нейтральную недоступность соответствующего расчёта без технических сообщений
|
||||
и ручного повтора. Восстановление SHALL выполняться автоматически по
|
||||
`frontend-data-resilience`.
|
||||
|
||||
Доступные независимые части MUST оставаться видимыми; неполное сравнение MUST
|
||||
обозначаться как недоступное без нулевой базы и окончательной разницы. Успешный
|
||||
полный период без подходящих выплат MUST возвращать нулевой результат и
|
||||
отображаться с объяснением пустого состояния. Неизвестный результат MUST NOT
|
||||
подменяться таким нулевым результатом.
|
||||
|
||||
#### Scenario: Все страницы операций успешно получены
|
||||
- **WHEN** для расчёта требуется несколько cursor pages и каждая страница успешно получена
|
||||
- **THEN** система формирует результат по всем подходящим Ledger Entries со всех страниц
|
||||
|
||||
#### Scenario: Одна из страниц операций недоступна
|
||||
- **WHEN** получение любой необходимой cursor page завершается временной ошибкой
|
||||
- **THEN** страница сохраняет предыдущий полный результат той же выборки либо показывает нейтральную недоступность расчёта без ручного повтора и не выдаёт частичный результат за полный
|
||||
|
||||
#### Scenario: В периоде нет купонов и дивидендов
|
||||
- **WHEN** все необходимые операции успешно получены, но среди них нет подходящих coupon или dividend Ledger Entries
|
||||
- **THEN** страница показывает нулевой результат и объясняет, что за выбранный период купоны и дивиденды не найдены
|
||||
|
||||
#### Scenario: Основной период готов, сравнение пока нет
|
||||
- **WHEN** выбранный период полностью рассчитан, а необходимый период сравнения ещё не получен
|
||||
- **THEN** основной доход остаётся доступным, сравнение обозначается как недоступное без нулевой базы, частичной разницы и сообщения о синхронизации
|
||||
|
||||
### Requirement: Account overview has an independent current-month income summary
|
||||
|
||||
Обзор выбранного Brokerage Account MUST показывать компактный source-currency
|
||||
summary «Получено купонами и дивидендами» за период от первого дня текущего
|
||||
месяца по Europe/Moscow до сегодняшнего дня включительно и действие перехода
|
||||
на страницу «Пассивный доход». Summary MUST всегда использовать этот current-month
|
||||
период и MUST NOT наследовать последний пользовательский период страницы аналитики.
|
||||
Пустой или неуспешный расчёт MUST оставаться локальным состоянием блока и
|
||||
MUST NOT заменять успешно отображённый Portfolio или другие блоки обзора.
|
||||
Временная ошибка обновления MUST сохранять доступную сводку той же выборки без
|
||||
предупреждения и ручного повтора. При отсутствии результата SHALL показываться
|
||||
нейтральная недоступность после первичного ожидания с автоматическим восстановлением.
|
||||
|
||||
#### Scenario: Обзор показывает доход текущего месяца
|
||||
- **WHEN** обзор Brokerage Account загружен и current-month analytics успешно рассчитана
|
||||
- **THEN** он показывает отдельные source-currency итоги с начала текущего месяца по сегодняшний день и переход к полной аналитике
|
||||
|
||||
#### Scenario: Пользовательский период не влияет на обзор
|
||||
- **WHEN** User ранее применил на странице аналитики период, отличный от текущего месяца
|
||||
- **THEN** summary обзора по-прежнему рассчитывается от первого дня текущего месяца по сегодняшний день
|
||||
|
||||
#### Scenario: Current-month summary недоступен
|
||||
- **WHEN** Portfolio обзора успешно загружен, но расчёт current-month summary завершается временной ошибкой
|
||||
- **THEN** Portfolio и остальные блоки остаются доступными, а summary сохраняет предыдущий результат той же выборки либо показывает нейтральную недоступность без ручного повтора
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Доход обновляется без технических сообщений
|
||||
|
||||
Страница дохода MUST сохранять применённый период, черновик фильтров и
|
||||
доступный результат при фоновом обновлении. Временная ошибка SHALL
|
||||
восстанавливаться автоматически без кнопок обновления и повтора, времени
|
||||
получения данных и уведомлений об их загрузке. Изменение периода MUST NOT
|
||||
подписывать прежний результат новыми датами. Ошибки пользовательского периода
|
||||
MUST оставаться у полей и MUST NOT запускать автоматический повтор ошибочного
|
||||
ввода. Подтверждённая потеря доступа MUST скрывать личные результаты.
|
||||
|
||||
#### Scenario: Доход обновляется при редактировании периода
|
||||
- **WHEN** пользователь редактирует черновик дат, а фоновое обновление применённого периода завершилось
|
||||
- **THEN** черновик и фокус сохраняются, результат относится к прежнему применённому периоду и техническое уведомление не появляется
|
||||
|
||||
#### Scenario: Новый период пока недоступен
|
||||
- **WHEN** пользователь применил другой допустимый период, но его расчёт ещё не получен
|
||||
- **THEN** страница показывает ожидание или недоступность нового результата, не выдаёт прежние суммы за доход нового периода и восстанавливается автоматически
|
||||
Reference in New Issue
Block a user