fix(photos): faster large-album loading and album cover lifecycle
Large albums opened slowly and flickered; the default album cover was also lost in the media-objects refactor. Large-album loading: - quantize signed object URLs within a window and send Cache-Control so previews are reused instead of re-fetched - publish photo.updated (not photo.created) when variants are ready, so clients update in place without reordering the grid - worker concurrency + newest-first variant priority; raise default batch Album cover: - first uploaded photo becomes the cover when none is set - clear the cover when the cover photo is trashed or moved out - "set as album cover" in the photo context menu and actions panel OpenSpec changes: fix-large-album-load, fix-album-cover
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# Spec Delta
|
||||
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: События альбома
|
||||
Система SHALL публиковать события photo.created, photo.updated, photo.deleted,
|
||||
comment.created, like.added, like.removed, member.joined, member.left, album.updated.
|
||||
Событие photo.created SHALL обозначать появление фото в альбоме, а готовность вариантов
|
||||
существующего фото SHALL публиковаться как photo.updated.
|
||||
|
||||
#### Scenario: Новое фото
|
||||
- **WHEN** в альбоме появляется фото
|
||||
- **THEN** подписчики получают событие photo.created с метаданными и URL превью
|
||||
|
||||
#### Scenario: Готовы варианты
|
||||
- **WHEN** для существующего фото сгенерированы thumb и preview
|
||||
- **THEN** подписчики получают событие photo.updated с этим фото
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Различение добавления и обновления фото
|
||||
Клиент SHALL различать добавление нового фото в альбом и обновление уже показанного:
|
||||
обновление SHALL изменять фото на месте, не меняя порядок сетки.
|
||||
|
||||
#### Scenario: Обновление отображаемого фото
|
||||
- **WHEN** приходит событие обновления для фото, которое уже показано
|
||||
- **THEN** клиент обновляет его на месте, порядок сетки не меняется
|
||||
|
||||
#### Scenario: Обновление отсутствующего фото
|
||||
- **WHEN** приходит событие обновления для фото, которого нет в текущем списке
|
||||
- **THEN** клиент не добавляет его в сетку
|
||||
Reference in New Issue
Block a user