chore(openspec): архивировать add-orphaned-preview-handling и синхронизировать спеки

Новое требование в phone-album-sync о потере/возврате серверной копии у
разгруженного превью, требование в android-client о метке потерянного элемента
и действии удаления с устройства.
This commit is contained in:
iu
2026-10-16 14:13:01 +03:00
parent 5cfa045171
commit 98aaa3156a
8 changed files with 406 additions and 0 deletions
@@ -0,0 +1,41 @@
# Spec Delta
## MODIFIED Requirements
### Requirement: Экран альбома устройства и настройки синхронизации
Приложение SHALL открывать альбом устройства с сеткой медиа и SHALL предоставлять
настройки синхронизации этого альбома по свайпу вправо. Настройки SHALL содержать
только выбор режима синхронизации.
#### Scenario: Открытие альбома устройства
- **WHEN** пользователь выбирает альбом устройства в списке
- **THEN** открывается сетка медиа этого альбома
#### Scenario: Настройки по свайпу
- **WHEN** пользователь свайпает вправо в открытом альбоме устройства
- **THEN** открываются настройки синхронизации с выбором режима и только им
#### Scenario: Метка перенесённого элемента
- **WHEN** оригинал элемента разгружен на сервер в режиме переноса
- **THEN** в сетке на элементе показывается значок облака
#### Scenario: Метка потерянного элемента
- **WHEN** серверной копии разгруженного элемента больше нет в целевом альбоме
- **THEN** в сетке на элементе показывается перечёркнутый значок облака
## ADDED Requirements
### Requirement: Действия потерявшего серверную копию превью
Шит потерявшего серверную копию элемента SHALL предлагать действие «Удалить с
устройства» и SHALL NOT показывать серверные атрибуты и действия.
#### Scenario: Только удаление с устройства
- **WHEN** пользователь открывает атрибуты потерявшего серверную копию элемента
- **THEN** доступно действие «Удалить с устройства», а серверные действия отсутствуют
@@ -0,0 +1,66 @@
# Spec Delta
## ADDED Requirements
### Requirement: Обнаружение потери серверной копии превью
При проверке синхронизации приложение SHALL сопоставлять серверное фото каждого
разгруженного превью с фото целевого альбома и при его отсутствии SHALL помечать
элемент как потерявший серверную копию, сохраняя превью и провенанс.
#### Scenario: Копии больше нет
- **WHEN** серверное фото разгруженного превью отсутствует в целевом альбоме
- **THEN** приложение помечает элемент как потерявший серверную копию
#### Scenario: Превью не трогается
- **WHEN** элемент помечен как потерявший серверную копию
- **THEN** превью-файл на устройстве сохраняется и не загружается повторно как оригинал
### Requirement: Восстановление связи при возврате серверного фото
При проверке синхронизации приложение SHALL снимать пометку с элемента, если его
серверное фото снова присутствует в целевом альбоме.
#### Scenario: Фото вернулось на сервер
- **WHEN** серверное фото помеченного элемента снова присутствует в целевом альбоме
- **THEN** элемент возвращается к обычному разгруженному состоянию с серверной копией
### Requirement: Удаление потерянного превью с устройства
Приложение SHALL позволять удалить потерявшее серверную копию превью с устройства;
удаление SHALL удалять превью-файл и запись локального индекса и SHALL NOT
обращаться к серверу, поскольку копии там уже нет.
#### Scenario: Удаление с устройства
- **WHEN** пользователь удаляет потерявшее серверную копию превью с устройства
- **THEN** превью-файл и запись локального индекса удаляются, а сервер не затрагивается
#### Scenario: Согласие системы
- **WHEN** превью-файл не принадлежит приложению
- **THEN** удаление выполняется после системного согласия на удаление
### Requirement: Повторная заливка вернувшегося оригинала
Если содержимое с исходной контрольной суммой потерявшего копию элемента снова
присутствует на устройстве, приложение SHALL загрузить его на сервер как новую
загрузку этого элемента.
#### Scenario: Вернулся в тот же альбом
- **WHEN** оригинал с исходной контрольной суммой снова появился в альбоме устройства
- **THEN** приложение загружает его в целевой серверный альбом
#### Scenario: Вернулся в другой альбом
- **WHEN** содержимое с исходной контрольной суммой присутствует в другом альбоме устройства
- **THEN** приложение загружает его в целевой серверный альбом
#### Scenario: Режим переноса
- **WHEN** загрузка вернувшегося оригинала завершена в режиме переноса
- **THEN** элемент снова проходит обычную разгрузку в превью