4.1 KiB
frontend-data-resilience Specification
Purpose
Определяет, когда frontend сохраняет последний успешный ответ на экране и как сообщает пользователю о неудачном фоновом обновлении без искажения доменных состояний Portfolio.
Requirements
Requirement: Client Cached Snapshot остаётся доступным при обновлении Accounts и Portfolio
Frontend MUST сохранять Client Cached Snapshot списка Brokerage Accounts или Portfolio на экране, если для того же набора данных уже был успешно получен ответ. Начальная загрузка без такого ответа может показывать блокирующее состояние загрузки. Для каждого личного resource response клиент MUST представлять freshness, полноту, время последнего успешного результата, последнюю часовую попытку и доступность из meta текстом либо доступно именованным элементом, а не только цветом; он MUST различать отсутствие попытки, выполнение, полный успех, частичный успех, неуспех, доступный пустой полный результат и отсутствие полного результата. Client Cached Snapshot MUST оставаться видимым во время фонового HTTP-перечитывания и после его ошибки; он не является server-side fallback и MUST NOT изменять или интерпретировать поле Portfolio.isStale. Повторное действие User MUST повторять только HTTP-чтение и MUST NOT запускать личную синхронизацию. Открытый инвестиционный экран MAY периодически перечитывать backend-результат, но MUST NOT создавать импорт T-Bank.
Scenario: Список Brokerage Accounts обновляется в фоне
- WHEN экран Accounts уже показывает Client Cached Snapshot и начинается фоновое HTTP-перечитывание того же списка
- THEN frontend оставляет список видимым и показывает только неблокирующий индикатор перечитывания
Scenario: Обновление Portfolio завершается ошибкой после успешного ответа
- WHEN экран Brokerage Account уже показывает Client Cached Snapshot Portfolio, а последующее HTTP-чтение завершается ошибкой
- THEN frontend сохраняет Portfolio видимым, показывает локализованное неблокирующее предупреждение и предоставляет повтор только HTTP-чтения
Scenario: Server-side fallback и client cached snapshot различаются
- WHEN backend возвращает Portfolio с
isStaleлибо HTTP-перечитывание Client Cached Snapshot завершается ошибкой - THEN frontend отображает соответствующее server-side либо client-side предупреждение независимо, не представляя одно состояние другим
Scenario: Resource сохраняется после неуспешной часовой попытки
- WHEN response содержит полный
dataиmeta, обозначающий неуспех последней часовой попытки - THEN frontend сохраняет
dataи его исходное время видимыми и отдельно обозначает неуспех попытки