Files
iu 19309e2ac0 chore(openspec): архивировать android-album-restore-progress и синхронизировать спеки
Дельта перенесена в основные спеки: android-client («Прогресс восстановления
оригиналов») и phone-album-sync («Ход и устойчивость восстановления оригиналов»).
Изменение перемещено в openspec/changes/archive/2026-10-16-android-album-restore-progress.
2026-10-16 20:15:57 +03:00

53 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 и бэкенд:** не затрагиваются.
- **Веб-клиент:** не затрагивается.
- **Не затрагивается:** восстановление потерянных копий из корзины сервера.