Files
ds-galo/openspec/changes/lightroom-workspace-ui/specs/photos/spec.md
T
iu e1592549b2 feat(photos): full EXIF metadata extraction, backfill and info panel
- backend: switch EXIF parser to dsoprea/go-exif/v3 (all recognised tags, numeric normalization); store in photos.exif jsonb (migration 000003); add storage.Get and cmd/backfill-exif to backfill existing photos from S3 originals
- frontend: info panel renders all EXIF attributes with RU labels, enum translation and units (1/N, f/N, mm, EV); service tags hidden
- viewer: remove make-cover action (cover managed from panel only), icon-only download
- openspec: sync lightroom-workspace-ui artifacts (EXIF, cover-from-panel) and add plan for configurable info attributes/labels stored in user profile
2026-10-10 20:31:34 +03:00

3.3 KiB

Spec Delta

ADDED Requirements

Requirement: Обложка по умолчанию

При обработке загруженного фото система SHALL назначать его обложкой альбома только если обложка ещё не задана.

Scenario: Первое фото

  • WHEN фото обработано, и у альбома нет обложки
  • THEN система назначает это фото обложкой

Scenario: Обложка уже задана

  • WHEN фото обработано, а обложка уже задана
  • THEN система не меняет обложку

Requirement: Переименование фото

Автор фото, владелец и админ альбома SHALL иметь возможность изменить имя файла фото; остальные SHALL получать отказ, а пустое имя SHALL отклоняться.

Scenario: Переименование автором

  • WHEN автор меняет имя файла своего фото на непустое
  • THEN система сохраняет новое имя и транслирует изменение подписчикам альбома

Scenario: Пустое имя

  • WHEN пользователь подтверждает пустое имя файла
  • THEN система отклоняет запрос

Scenario: Нет прав

  • WHEN участник без прав переименовывает чужое фото
  • THEN система отклоняет запрос

Requirement: Ограничение размера загрузки

Система SHALL ограничивать размер загружаемых файлов и SHALL отвечать понятной ошибкой при превышении лимита, а не ошибкой разбора формы.

Scenario: Превышение лимита

  • WHEN загружаемый файл превышает максимальный размер
  • THEN система отклоняет загрузку с явной ошибкой о превышении размера

Scenario: Файл в пределах лимита

  • WHEN файл не превышает лимит
  • THEN система принимает multipart-загрузку и обрабатывает фото

Requirement: Метаданные фото (EXIF)

При загрузке фото система SHALL извлекать распознаваемые EXIF-атрибуты и SHALL возвращать их вместе с данными фото; при отсутствии метаданных SHALL возвращать пустой набор.

Scenario: Фото с метаданными

  • WHEN загружается фото с EXIF
  • THEN данные фото содержат извлечённые атрибуты (камера, экспозиция, ISO, дата съёмки и др.)

Scenario: Фото без метаданных

  • WHEN загружается фото без читаемых EXIF
  • THEN данные фото не содержат атрибутов, а загрузка выполняется успешно