- 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
25 lines
1.7 KiB
Markdown
25 lines
1.7 KiB
Markdown
# Spec Delta
|
|
|
|
## ADDED Requirements
|
|
|
|
### Requirement: Хранение пользовательских настроек интерфейса
|
|
Система SHALL хранить настройки отображения в профиле пользователя и SHALL возвращать их при
|
|
получении текущего пользователя. Настройки SHALL быть приватными для пользователя.
|
|
Отсутствие настроек SHALL трактоваться как значения по умолчанию.
|
|
|
|
#### Scenario: Получение настроек
|
|
- **WHEN** аутентифицированный пользователь запрашивает свой профиль
|
|
- **THEN** ответ содержит его настройки отображения (или пустой объект по умолчанию)
|
|
|
|
#### Scenario: Сохранение настроек
|
|
- **WHEN** пользователь сохраняет настройки отображения
|
|
- **THEN** система сохраняет их в профиле и возвращает сохранённое состояние
|
|
|
|
#### Scenario: Изоляция настроек
|
|
- **WHEN** другой пользователь запрашивает свой профиль
|
|
- **THEN** он не получает настройки первого пользователя
|
|
|
|
#### Scenario: Некорректные настройки
|
|
- **WHEN** пользователь присылает настройки недопустимой структуры или размера
|
|
- **THEN** система отклоняет запрос с ошибкой и не меняет сохранённые настройки
|