Files
iu 14db79632a chore(openspec): архивировать android-live-albums и fix-album-cover-readiness
Дельта android-live-albums: android-client (+3 требования: живое обновление
списка, догон при переподключении, потеря доступа) и realtime (порядок списка
теперь правило отображения клиента).

Дельта fix-album-cover-readiness: realtime (+1 требование: album.updated при
готовности вариантов фото-обложки).
2026-10-16 12:48:32 +03:00

2.9 KiB

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 из персонального потока.