86 lines
7.5 KiB
Markdown
86 lines
7.5 KiB
Markdown
## MODIFIED Requirements
|
|
|
|
### Requirement: Временные сбои чтения восстанавливаются автоматически
|
|
|
|
Frontend SHALL автоматически повторять временно неуспешное чтение и
|
|
восстанавливать получение необходимых текущему экрану данных без ручного
|
|
обновления. Повторы одной попытки MUST иметь конечный предел и паузы,
|
|
исключающие непрерывную череду запросов. При исчерпании предела доступные данные
|
|
SHALL сохраняться, а при их отсутствии SHALL показываться локальная
|
|
недоступность. Возвращение сети, возвращение пользователя к открытому экрану и
|
|
повторное открытие экрана MUST возобновлять получение отсутствующих или
|
|
требующих обновления данных без перезагрузки страницы. Свежий полный результат
|
|
MUST NOT требовать обращения к источнику только из-за такого события.
|
|
|
|
Наблюдая выполняющуюся экранную синхронизацию, frontend MUST проверять её
|
|
состояние и повторно читать связанные ресурсы не чаще одного раза за пять
|
|
секунд. После получения terminal state этой синхронизации frontend MUST сразу
|
|
наблюдать ресурсы текущего экрана, не ожидая следующего пятиисекундного
|
|
интервала.
|
|
|
|
Восстановление MUST учитывать сбой чтения результата и сбой самого получения
|
|
данных из источника, даже если чтение состояния завершилось успешно. Наблюдение
|
|
уже выполняющейся работы MUST NOT запускать её повторно. Уход с экрана MUST
|
|
прекращать новые попытки его восстановления; это не требует отменять уже
|
|
начатую работу источника. Автоматическое восстановление MUST NOT повторять
|
|
запросы, требующие исправления ввода, входа или восстановления доступа, и MUST
|
|
NOT переносить старые параметры в новую пользовательскую выборку.
|
|
|
|
#### Scenario: Кратковременный сбой чтения
|
|
- **WHEN** чтение текущей выборки временно не удалось, а следующая разрешённая
|
|
автоматическая попытка успешна
|
|
- **THEN** экран самостоятельно показывает результат без ручного действия и без
|
|
сообщения о сбое или восстановлении
|
|
|
|
#### Scenario: Экранная синхронизация продолжается
|
|
- **WHEN** экран наблюдает синхронизацию, которая остаётся в состоянии running
|
|
после очередной проверки
|
|
- **THEN** frontend выполняет следующую проверку состояния и наблюдение
|
|
связанных ресурсов не ранее чем через пять секунд
|
|
|
|
#### Scenario: Экранная синхронизация завершилась
|
|
- **WHEN** очередная проверка экранной синхронизации возвращает terminal state
|
|
- **THEN** frontend сразу наблюдает связанные ресурсы текущего экрана, чтобы
|
|
показать итоговый результат без ожидания следующего интервала
|
|
|
|
#### Scenario: Источник завершил работу ошибкой
|
|
- **WHEN** чтение сохранённых данных успешно, но получение необходимых новых
|
|
данных из источника временно не удалось
|
|
- **THEN** приложение применяет ограниченное автоматическое восстановление к
|
|
неуспешной работе, а не считает успешное чтение доказательством её успеха
|
|
|
|
#### Scenario: Повторы исчерпаны
|
|
- **WHEN** временная недоступность сохраняется после конечного предела
|
|
автоматических попыток
|
|
- **THEN** приложение прекращает серию повторов, сохраняет доступный результат
|
|
либо локальную недоступность без бесконечной загрузки и ожидает следующего
|
|
события восстановления
|
|
|
|
#### Scenario: Сеть или пользователь вернулись
|
|
- **WHEN** после временного сбоя восстановилась сеть либо пользователь вернулся
|
|
к экрану с отсутствующим или требующим обновления результатом
|
|
- **THEN** получение данных возобновляется автоматически для текущей выборки и
|
|
при успехе заменяет состояние недоступности содержимым
|
|
|
|
#### Scenario: Несколько событий восстановления совпали
|
|
- **WHEN** сеть восстановилась одновременно с возвращением пользователя на экран
|
|
- **THEN** приложение не запускает дублирующую работу получения одного набора
|
|
данных
|
|
|
|
#### Scenario: Работа источника ещё выполняется
|
|
- **WHEN** приложение восстанавливает чтение состояния уже выполняющейся работы
|
|
- **THEN** оно продолжает получение её результата без повторного запуска той же
|
|
работы
|
|
|
|
#### Scenario: Пользователь покинул экран
|
|
- **WHEN** пользователь ушёл со страницы с ожидающим восстановлением
|
|
- **THEN** новые попытки для покинутого экрана прекращаются, а уже начатая работа
|
|
не изменяет содержимое другой выборки
|
|
|
|
#### Scenario: Ошибка требует действия пользователя
|
|
- **WHEN** подтверждены недействительное подключение, отсутствие доступа или
|
|
некорректный ввод
|
|
- **THEN** автоматическая серия повторов прекращается и появляется
|
|
соответствующее действие или локальная ошибка без технической кнопки повторной
|
|
загрузки
|