ADR 021 фиксирует решение о тихом чтении и видимом состоянии источника; ui-resilience и затронутые domains приведены к AS-IS.
78 lines
7.1 KiB
Markdown
78 lines
7.1 KiB
Markdown
# Ожидание, ошибки и восстановление интерфейса
|
|
|
|
Интерфейс различает ожидание данных, известную ошибку запроса и непойманную
|
|
ошибку отображения маршрута. Эти состояния требуют разных действий и
|
|
не подменяют друг друга.
|
|
|
|
## Ожидание и доступные данные
|
|
|
|
При первой загрузке без результата structural skeleton показывает
|
|
расположение ожидаемых блоков. При частичной загрузке он занимает только
|
|
незагруженную область. Placeholders не содержат правдоподобных финансовых
|
|
данных, не становятся действиями и не получают клавиатурный фокус; область
|
|
ожидания обозначается как занятая.
|
|
|
|
При восстановлении сессии SPA показывает нейтральный skeleton каркаса,
|
|
пока неизвестно, доступен public или protected маршрут. При загрузке
|
|
отложенного маршрута уже доступный каркас остаётся видимым.
|
|
|
|
Фоновое чтение не сообщает о себе: оно сохраняет видимые данные без индикации
|
|
процесса и без технического предупреждения. В частности,
|
|
[клиентский снимок](data-freshness.md#клиентский-и-серверный-снимки) счетов или
|
|
портфеля остаётся доступным после ошибки refetch, и эта ошибка не означает
|
|
отсутствие инвестиций. Действие пользователя сохраняет видимые данные или
|
|
элемент управления и сообщает свой результат, включая неуспешный.
|
|
|
|
Первичное ожидание ограничено по времени. По его истечении область переходит
|
|
в спокойную локальную недоступность вместо бесконечной загрузки и сама
|
|
заменяет её содержимым после восстановления. Решение принято в
|
|
[ADR 021](../../adr/021-quiet-reading-and-rare-confirmations.md).
|
|
|
|
Серверная полнота не выводится из query lifecycle. Missing показывает
|
|
skeleton только отсутствующих секций, partial — подтверждённые строки и
|
|
сообщение о неполноте. Totals ждут обязательных зависимостей, comparisons
|
|
готовятся независимо. Только complete empty означает отсутствие операций.
|
|
Время источника не заменяется временем получения HTTP-ответа.
|
|
|
|
Экраны просмотра не предлагают ручное обновление или повтор чтения: временные
|
|
сбои GET восстанавливаются сами ограниченным числом повторов, сохраняя
|
|
показанный результат и applied filters. Ошибка transport отличается от
|
|
ошибки source work. Status observation прекращается после terminal outcome
|
|
или ухода; само истечение TTL не запускает импорт. Известный access loss
|
|
очищает personal view, включая защиту от позднего ответа.
|
|
|
|
Состояние источника при этом видимо: время последнего успешного результата,
|
|
устаревание, исход последней часовой попытки и неполнота показаны текстом либо
|
|
доступно именованным элементом рядом с данными, к которым относятся. Это
|
|
свойство данных, а не отчёт о техническом процессе, и оно не требует действия.
|
|
|
|
## Известная ошибка сценария
|
|
|
|
Ошибки счетов, портфеля и подключения T-Bank остаются локальными: затронутый
|
|
блок показывает собственное состояние и не скрывает успешно отображённые
|
|
соседние блоки. Устаревший серверный Portfolio Snapshot показывает сохранённый
|
|
портфель с обозначением устаревания. Он не превращается в глобальный fallback.
|
|
Ошибка источника не означает нулевой баланс или отсутствие операций.
|
|
|
|
Предусмотренные сценарием navigation actions сохраняются: подтверждённая потеря
|
|
доступа предлагает восстановить подключение, а `404` — вернуться к списку
|
|
счетов. Это навигация и явные действия пользователя, а не повтор чтения.
|
|
|
|
## Непойманная ошибка маршрута
|
|
|
|
Непойманная runtime-ошибка при отображении public или protected route
|
|
заменяет его содержимое нейтральным fallback без технических деталей.
|
|
Пользователь может перейти к `/accounts` при активной сессии или к `/login`
|
|
без неё. Переход на другой маршрут сбрасывает это состояние; если новый
|
|
маршрут отображается успешно, пользователь продолжает работу.
|
|
|
|
Общий fallback восстанавливает навигацию, но не обещает устранить причину
|
|
ошибки. HTTP-коды и безопасная форма серверной ошибки находятся в
|
|
[HTTP API](../http-api.md), восстановление сессии — в
|
|
[аутентификации](../../domains/authentication/overview.md).
|
|
|
|
Согласованное поведение раскрыто в workspace-спецификациях
|
|
[UI resilience](https://git.personal.ksv741.ru/WealthLedger/specs/src/commit/9e227a563dda67620f0ad78228aa8a4c18bf35a0/openspec/specs/frontend-ui-resilience/spec.md),
|
|
[loading presentation](https://git.personal.ksv741.ru/WealthLedger/specs/src/commit/9e227a563dda67620f0ad78228aa8a4c18bf35a0/openspec/specs/frontend-loading-presentation/spec.md)
|
|
и [data resilience](https://git.personal.ksv741.ru/WealthLedger/specs/src/commit/9e227a563dda67620f0ad78228aa8a4c18bf35a0/openspec/specs/frontend-data-resilience/spec.md).
|