chore(openspec): архивировать android-live-albums и fix-album-cover-readiness
Дельта android-live-albums: android-client (+3 требования: живое обновление списка, догон при переподключении, потеря доступа) и realtime (порядок списка теперь правило отображения клиента). Дельта fix-album-cover-readiness: realtime (+1 требование: album.updated при готовности вариантов фото-обложки).
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Proposal
|
||||
|
||||
## Why
|
||||
|
||||
Обложка альбома на карточке в списке не обновляется вживую: после загрузки фото счётчик
|
||||
`photos_count` приходит, а обложка остаётся заглушкой до ручного обновления. Ссылка на
|
||||
обложку (`cover_thumb_url` / `cover_medium_url`) появляется в объекте альбома только после
|
||||
генерации вариантов thumb/medium, но событие об этом в персональные потоки не публикуется.
|
||||
Дефект серверной стороны способности `realtime`, поэтому затрагивает и веб-клиент, и Android.
|
||||
|
||||
## What Changes
|
||||
|
||||
- Когда для фото, являющегося обложкой альбома, готовы варианты, система публикует
|
||||
`album.updated` с актуальным объектом альбома в персональные потоки владельца и
|
||||
участников — именно тогда объект впервые получает ссылку на обложку.
|
||||
- Готовность вариантов фото, которое обложкой не является, объект альбома не меняет и
|
||||
события не порождает: иначе массовая загрузка даёт лишний веер `album.updated` на каждый
|
||||
файл.
|
||||
- Контракт существующих событий и REST не меняется, новых эндпоинтов и миграций нет.
|
||||
- **BREAKING**: нет.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
_Нет — поведение расширяет существующую способность `realtime`._
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- `realtime`: добавляется публикация `album.updated` в персональные потоки при готовности
|
||||
вариантов фото-обложки, поскольку только тогда объект альбома получает ссылку на обложку.
|
||||
|
||||
## Impact
|
||||
|
||||
- **Код (backend):** `internal/albums/service.go` (новая публикация), порт `AlbumAccess` в
|
||||
`internal/photos/service.go`, вызов из `internal/photos/worker.go` (готовность вариантов),
|
||||
стаб порта в `internal/photos/helpers_test.go`.
|
||||
- **Документация:** `project.md` (§11 «Real-time (SSE)», §12 «SSE — детали реализации»).
|
||||
- **Не затрагивается:** схема БД, миграции, REST, пер-альбомный контракт (`photo.updated`
|
||||
по-прежнему приходит в канал альбома), клиенты — веб и Android уже применяют
|
||||
`album.updated` из персонального потока.
|
||||
Reference in New Issue
Block a user