chore(openspec): archive thumbnail-variants and sync main specs
This commit is contained in:
@@ -43,17 +43,26 @@
|
||||
- **THEN** фото альбома попадают в корзину без привязки к альбому и файлы сохраняются, участники и share-ссылки удаляются
|
||||
|
||||
### Requirement: Отображение обложки альбома
|
||||
Данные альбома SHALL включать URL миниатюры обложки, когда обложка задана, чтобы клиенты
|
||||
могли показать её в списке, рейле и карточке.
|
||||
|
||||
Данные альбома SHALL включать URL обложки, когда обложка задана, чтобы клиенты могли
|
||||
показать её в списке, рейле и карточке; URL SHALL указывать на вариант, достаточный для
|
||||
крупного отображения, с откатом на миниатюру, пока крупный вариант не готов.
|
||||
|
||||
#### Scenario: Обложка задана
|
||||
|
||||
- **WHEN** клиент запрашивает список альбомов или альбом по id, и у альбома есть обложка
|
||||
- **THEN** ответ содержит URL миниатюры обложки
|
||||
- **THEN** ответ содержит URL обложки
|
||||
|
||||
#### Scenario: Обложка отсутствует
|
||||
|
||||
- **WHEN** у альбома нет обложки или фото обложки удалено
|
||||
- **THEN** ответ не содержит URL обложки, и клиент показывает плейсхолдер
|
||||
|
||||
#### Scenario: Крупный вариант ещё не готов
|
||||
|
||||
- **WHEN** у обложки готов только вариант-миниатюра
|
||||
- **THEN** ответ содержит URL миниатюры обложки
|
||||
|
||||
### Requirement: Выбор обложки
|
||||
Владелец и админ SHALL иметь возможность назначить обложкой любое фото альбома или сбросить
|
||||
обложку; после сброса обложка SHALL становиться не заданной (без возврата к значению по
|
||||
|
||||
@@ -22,17 +22,20 @@
|
||||
- **THEN** ключи его объектов остаются неизменными
|
||||
|
||||
### Requirement: Журнал объектов
|
||||
|
||||
Каждый физический объект SHALL иметь ровно одну запись в слое метаданных с ключом,
|
||||
MIME-типом, размером, габаритами и состоянием; фото SHALL ссылаться на объекты по
|
||||
ролям original, thumb и preview.
|
||||
ролям original, thumb, medium и preview.
|
||||
|
||||
#### Scenario: Привязка ролей
|
||||
|
||||
- **WHEN** фото загружено и обработано
|
||||
- **THEN** фото ссылается на объект-оригинал и, когда они готовы, на объекты thumb и preview
|
||||
- **THEN** фото ссылается на объект-оригинал и, когда они готовы, на объекты thumb, medium и preview
|
||||
|
||||
#### Scenario: Оригинал без вариантов
|
||||
|
||||
- **WHEN** варианты ещё не сгенерированы
|
||||
- **THEN** фото доступно с оригиналом, а thumb и preview отсутствуют
|
||||
- **THEN** фото доступно с оригиналом, а thumb, medium и preview отсутствуют
|
||||
|
||||
### Requirement: Совместные объекты
|
||||
Несколько фото SHALL иметь возможность ссылаться на один и тот же физический
|
||||
|
||||
@@ -18,11 +18,20 @@
|
||||
- **THEN** система отклоняет запрос
|
||||
|
||||
### Requirement: Варианты изображений
|
||||
Система SHALL генерировать три варианта: thumb (200px), preview (1200px) и оригинал, с WebP для превью, и извлекать EXIF (дата, координаты, размеры).
|
||||
|
||||
Система SHALL генерировать четыре варианта: thumb (200×200, квадратный кроп), medium
|
||||
(800×800, квадратный кроп), preview (1200×1200, вписанный) и оригинал, в WebP, и извлекать
|
||||
EXIF (дата, координаты, размеры).
|
||||
|
||||
#### Scenario: Генерация вариантов
|
||||
|
||||
- **WHEN** фото загружено
|
||||
- **THEN** система асинхронно генерирует thumb и preview и заполняет EXIF-поля
|
||||
- **THEN** система асинхронно генерирует thumb, medium и preview и заполняет EXIF-поля
|
||||
|
||||
#### Scenario: Форма вариантов сетки
|
||||
|
||||
- **WHEN** генерируются thumb и medium
|
||||
- **THEN** они обрезаны до квадрата, а preview вписан с сохранением пропорций
|
||||
|
||||
### Requirement: Листинг фото с пагинацией
|
||||
Система SHALL возвращать фото альбома с cursor-пагинацией.
|
||||
|
||||
@@ -570,3 +570,23 @@ Ctrl/Cmd-клик — добавить или убрать, Shift-клик —
|
||||
#### Scenario: Публичная share-страница
|
||||
- **WHEN** фото открыто по публичной share-ссылке
|
||||
- **THEN** панорамный режим не активируется, показывается плоское изображение
|
||||
|
||||
### Requirement: Резкость миниатюр
|
||||
|
||||
Сетка фото и обзор альбомов SHALL подбирать вариант изображения под фактический размер
|
||||
плитки, чтобы миниатюры не отображались крупнее доступного разрешения.
|
||||
|
||||
#### Scenario: Крупные плитки
|
||||
|
||||
- **WHEN** пользователь увеличивает миниатюры до крупных плиток
|
||||
- **THEN** показывается вариант изображения, достаточный для их размера, без расплывания
|
||||
|
||||
#### Scenario: Мелкие плитки
|
||||
|
||||
- **WHEN** миниатюры показаны мелкими плитками
|
||||
- **THEN** показывается компактный вариант, чтобы не загружать крупное изображение
|
||||
|
||||
#### Scenario: Вариант ещё не готов
|
||||
|
||||
- **WHEN** для фото доступен только оригинал или только миниатюра
|
||||
- **THEN** показывается доступный вариант, и сетка отображается корректно
|
||||
|
||||
Reference in New Issue
Block a user