spec: add reduce-screen-sync-polling change
Specs security / security (push) Successful in 8s
Specs verify / verify (push) Successful in 10s
Conventional commits / commits (pull_request) Successful in 15s
Specs security / security (pull_request) Successful in 11s
Specs verify / verify (pull_request) Successful in 10s
Specs security / security (push) Successful in 8s
Specs verify / verify (push) Successful in 10s
Conventional commits / commits (pull_request) Successful in 15s
Specs security / security (pull_request) Successful in 11s
Specs verify / verify (pull_request) Successful in 10s
OpenSpec change: screen sync status polling and observe reads run every five seconds during active sync; terminal state observes resources immediately.
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
## 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** автоматическая серия повторов прекращается и появляется
|
||||
соответствующее действие или локальная ошибка без технической кнопки повторной
|
||||
загрузки
|
||||
Reference in New Issue
Block a user