docs(openspec): изменение photo-color-editing

Предложение, дельта-спека photos, дизайн и задачи для инструмента «Цвет».
This commit is contained in:
iu
2026-10-23 21:57:51 +03:00
parent d791b9a572
commit 502f2766d7
5 changed files with 222 additions and 0 deletions
@@ -0,0 +1,55 @@
# Proposal
## Why
В инструменте правок фото сейчас только раздел «Свет» (экспозиция, контраст, света,
тени, белые, чёрные, точечная кривая). Пользователи не могут скорректировать цвет:
баланс белого, вибрацию, насыщенность, отдельные оттенки и тонирование. Добавить
цветовые правки — востребованное расширение неразрушающего редактирования, которое
уже работает в Galo.
## What Changes
- Расширить `EditParams` новым блоком `Color`: баланс белого (Темп, Оттенок),
Вибрация (Vibrance), Насыщенность, Цветовой микшер (Тон/Насыщенность/Яркость
по оттенкам), Точечный цвет и Цветокоррекция.
- Сервер (Go): рендер цветовых правок на пикселях исходного объекта, порядок
операций — свет, затем цвет; результат записывается в те же роли `edit`,
`edit_thumb`, `edit_medium`, `edit_preview`.
- Клиент (TypeScript): цветовые ползунки и элементы управления в
`PhotoEditPanel`, живой превью через `light.wasm` с тестом паритета
(`wasmMatchesReference`).
- WASM (Rust): расширение `frontend/wasm/light/` цветовыми операциями и
пересборка `static/light.wasm`.
- Хранение: `photo.edit_params` остаётся `map[string]any` JSON-блоба — старые
фото без ключа `color` рендерятся без цветовых правок, миграций схемы не
требуется.
## Capabilities
### Modified Capabilities
- `photos`: требование «Неразрушающее редактирование фотографии» расширяется
цветовыми параметрами правок. Потребуется дельта-спека
`specs/photos/spec.md` в рамках этого изменения.
### New Capabilities
Нет — цветовое редактирование входит в существующую способность `photos`.
## Impact
- `backend/internal/photos/edit.go` — `ColorParams`, `EditParams.Color`,
`Normalized`/`IsEmpty`/`JSON`.
- `backend/internal/photos/edit_render.go` — `applyColor` / `applyColorRows`,
`decodeAndAdjust` применяет свет и цвет.
- `backend/internal/photos/edit_service.go` — валидация и сохранение без
изменений логики (параметр `color` добавится в JSON).
- `frontend/src/lib/edit.ts` — `ColorParams`, цветовые ползунки,
`readEditParams`/`isEmptyEditParams`/`normalizeEditParams` с цветом,
`applyColorToPixels`.
- `frontend/src/lib/light-wasm.ts` — вызов WASM для цвета, поддержка паритета.
- `frontend/src/lib/components/PhotoEditPanel.svelte` — новый раздел «Цвет».
- `frontend/src/lib/components/Viewer.svelte` — превью с цветом.
- `frontend/wasm/light/` (Rust) + `static/light.wasm` — цветовые операции.
- Тесты: `edit_test.go`, `edit.test.ts`, `light-wasm.test.ts`.