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
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
# Spec Delta
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Хранение пользовательских настроек интерфейса
|
||||
Система SHALL хранить настройки отображения в профиле пользователя и SHALL возвращать их при
|
||||
получении текущего пользователя. Настройки SHALL быть приватными для пользователя.
|
||||
Отсутствие настроек SHALL трактоваться как значения по умолчанию.
|
||||
|
||||
#### Scenario: Получение настроек
|
||||
- **WHEN** аутентифицированный пользователь запрашивает свой профиль
|
||||
- **THEN** ответ содержит его настройки отображения (или пустой объект по умолчанию)
|
||||
|
||||
#### Scenario: Сохранение настроек
|
||||
- **WHEN** пользователь сохраняет настройки отображения
|
||||
- **THEN** система сохраняет их в профиле и возвращает сохранённое состояние
|
||||
|
||||
#### Scenario: Изоляция настроек
|
||||
- **WHEN** другой пользователь запрашивает свой профиль
|
||||
- **THEN** он не получает настройки первого пользователя
|
||||
|
||||
#### Scenario: Некорректные настройки
|
||||
- **WHEN** пользователь присылает настройки недопустимой структуры или размера
|
||||
- **THEN** система отклоняет запрос с ошибкой и не меняет сохранённые настройки
|
||||
Reference in New Issue
Block a user