chore(openspec): архивировать android-album-restore-progress и синхронизировать спеки

Дельта перенесена в основные спеки: android-client («Прогресс восстановления
оригиналов») и phone-album-sync («Ход и устойчивость восстановления оригиналов»).
Изменение перемещено в openspec/changes/archive/2026-10-16-android-album-restore-progress.
This commit is contained in:
iu
2026-10-16 20:15:57 +03:00
parent fcc7ac05c1
commit 19309e2ac0
8 changed files with 42 additions and 0 deletions
@@ -0,0 +1,52 @@
# Proposal
## Why
При возврате из режима переноса в копии (`MOVE → COPY`) приложение скачивает оригиналы с
сервера и записывает их поверх превью, но **никак не показывает ход**. Карточка альбома умеет
показывать только загрузку (upload-джобы), которых при этом переходе не возникает, поэтому
третья строка молчит, а операция идёт.
Дополнительно восстановление запускается в области экрана (`viewModelScope`): стоит уйти с
экрана альбома устройства — и оно обрывается на середине, хотя пользователь именно затем и
уходит в список, чтобы посмотреть ход.
(Для альбома с потерянными копиями восстановление и не начнётся: такие элементы в целевой
набор не входят — это отдельный случай, здесь не меняется.)
## What Changes
- Восстановление становится наблюдаемой операцией: приложение ведёт счётчик «готово из
всего» по каждому альбому устройства.
- Восстановление выполняется в области приложения, а не экрана: уход с экрана альбома не
прерывает его.
- Карточка альбома показывает ход: `Копии — восстановление N%` (и пульсирует, пока идёт).
- Экран альбома устройства также показывает ход восстановления.
- **BREAKING**: нет. Загрузка, разгрузка и режимы не меняются; добавляется только видимость
и устойчивость уже существующей операции.
## Capabilities
### New Capabilities
_Нет — поведение относится к существующим способностям._
### Modified Capabilities
- `phone-album-sync`: восстановление оригиналов выполняется до конца независимо от ухода с
экрана и сообщает ход (сколько элементов восстановлено из скольких).
- `android-client`: карточка альбома и экран альбома устройства показывают ход
восстановления оригиналов.
## Impact
- **Код (Android):** `data/sync/RestoreManager` (обратный вызов хода, интерфейс исполнителя),
новый `data/sync/RestoreCoordinator` (область приложения + прогресс по альбомам),
`di/AppContainer` (создание координатора), `data/sync/SyncCheck` (восстановление через
координатора), `ui/devicealbum/DeviceAlbumViewModel` (запуск через координатора, ход в
состоянии) и `DeviceAlbumScreen` (строка хода), `domain/sync/AlbumSyncProgress` и
`ui/albums/AlbumsViewModel`/`AlbumsScreen` (ход на карточке).
- **Схема Room:** без изменений.
- **API и бэкенд:** не затрагиваются.
- **Веб-клиент:** не затрагивается.
- **Не затрагивается:** восстановление потерянных копий из корзины сервера.