chore(openspec): архивировать fix-copy-edit-variant-sharing и синхронизировать спеки

Дельта media-objects перенесена в основную спеку: копирование больше не
переносит отредактированную версию, копия показывается в исходном виде и
не наследует параметры правок. Change перемещён в архив за 2026-10-21.
This commit is contained in:
iu
2026-10-21 21:33:43 +03:00
parent 723b19bbe5
commit c886c6f22c
6 changed files with 5 additions and 3 deletions
@@ -0,0 +1,35 @@
# Tasks
## 1. Список edit-ролей
- [x] 1.1 В `backend/internal/photos/edit_render.go` собрать общий список ролей
(`RoleEdit`, `RoleEditThumb`, `RoleEditMedium`, `RoleEditPreview`) и хелпер проверки
роли; проверить, что список используется в обоих хранилищах и не дублируется
строковыми литералами
## 2. Копирование без отредактированной версии
- [x] 2.1 В `Store.Clone` (`backend/internal/photos/store.go`) исключить edit-роли из
переносимых привязок `photo_objects`; проверить тестом `copy_test.go`: копия
получает обычные варианты и не получает edit-объекты
- [x] 2.2 В `SQLiteStore.Clone` (`backend/internal/photos/sqlite_store.go`) сделать то же
для SQLite; проверить тем же тестом, прогнанным на SQLite-хранилище
## 3. Разовая чистка существующих копий
- [x] 3.1 Добавить миграцию Postgres `backend/migrations/000016_*.up.sql` и `.down.sql`,
удаляющую edit-привязки у фото с пустыми `edit_params`; проверить на тестовой базе,
что привязки исходных фото с правками остались, а «чужие» удалены
- [x] 3.2 Добавить миграцию SQLite `backend/migrations/sqlite/000008_*.up.sql` и
`.down.sql` с тем же действием; проверить тем же сценарием на SQLite
- [x] 3.3 Убедиться, что удалённые объекты подбираются сборщиком мусора
(`ClaimGarbage` не возвращает объекты с привязками); проверить существующим тестом
`objects_test.go`
## 4. Интеграционная проверка
- [x] 4.1 Прогнать `cd backend && go test ./internal/photos/ -v`; убедиться, что тесты
зелёные
- [x] 4.2 Прогнать `make test`; убедиться, что весь бэкенд зелёный
- [x] 4.3 Проверить вручную: отредактировать фото, скопировать его в другой альбом и
убедиться, что копия показывает исходник, а панель правок у копии пустая