Files
docs/architecture/cross-cutting/ui-resilience.md
T

50 lines
4.0 KiB
Markdown

# Ожидание, ошибки и восстановление интерфейса
Интерфейс различает ожидание данных, известную ошибку запроса и непойманную
ошибку отображения маршрута. Эти состояния требуют разных действий и
не подменяют друг друга.
## Ожидание и доступные данные
При первой загрузке без результата structural skeleton показывает
расположение ожидаемых блоков. При частичной загрузке он занимает только
незагруженную область. Placeholders не содержат правдоподобных финансовых
данных, не становятся действиями и не получают клавиатурный фокус; область
ожидания обозначается как занятая.
При восстановлении сессии SPA показывает нейтральный skeleton каркаса,
пока неизвестно, доступен public или protected маршрут. При загрузке
отложенного маршрута уже доступный каркас остаётся видимым.
Фоновое обновление и действие пользователя сохраняют видимые данные или
элемент управления с компактной индикацией процесса. В частности,
[клиентский снимок](data-freshness.md#клиентский-и-серверный-снимки) счетов или
портфеля остаётся доступным после ошибки refetch; сообщение и повтор
относятся к обновлению, а не к отсутствию инвестиций.
## Известная ошибка сценария
Ошибки счетов, портфеля и подключения T-Bank остаются локальными: рядом
с затронутыми данными доступны предусмотренные сценарием retry и navigation
actions. Устаревший серверный Portfolio Snapshot показывает сохранённый
портфель с предупреждением. Он не превращается в глобальный fallback.
Ошибка источника не означает нулевой баланс или отсутствие операций.
## Непойманная ошибка маршрута
Непойманная runtime-ошибка при отображении public или protected route
заменяет его содержимое нейтральным fallback без технических деталей.
Пользователь может перейти к `/accounts` при активной сессии или к `/login`
без неё. Переход на другой маршрут сбрасывает это состояние; если новый
маршрут отображается успешно, пользователь продолжает работу.
Общий fallback восстанавливает навигацию, но не обещает устранить причину
ошибки. HTTP-коды и безопасная форма серверной ошибки находятся в
[HTTP API](../http-api.md), восстановление сессии — в
[аутентификации](../../domains/authentication/overview.md).
Согласованное поведение раскрыто в workspace-спецификациях
[UI resilience](../../../specs/openspec/specs/frontend-ui-resilience/spec.md),
[loading presentation](../../../specs/openspec/specs/frontend-loading-presentation/spec.md)
и [data resilience](../../../specs/openspec/specs/frontend-data-resilience/spec.md).