docs(specs): archive api contract resilience remediation

This commit is contained in:
2026-08-24 00:51:06 +03:00
parent 6e20cdffaf
commit 800450d075
8 changed files with 386 additions and 0 deletions
@@ -0,0 +1,36 @@
# frontend-data-resilience Specification
## Purpose
Определяет, когда frontend сохраняет последний успешный ответ на экране и как
сообщает пользователю о неудачном фоновом обновлении без искажения доменных
состояний Portfolio.
## Requirements
### Requirement: Client Cached Snapshot остаётся доступным при обновлении Accounts и Portfolio
Frontend MUST сохранять Client Cached Snapshot списка Brokerage Accounts или
Portfolio на экране, если для этого же набора данных уже был успешно получен
ответ. Начальная загрузка без такого ответа может показывать блокирующее
состояние загрузки. Client Cached Snapshot MUST оставаться видимым во время
фонового обновления и после его ошибки; он не является server-side fallback и MUST NOT
изменять или интерпретировать поле `Portfolio.isStale`.
#### Scenario: Список Brokerage Accounts обновляется в фоне
- **WHEN** экран Accounts уже показывает Client Cached Snapshot и начинается
фоновое обновление того же списка
- **THEN** frontend оставляет список видимым и показывает только
неблокирующий индикатор обновления
#### Scenario: Обновление Portfolio завершается ошибкой после успешного ответа
- **WHEN** экран Brokerage Account уже показывает Client Cached Snapshot
Portfolio, а последующее обновление этого же Portfolio завершается ошибкой
- **THEN** frontend сохраняет Portfolio видимым, показывает локализованное
неблокирующее предупреждение о показе последних полученных данных и
предоставляет повторную попытку обновления
#### Scenario: Server-side fallback и client cached snapshot различаются
- **WHEN** backend возвращает Portfolio с `isStale` либо фоновое обновление
Client Cached Snapshot завершается ошибкой
- **THEN** frontend отображает соответствующее server-side либо client-side
предупреждение независимо, не представляя один вид состояния другим