Files
iu c886c6f22c chore(openspec): архивировать fix-copy-edit-variant-sharing и синхронизировать спеки
Дельта media-objects перенесена в основную спеку: копирование больше не
переносит отредактированную версию, копия показывается в исходном виде и
не наследует параметры правок. Change перемещён в архив за 2026-10-21.
2026-10-21 21:33:43 +03:00

3.0 KiB

Proposal

Why

Отредактированная версия фото задумана принадлежащей только тому фото, чьи правки её породили: воркер создаёт edit-объекты с владельцем []string{photoID} и комментирует это прямо. Но копирование фото (Clone) переносит все привязки photo_objects, включая роли edit, edit_thumb, edit_medium, edit_preview. Копия фото, сделанная после рендера правок, поэтому показывает отредактированную картинку, но не наследует edit_params: в панели правок у копии параметров нет, и первая же новая правка перезаписывает исходную обработку с нуля. Поведение расходится с замыслом и с описанием в спеке.

What Changes

  • Копирование фото перестаёт переносить отредактированную версию: в копию попадают только обычные роли (original, thumb, medium, preview, playback).
  • Копия фото с правками показывается в исходном виде, параметры правок копии остаются пустыми — как и сейчас.
  • Обычные варианты по-прежнему разделяются между копиями одного оригинала: правка принадлежит фото, а не объекту.
  • Спека media-objects приводится к этому правилу: уточняется, кому принадлежит отредактированная версия и что происходит при копировании.

Capabilities

New Capabilities

Нет.

Modified Capabilities

  • media-objects: копирование фото не переносит отредактированную версию на копию; отредактированная версия остаётся привязанной только к фото, чьи правки её создали.

Impact

  • backend/internal/photos/store.go — Store.Clone (Postgres): при копировании photo_objects исключаются роли edit*.
  • backend/internal/photos/sqlite_store.go — SQLiteStore.Clone (SQLite): то же поведение.
  • backend/internal/photos/edit_render.go — константы ролей edit* используются как список исключений (без дублирования строк в двух хранилищах).
  • backend/internal/photos/copy_test.go — тест на копию фото с отрендеренной отредактированной версией.
  • Схема БД, HTTP API и клиенты не меняются; миграций нет.