Files
specs/openspec/specs/frontend-data-resilience/spec.md
T
ksv741 329d66e767
Specs security / security (push) Successful in 8s
Specs verify / verify (push) Successful in 11s
spec: finalize wealth-ledger SDD migration
2026-10-09 21:14:22 +03:00

4.1 KiB
Raw Blame History

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 и его исходное время видимыми и отдельно обозначает неуспех попытки