- 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
32 lines
2.1 KiB
Markdown
32 lines
2.1 KiB
Markdown
# 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** в целевом альбоме появляется новая запись, ссылающаяся на те же объекты хранилища
|