- fix-large-album-load -> photos, realtime, media-objects - fix-album-cover -> photos, albums
2.6 KiB
2.6 KiB
Tasks
1. Автобложка при загрузке
- 1.1 В
backend/internal/photos/service.go(Upload) вызыватьstore.SetCoverIfEmpty(ctx, in.AlbumID, p.ID)после успешного сохранения фото; проверитьcd backend && go test ./internal/e2e/— тест загружает два фото в новый альбом и проверяет, что обложкой стало первое - 1.2 Добавить в тот же тест проверку сценария «обложка уже задана»: загрузка второго фото не меняет уже назначенную обложку
2. Снятие обложки при уходе фото-обложки
- 2.1 Добавить
ClearCoverIfMatches(ctx, albumID, photoID)вbackend/internal/photos/repository.go,store.goиsqlite_store.go(UPDATE albums SET cover_photo_id = NULL WHERE id = $1 AND cover_photo_id = $2); проверитьcd backend && go test ./internal/repo/contract/— снятие срабатывает только при совпадении обложки - 2.2 Вызывать
ClearCoverIfMatchesвDelete(корзина) иMoveBatch(исходный альбом) вservice.go; проверить тестом, что удаление и перенос фото-обложки снимают обложку
3. Пункт «Установить как обложку альбома»
- 3.1 Добавить пункт в контекстное меню фото сетки (
frontend/src/routes/(app)/albums/[id]/+page.svelte,openMenuForPhoto) с иконкойwallpaperи вызовомalbums.setCover(albumId, photo.id), видимый только owner/admin; проверитьcd frontend && npm run check - 3.2 Добавить тот же пункт в секцию «Действия» компонента
frontend/src/lib/components/PhotoPanel.svelte; проверитьnpm run checkи наблюдаемо: пункт показывается только владельцу/админу
4. Интеграционная проверка
- 4.1
cd backend && go test ./...иcd frontend && npm run check— оба зелёные - 4.2 Собрать (
make build), загрузить фото в новый альбом (обложка = первое фото), затем удалить фото-обложку (обложка пуста) и перенести фото-обложку (обложка пуста); сбросить обложку вручную через панель — остаётся пустой