docs: отчёт об изменениях — раздел по реализации fix-copy-edit-variant-sharing

This commit is contained in:
iu
2026-10-21 21:01:33 +03:00
parent 70ac12db10
commit afe85f7be0
@@ -125,9 +125,35 @@ openspec validate --specs → 23 passed, 0 failed
openspec validate fix-copy-edit-variant-sharing --type change → valid openspec validate fix-copy-edit-variant-sharing --type change → valid
``` ```
## 8. Что дальше ## 8. Реализация `fix-copy-edit-variant-sharing`
- Реализация правки копирования — из `/opsx-apply` для изменённого Изменение реализовано полностью (9/9 задач):
`fix-copy-edit-variant-sharing`.
- После реализации и архивации изменений дельта `media-objects` будет перенесена в | Что | Где |
| --- | --- |
| Общий список edit-ролей `EditRoles()` и предикат `IsEditRole()` | `backend/internal/photos/edit_render.go` |
| `Clone` не переносит edit-привязки (Postgres: `role <> ALL($3::text[])`) | `backend/internal/photos/store.go` |
| То же для SQLite (`role NOT IN (...)`) | `backend/internal/photos/sqlite_store.go` |
| Сброс правок использует общий список ролей | `backend/internal/photos/edit_service.go` |
| Разовая чистка копий, созданных до фикса | `backend/migrations/000016_*.sql`, `backend/migrations/sqlite/000008_*.sql` |
| Контрактная проверка копирования (оба хранилища) | `backend/internal/repo/contract/contract.go`, кейс `Clone` |
| Сервисные тесты: копия и миграция | `backend/internal/photos/copy_test.go`, `backend/internal/e2e/copy_edit_test.go` |
Проверки:
- `make test` (с Postgres) — весь бэкенд зелёный;
- контрактный кейс `Clone` проходит на SQLite и Postgres; без фикса он падает
(«clone shares the edited version»);
- e2e на SQLite: копия показывает исходник, `edit_params` пусты, миграция убирает
«чужие» привязки, не трогая привязки владельца;
- ручная проверка через HTTP и браузер: в просмотре копии грузится `thumb.webp`
(не `edit_preview`), все ползунки панели «Редактирование» в нуле.
## 9. Что дальше
- Ревью и архивация изменения `/opsx-archive` — дельта `media-objects` переедет в
основную спеку. основную спеку.
- Изменение требует Postgres для полного прогона: в этом окружении поднимался
временный контейнер `postgres:16-alpine` на порту 55432
(`TEST_DATABASE_URL='postgres://postgres:postgres@127.0.0.1:55432/galo?sslmode=disable'`).