- introduce storage.Backend with S3 and local file-system implementations - deliver all blobs via signed GET/HEAD /api/objects/<key> (Range, Content-Type) - stream S3 objects through the backend; remove presigned URL path - share shared HMAC Signer between backends - remove S3_PUBLIC_URL; rename S3_PRESIGN_TTL to OBJECT_URL_TTL - make storage label in health dynamic; nginx proxy_buffering off for objects
2.1 KiB
2.1 KiB
Spec Delta
MODIFIED Requirements
Requirement: Получение фото по требованию
Клиент SHALL иметь возможность получить актуальные данные фото с подписанным URL, обслуживаемым бэкендом, независимо от бэкенда хранения.
Scenario: Выдача свежего URL
- WHEN клиент запрашивает фото по id
- THEN система возвращает свежий подписанный URL бэкенда (срок до 1 часа) для просмотра
Requirement: Скачивание одиночного фото
Любой участник, включая viewer, SHALL иметь возможность скачать одиночное фото.
Scenario: Скачивание фото
- WHEN участник запрашивает скачивание фото
- THEN система возвращает подписанный URL оригинала, обслуживаемый бэкендом
Requirement: Перенос и копирование фото между альбомами
Пользователь с правом удаления в исходном альбоме и правом загрузки в целевом SHALL иметь возможность перенести или скопировать фото в другой альбом. Операции SHALL изменять только метаданные и SHALL не изменять объекты хранилища.
Scenario: Перенос
- WHEN пользователь переносит фото в другой альбом
- THEN фото исчезает из исходного альбома и появляется в целевом, объекты хранилища не меняются
Scenario: Копирование
- WHEN пользователь копирует фото в другой альбом
- THEN в целевом альбоме появляется новая запись, ссылающаяся на те же объекты хранилища