Files
ds-galo/openspec/changes/local-fs-storage-backend/specs/photos/spec.md
T
iu ec8d907565 feat(storage): serve media through backend and add local FS backend
- 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
2026-10-11 09:15:03 +03:00

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