docs(openspec): изменение photo-color-editing
Предложение, дельта-спека photos, дизайн и задачи для инструмента «Цвет».
This commit is contained in:
@@ -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`.
|
||||
Reference in New Issue
Block a user