90 lines
5.5 KiB
Markdown
90 lines
5.5 KiB
Markdown
# 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 обложки, когда обложка задана, чтобы клиенты могли
|
|
показать её в списке, рейле и карточке; URL SHALL указывать на вариант, достаточный для
|
|
крупного отображения, с откатом на миниатюру, пока крупный вариант не готов.
|
|
|
|
#### Scenario: Обложка задана
|
|
|
|
- **WHEN** клиент запрашивает список альбомов или альбом по id, и у альбома есть обложка
|
|
- **THEN** ответ содержит URL обложки
|
|
|
|
#### Scenario: Обложка отсутствует
|
|
|
|
- **WHEN** у альбома нет обложки или фото обложки удалено
|
|
- **THEN** ответ не содержит URL обложки, и клиент показывает плейсхолдер
|
|
|
|
#### Scenario: Крупный вариант ещё не готов
|
|
|
|
- **WHEN** у обложки готов только вариант-миниатюра
|
|
- **THEN** ответ содержит URL миниатюры обложки
|
|
|
|
### Requirement: Выбор обложки
|
|
Владелец и админ SHALL иметь возможность назначить обложкой любое фото альбома или сбросить
|
|
обложку; после сброса обложка SHALL становиться не заданной (без возврата к значению по
|
|
умолчанию).
|
|
|
|
#### Scenario: Назначение обложки
|
|
- **WHEN** владелец выбирает фото альбома как обложку
|
|
- **THEN** система сохраняет выбор и отражает его в списке и карточках
|
|
|
|
#### Scenario: Сброс обложки
|
|
- **WHEN** админ сбрасывает обложку
|
|
- **THEN** система снимает обложку, и альбом отображается без обложки, пока обложку не назначат снова
|
|
|
|
#### Scenario: Нет прав на смену обложки
|
|
- **WHEN** участник без права редактирования пытается сменить обложку
|
|
- **THEN** система отклоняет запрос
|
|
|
|
### Requirement: Счётчики альбома
|
|
Данные альбома SHALL включать количество фото и участников, чтобы панель и карточки могли
|
|
показать их без отдельных запросов.
|
|
|
|
#### Scenario: Счётчики в ответе
|
|
- **WHEN** клиент запрашивает список альбомов или альбом по id
|
|
- **THEN** ответ содержит число фото и число участников альбома
|