chore(openspec): отметить задачи fix-copy-edit-variant-sharing выполненными

Все 9 задач закрыты; в design.md уточнено, что удалённые привязки
не осиротевают объекты: отредактированная версия живёт вместе с фото.
This commit is contained in:
iu
2026-10-21 21:01:33 +03:00
parent 8dd8cb6f0c
commit 70ac12db10
2 changed files with 12 additions and 11 deletions
@@ -84,8 +84,9 @@ WHERE role IN ('edit', 'edit_thumb', 'edit_medium', 'edit_preview')
местах и не отражается в данных. местах и не отражается в данных.
- **Альтернатива: ничего не чистить.** Отклонено: старые копии продолжат показывать - **Альтернатива: ничего не чистить.** Отклонено: старые копии продолжат показывать
отредактированную версию, и расхождение останется в данных. отредактированную версию, и расхождение останется в данных.
- После удаления привязок объекты становятся мусором и подбираются `ClaimGarbage` — - Удалённые привязки не осиротевают объекты: отредактированная версия остаётся
отдельной уборки не требуется. привязана к своему фото, поэтому её объекты живут, пока живёт фото, и обычный
`ClaimGarbage` уберёт их вместе с ним.
### 4. Проверка — в существующем тесте копирования ### 4. Проверка — в существующем тесте копирования
@@ -2,34 +2,34 @@
## 1. Список edit-ролей ## 1. Список edit-ролей
- [ ] 1.1 В `backend/internal/photos/edit_render.go` собрать общий список ролей - [x] 1.1 В `backend/internal/photos/edit_render.go` собрать общий список ролей
(`RoleEdit`, `RoleEditThumb`, `RoleEditMedium`, `RoleEditPreview`) и хелпер проверки (`RoleEdit`, `RoleEditThumb`, `RoleEditMedium`, `RoleEditPreview`) и хелпер проверки
роли; проверить, что список используется в обоих хранилищах и не дублируется роли; проверить, что список используется в обоих хранилищах и не дублируется
строковыми литералами строковыми литералами
## 2. Копирование без отредактированной версии ## 2. Копирование без отредактированной версии
- [ ] 2.1 В `Store.Clone` (`backend/internal/photos/store.go`) исключить edit-роли из - [x] 2.1 В `Store.Clone` (`backend/internal/photos/store.go`) исключить edit-роли из
переносимых привязок `photo_objects`; проверить тестом `copy_test.go`: копия переносимых привязок `photo_objects`; проверить тестом `copy_test.go`: копия
получает обычные варианты и не получает edit-объекты получает обычные варианты и не получает edit-объекты
- [ ] 2.2 В `SQLiteStore.Clone` (`backend/internal/photos/sqlite_store.go`) сделать то же - [x] 2.2 В `SQLiteStore.Clone` (`backend/internal/photos/sqlite_store.go`) сделать то же
для SQLite; проверить тем же тестом, прогнанным на SQLite-хранилище для SQLite; проверить тем же тестом, прогнанным на SQLite-хранилище
## 3. Разовая чистка существующих копий ## 3. Разовая чистка существующих копий
- [ ] 3.1 Добавить миграцию Postgres `backend/migrations/000016_*.up.sql` и `.down.sql`, - [x] 3.1 Добавить миграцию Postgres `backend/migrations/000016_*.up.sql` и `.down.sql`,
удаляющую edit-привязки у фото с пустыми `edit_params`; проверить на тестовой базе, удаляющую edit-привязки у фото с пустыми `edit_params`; проверить на тестовой базе,
что привязки исходных фото с правками остались, а «чужие» удалены что привязки исходных фото с правками остались, а «чужие» удалены
- [ ] 3.2 Добавить миграцию SQLite `backend/migrations/sqlite/000008_*.up.sql` и - [x] 3.2 Добавить миграцию SQLite `backend/migrations/sqlite/000008_*.up.sql` и
`.down.sql` с тем же действием; проверить тем же сценарием на SQLite `.down.sql` с тем же действием; проверить тем же сценарием на SQLite
- [ ] 3.3 Убедиться, что удалённые объекты подбираются сборщиком мусора - [x] 3.3 Убедиться, что удалённые объекты подбираются сборщиком мусора
(`ClaimGarbage` не возвращает объекты с привязками); проверить существующим тестом (`ClaimGarbage` не возвращает объекты с привязками); проверить существующим тестом
`objects_test.go` `objects_test.go`
## 4. Интеграционная проверка ## 4. Интеграционная проверка
- [ ] 4.1 Прогнать `cd backend && go test ./internal/photos/ -v`; убедиться, что тесты - [x] 4.1 Прогнать `cd backend && go test ./internal/photos/ -v`; убедиться, что тесты
зелёные зелёные
- [ ] 4.2 Прогнать `make test`; убедиться, что весь бэкенд зелёный - [x] 4.2 Прогнать `make test`; убедиться, что весь бэкенд зелёный
- [ ] 4.3 Проверить вручную: отредактировать фото, скопировать его в другой альбом и - [x] 4.3 Проверить вручную: отредактировать фото, скопировать его в другой альбом и
убедиться, что копия показывает исходник, а панель правок у копии пустая убедиться, что копия показывает исходник, а панель правок у копии пустая