chore(openspec): архивировать android-album-sort и синхронизировать основные спеки
android-client: +1 требование — выбор порядка карточек и направления, порядок охватывает весь список вместе с альбомами устройства.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# Proposal
|
||||
|
||||
## Why
|
||||
|
||||
Список альбомов в Android-клиенте упорядочивался жёстко (`ORDER BY updatedAt DESC,
|
||||
title ASC` в запросе Room), а серверный порядок процедура `refresh` и вовсе теряла:
|
||||
`created_at` приходил в DTO и отбрасывался при записи в кэш. Пользователь не мог ни выбрать
|
||||
порядок, ни развернуть его. Дополнительно выяснилось, что выбранный порядок должен
|
||||
охватывать **весь** список: альбомы устройства и серверные карточки видны вместе, а не
|
||||
живут двумя независимыми блоками.
|
||||
|
||||
## What Changes
|
||||
|
||||
- Список альбомов получает выбор порядка: по времени изменения (по умолчанию), по названию
|
||||
или по числу фото, плюс обратный порядок для выбранного варианта.
|
||||
- Порядок применяется ко **всему списку**: карточки альбомов устройства и серверных
|
||||
альбомов упорядочиваются вместе, а не двумя блоками. Связанная пара «устройство →
|
||||
серверный альбом» остаётся одной карточкой устройства и участвует в общем порядке как она.
|
||||
- Альбом устройства получает дату последнего изменения (самый свежий его элемент, как уже
|
||||
делается при выборе обложки), поэтому вариант «по времени изменения» осмыслен и для него.
|
||||
- Пара (вариант, направление) сохраняется локально на устройстве (DataStore) и применяется
|
||||
при следующем запуске. Это настройка отображения: она не синхронизируется между
|
||||
устройствами.
|
||||
- Сортировка выполняется при сборке списка, а не запросом Room: кэш остаётся хранилищем без
|
||||
собственного порядка, поэтому события реального времени не знают о выбранной сортировке.
|
||||
- **BREAKING**: нет. Значения по умолчанию (по времени изменения, без обратного порядка)
|
||||
сохраняют прежнее поведение.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
_Нет — поведение расширяет существующую способность `android-client`._
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- `android-client`: добавляется выбор порядка карточек и направления с локальным
|
||||
сохранением; фиксируется, что порядок охватывает весь список, включая альбомы устройства.
|
||||
|
||||
## Impact
|
||||
|
||||
- **Код (Android):** `domain/model/AlbumSort`, `domain/model/DeviceAlbums` (дата изменения),
|
||||
`data/media/MediaStoreDeviceSource` (дата в маппинге), `data/prefs/SettingsRepository`
|
||||
(порт `AlbumSortPreference` и хранение пары), `ui/albums/AlbumListItem`
|
||||
(единый компаратор), `ui/albums/AlbumsViewModel`, `ui/albums/AlbumsScreen` (меню и
|
||||
переключатель).
|
||||
- **Схема Room:** без изменений; новые колонки не добавляются.
|
||||
- **API и бэкенд:** не затрагиваются.
|
||||
- **Веб-клиент:** не затрагивается, своей сортировки у него нет.
|
||||
- **Не затрагивается:** подписка на персональный поток и живое обновление списка — это
|
||||
отдельный change (`android-live-albums`).
|
||||
Reference in New Issue
Block a user