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

2.5 KiB
Raw Permalink Blame History

Tasks

1. Список edit-ролей

  • 1.1 В backend/internal/photos/edit_render.go собрать общий список ролей (RoleEdit, RoleEditThumb, RoleEditMedium, RoleEditPreview) и хелпер проверки роли; проверить, что список используется в обоих хранилищах и не дублируется строковыми литералами

2. Копирование без отредактированной версии

  • 2.1 В Store.Clone (backend/internal/photos/store.go) исключить edit-роли из переносимых привязок photo_objects; проверить тестом copy_test.go: копия получает обычные варианты и не получает edit-объекты
  • 2.2 В SQLiteStore.Clone (backend/internal/photos/sqlite_store.go) сделать то же для SQLite; проверить тем же тестом, прогнанным на SQLite-хранилище

3. Разовая чистка существующих копий

  • 3.1 Добавить миграцию Postgres backend/migrations/000016_*.up.sql и .down.sql, удаляющую edit-привязки у фото с пустыми edit_params; проверить на тестовой базе, что привязки исходных фото с правками остались, а «чужие» удалены
  • 3.2 Добавить миграцию SQLite backend/migrations/sqlite/000008_*.up.sql и .down.sql с тем же действием; проверить тем же сценарием на SQLite
  • 3.3 Убедиться, что удалённые объекты подбираются сборщиком мусора (ClaimGarbage не возвращает объекты с привязками); проверить существующим тестом objects_test.go

4. Интеграционная проверка

  • 4.1 Прогнать cd backend && go test ./internal/photos/ -v; убедиться, что тесты зелёные
  • 4.2 Прогнать make test; убедиться, что весь бэкенд зелёный
  • 4.3 Проверить вручную: отредактировать фото, скопировать его в другой альбом и убедиться, что копия показывает исходник, а панель правок у копии пустая