Дельта android-live-albums: android-client (+3 требования: живое обновление списка, догон при переподключении, потеря доступа) и realtime (порядок списка теперь правило отображения клиента). Дельта fix-album-cover-readiness: realtime (+1 требование: album.updated при готовности вариантов фото-обложки).
2.9 KiB
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из персонального потока.