docs: отчёт об изменениях — раздел по реализации fix-copy-edit-variant-sharing
This commit is contained in:
@@ -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'`).
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user