- synced delta specs into main specs: albums (+3 reqs, MODIFIED deleting album -> photos to trash), auth (+1), photos (+8), and created new ui-workspace spec (29 reqs) - moved the change to openspec/changes/archive/2026-10-10-lightroom-workspace-ui/
5.0 KiB
albums Specification
Purpose
Управление фотоальбомами: создание, просмотр, редактирование, удаление и владение.
Requirements
Requirement: Создание альбома
Зарегистрированный пользователь SHALL иметь возможность создать альбом и стать его владельцем.
Scenario: Создание альбома
- WHEN пользователь создаёт альбом с названием
- THEN система создаёт альбом и назначает пользователя владельцем
Requirement: Список альбомов пользователя
Пользователь SHALL иметь возможность получить список альбомов, к которым у него есть доступ.
Scenario: Список альбомов
- WHEN пользователь запрашивает список альбомов
- THEN система возвращает альбомы, где он владелец или участник
Requirement: Получение альбома
Участник SHALL иметь возможность получить данные альбома по id.
Scenario: Просмотр альбома
- WHEN участник запрашивает альбом по id
- THEN система возвращает данные альбома
Requirement: Редактирование альбома
Владелец и админ SHALL иметь возможность редактировать название, описание и обложку альбома.
Scenario: Редактирование альбома
- WHEN админ изменяет описание альбома
- THEN система сохраняет изменения
Requirement: Удаление альбома
Владелец SHALL иметь возможность удалить альбом; фото альбома SHALL помещаться в корзину без удаления объектов хранилища, а участники и share-ссылки SHALL удаляться вместе с альбомом.
Scenario: Удаление альбома
- WHEN владелец удаляет альбом
- THEN фото альбома попадают в корзину без привязки к альбому и файлы сохраняются, участники и share-ссылки удаляются
Requirement: Отображение обложки альбома
Данные альбома SHALL включать URL миниатюры обложки, когда обложка задана, чтобы клиенты могли показать её в списке, рейле и карточке.
Scenario: Обложка задана
- WHEN клиент запрашивает список альбомов или альбом по id, и у альбома есть обложка
- THEN ответ содержит URL миниатюры обложки
Scenario: Обложка отсутствует
- WHEN у альбома нет обложки или фото обложки удалено
- THEN ответ не содержит URL обложки, и клиент показывает плейсхолдер
Requirement: Выбор обложки
Владелец и админ SHALL иметь возможность назначить обложкой любое фото альбома или сбросить обложку; после сброса обложка определяется заново по умолчанию.
Scenario: Назначение обложки
- WHEN владелец выбирает фото альбома как обложку
- THEN система сохраняет выбор и отражает его в списке и карточках
Scenario: Сброс обложки
- WHEN админ сбрасывает обложку
- THEN система удаляет явный выбор, и обложка возвращается к значению по умолчанию
Scenario: Нет прав на смену обложки
- WHEN участник без права редактирования пытается сменить обложку
- THEN система отклоняет запрос
Requirement: Счётчики альбома
Данные альбома SHALL включать количество фото и участников, чтобы панель и карточки могли показать их без отдельных запросов.
Scenario: Счётчики в ответе
- WHEN клиент запрашивает список альбомов или альбом по id
- THEN ответ содержит число фото и число участников альбома