feat(android): статус синхронизации на карточке и безопасная разгрузка
Карточка альбома устройства получает третью строку: метку режима («Копии»/ «Перенос») и ход загрузки. Процент считается как (uploaded + running) / total для обоих синхронизируемых режимов, пульсирует только при активной загрузке, показывает очередь, ожидание Wi-Fi и ошибку. В режиме переноса карточка показывает и карту памяти, и облако — режимы различает метка, а не значки. Разгрузка оригиналов теперь требует подтверждённой серверной копии в текущем целевом альбоме: устаревший serverPhotoId перепроверяется по альбому, смена цели переносит уже загруженные фото и отклоняется, если перенести нельзя. Потеря серверной копии видна на карточке и на экране альбома, автозатирания превью нет. Изменения OpenSpec: android-album-card-sync-status, safe-album-offload.
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# Spec Delta
|
||||
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Подпись карточки альбома
|
||||
Карточка альбома SHALL показывать в первой строке имя альбома, а для связанной пары — со
|
||||
стрелкой имя связанного серверного альбома, и только когда имена различаются. Вторая строка
|
||||
SHALL показывать значками расположение содержимого и число элементов: значок карты памяти для
|
||||
локального без синхронизации, значки карты памяти и облака для режимов копий и переноса; для
|
||||
серверного альбома — значок облака. Третья строка SHALL называть режим синхронизации
|
||||
(«Копии» или «Перенос») и SHALL отсутствовать у выключенной синхронизации и у серверного
|
||||
альбома.
|
||||
|
||||
#### Scenario: Локальный без синхронизации
|
||||
- **WHEN** показан локальный альбом без синхронизации
|
||||
- **THEN** вторая строка показывает значок карты памяти и число элементов, а третьей строки нет
|
||||
|
||||
#### Scenario: Режим копий
|
||||
- **WHEN** локальный альбом синхронизируется в режиме копий
|
||||
- **THEN** вторая строка показывает значки карты памяти и облака и число элементов, а третья называет режим «Копии»
|
||||
|
||||
#### Scenario: Режим переноса
|
||||
- **WHEN** локальный альбом синхронизируется в режиме переноса
|
||||
- **THEN** вторая строка показывает значки карты памяти и облака и число элементов, а третья называет режим «Перенос»
|
||||
|
||||
#### Scenario: Серверный альбом
|
||||
- **WHEN** показан серверный альбом
|
||||
- **THEN** вторая строка показывает значок облака и число фото, а третьей строки нет
|
||||
|
||||
#### Scenario: Разные имена связанной пары
|
||||
- **WHEN** имя локального альбома не совпадает с именем связанного серверного
|
||||
- **THEN** первая строка показывает «имя → имя серверного»
|
||||
|
||||
#### Scenario: Одинаковые имена
|
||||
- **WHEN** имена совпадают
|
||||
- **THEN** стрелка и имя серверного не показываются
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Прогресс операции загрузки
|
||||
Для альбома устройства с включённой синхронизацией (копии или перенос) карточка SHALL
|
||||
показывать ход загрузки в третьей строке: процент, пока есть работающие загрузки (текст
|
||||
пульсирует); число ожидающих без активной работы; отдельные состояния ожидания Wi-Fi и
|
||||
ошибки; в простое — только метку режима. Процент SHALL считаться по альбому и SHALL NOT
|
||||
убывать при завершении отдельных файлов.
|
||||
|
||||
#### Scenario: Идёт копирование
|
||||
- **WHEN** у альбома в режиме копий есть хотя бы одна работающая загрузка
|
||||
- **THEN** третья строка показывает «Копии <процент>%», и текст пульсирует
|
||||
|
||||
#### Scenario: Идёт перенос
|
||||
- **WHEN** у альбома в режиме переноса есть хотя бы одна работающая загрузка
|
||||
- **THEN** третья строка показывает «Перенос <процент>%», и текст пульсирует
|
||||
|
||||
#### Scenario: Очередь без активной работы
|
||||
- **WHEN** загрузки альбома ожидают, но ни одна не работает
|
||||
- **THEN** третья строка показывает число ожидающих, и пульсации нет
|
||||
|
||||
#### Scenario: Ожидание Wi-Fi
|
||||
- **WHEN** загрузки ждут только из-за ограничения «только Wi-Fi»
|
||||
- **THEN** третья строка сообщает ожидание Wi-Fi, и пульсации нет
|
||||
|
||||
#### Scenario: Ошибка
|
||||
- **WHEN** последняя попытка загрузки файла провалилась
|
||||
- **THEN** третья строка показывает ошибку выделенным цветом, и пульсации нет
|
||||
|
||||
#### Scenario: Простой
|
||||
- **WHEN** незавершённых загрузок нет
|
||||
- **THEN** третья строка показывает только метку режима
|
||||
|
||||
#### Scenario: Монотонность
|
||||
- **WHEN** один файл завершается, пока остальные ещё загружаются
|
||||
- **THEN** показанный процент не уменьшается
|
||||
Reference in New Issue
Block a user