Files
docs/architecture/cross-cutting/ui-resilience.md
T
ksv741 07de062ebb
Conventional commits / commits (pull_request) Successful in 14s
Docs security / security (pull_request) Successful in 8s
Docs verify / verify (pull_request) Successful in 13s
Docs security / security (push) Successful in 8s
Docs verify / verify (push) Successful in 12s
docs: explain persisted T-Bank reads and synchronization
Document local data ownership, coverage and freshness, refresh behavior, failure
recovery and additive migration rollback. Record ADR 017.
2026-09-26 21:22:50 +03:00

5.4 KiB

Ожидание, ошибки и восстановление интерфейса

Интерфейс различает ожидание данных, известную ошибку запроса и непойманную ошибку отображения маршрута. Эти состояния требуют разных действий и не подменяют друг друга.

Ожидание и доступные данные

При первой загрузке без результата structural skeleton показывает расположение ожидаемых блоков. При частичной загрузке он занимает только незагруженную область. Placeholders не содержат правдоподобных финансовых данных, не становятся действиями и не получают клавиатурный фокус; область ожидания обозначается как занятая.

При восстановлении сессии SPA показывает нейтральный skeleton каркаса, пока неизвестно, доступен public или protected маршрут. При загрузке отложенного маршрута уже доступный каркас остаётся видимым.

Фоновое обновление и действие пользователя сохраняют видимые данные или элемент управления с компактной индикацией процесса. В частности, клиентский снимок счетов или портфеля остаётся доступным после ошибки refetch; сообщение и повтор относятся к обновлению, а не к отсутствию инвестиций.

Серверная полнота не выводится из query lifecycle. Missing показывает skeleton только отсутствующих секций, partial — подтверждённые строки и сообщение о неполноте. Totals ждут обязательных зависимостей, comparisons готовятся независимо. Только complete empty означает отсутствие операций. Время источника не заменяется временем получения HTTP-ответа.

Ручное обновление сохраняет показанный результат и applied filters; кнопка недоступна во время уже запрошенной работы. Ошибка transport отличается от ошибки source work. Status observation прекращается после terminal outcome или ухода; само истечение TTL не запускает импорт. Известный access loss очищает personal view, включая защиту от позднего ответа.

Известная ошибка сценария

Ошибки счетов, портфеля и подключения T-Bank остаются локальными: рядом с затронутыми данными доступны предусмотренные сценарием retry и navigation actions. Устаревший серверный Portfolio Snapshot показывает сохранённый портфель с предупреждением. Он не превращается в глобальный fallback. Ошибка источника не означает нулевой баланс или отсутствие операций.

Непойманная ошибка маршрута

Непойманная runtime-ошибка при отображении public или protected route заменяет его содержимое нейтральным fallback без технических деталей. Пользователь может перейти к /accounts при активной сессии или к /login без неё. Переход на другой маршрут сбрасывает это состояние; если новый маршрут отображается успешно, пользователь продолжает работу.

Общий fallback восстанавливает навигацию, но не обещает устранить причину ошибки. HTTP-коды и безопасная форма серверной ошибки находятся в HTTP API, восстановление сессии — в аутентификации.

Согласованное поведение раскрыто в workspace-спецификациях UI resilience, loading presentation и data resilience.