ADR 021 фиксирует решение о тихом чтении и видимом состоянии источника; ui-resilience и затронутые domains приведены к AS-IS.
5.9 KiB
021. Тихое чтение и редкие подтверждения
Status: Accepted. Заменяет manual-refresh часть ADR 019 на стороне интерфейса и уточняет клиентскую часть ADR 007. Не меняет владельцев обновления и границы чтения из ADR 019.
Context
Экраны просмотра перекладывали на пользователя контроль над получением данных: кнопки «Обновить» и «Повторить», индикатор фонового обновления и сообщение о неудачной синхронизации повторялись в разных разделах. Пользователь приходит смотреть финансы, а не обслуживать загрузку; восстановление после временного сбоя не должно зависеть от нажатия кнопки.
При этом состояние самих данных остаётся значимым: время последнего успешного результата источника, устаревание и исход часовой попытки влияют на доверие к показанным суммам и не могут быть просто скрыты.
Decision
- Автоматическое чтение клиента не сообщает о себе. Экраны просмотра не показывают кнопок ручного обновления и повтора, индикаторов фонового перечитывания и технических предупреждений о собственном запросе.
- Временные сбои GET восстанавливаются сами: ограниченный срок ожидания запроса и не более двух повторов с возрастающими паузами, затем возврат к штатной работе при появлении результата. Пользователь не инициирует восстановление.
- Состояние источника из
metaостаётся видимым. Время последнего успешного результата, признак устаревания, исход последней часовой попытки и неполнота показываются текстом либо доступно именованным элементом, а не только цветом. Это свойство данных, а не отчёт о техническом процессе, и оно не превращается в действие пользователя. - Доступный результат сохраняется при обновлении и временной ошибке. Неполнота и подтверждённая пустота остаются различимыми: неизвестная сумма не становится нулём, незавершённый расчёт не выдаётся за окончательный, незагруженный список не выдаётся за отсутствие записей.
- Первичное ожидание ограничено по времени и показывает структуру будущего содержимого. По его истечении экран переходит в спокойную локальную недоступность вместо бесконечной загрузки и сам заменяет её содержимым после восстановления. Сбой одного блока не скрывает остальные доступные блоки.
- Ошибки явных действий пользователя сохраняются и остаются видимыми. Решение касается только чтения; отправка формы, изменение данных и сброс фильтра по-прежнему сообщают результат, в том числе неуспешный.
Consequences
Пользователь не может ускорить обновление вручную: нормальным владельцем обновления остаётся часовой обход из ADR 019, и отсутствие кнопки не меняет его срок. Если источник недоступен долго, экран показывает прежние данные с обозначением устаревания, а не приглашение повторить.
Автоматический повтор ограничен: он покрывает короткие сетевые сбои, но не длительную недоступность. Ошибки доступа, домена и отмены не повторяются, mutations не повторяются вовсе.
Состояние источника и состояние клиентского чтения описывают разные вещи и
не подменяют друг друга. Portfolio.isStale сохраняет смысл возраста снимка;
ошибка клиентского перечитывания его не меняет.
Детали поведения — в
ожидании и восстановлении интерфейса
и свежести данных.
Согласованные требования принадлежат workspace-спецификациям
frontend-user-feedback, frontend-data-resilience и
frontend-loading-presentation.