chore(openspec): архивировать photo-effects-editing и обновить photos
Изменение применено к основной спеке photos: эффекты, виньетка, зерно, живой предпросмотр, свёрнутые секции панели и редактирование из просмотрщика. Change перемещён в archive.
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
# Proposal
|
||||
|
||||
## Why
|
||||
|
||||
В неразрушающем редакторе Galo сейчас есть только блоки «Свет» и «Цвет»:
|
||||
экспозиция, тональная кривая, баланс белого, микшер и цветокоррекция. Не хватает
|
||||
эффектов, которые в Lightroom собраны в панели «Эффекты»: текстура, чёткость,
|
||||
удаление дымки, виньетка и зерно. Это последний крупный блок базовой обработки,
|
||||
после которого веб-редактор покрывает привычный набор Lightroom.
|
||||
|
||||
## What Changes
|
||||
|
||||
- Добавить в `EditParams` блок `Effects`:
|
||||
- **Текстура** — локальный контраст высоких частот (unsharp mask по яркости).
|
||||
- **Чёткость** — локальный контраст средних частот с защитой от ореолов.
|
||||
- **Убрать дымку** — оценка дымки (dark channel prior) и возврат контраста и
|
||||
насыщенности.
|
||||
- **Виньетка** — три режима, как в макете: «Свет», «Цвет», «Закарасить»
|
||||
(заливка). Параметры: сила, средняя точка, растушёвка, округлость, света;
|
||||
для цветных режимов — цвет виньетки.
|
||||
- **Зерно** — сила, размер, шероховатость; шум детерминирован для повторных
|
||||
рендеров.
|
||||
- Сервер (Go): применять эффекты после света и цвета при рендере редактированной
|
||||
версии; результат по-прежнему пишется в роли `edit`, `edit_thumb`,
|
||||
`edit_medium`, `edit_preview`, оригинал не меняется.
|
||||
- Клиент (Svelte/TS): раздел «Эффекты» в панели правок с вкладками виньетки;
|
||||
живой предпросмотр эффектов в просмотрщике до готовности серверного рендера.
|
||||
- Панель правок: все секции инструментов по умолчанию свёрнуты, состояние
|
||||
каждой секции сохраняется в браузере (`localStorage`).
|
||||
- Вкладка «Редактирование» доступна только в просмотрщике: в режиме сетки
|
||||
правая панель показывает только «Сведения».
|
||||
- WebGL2-превью: перейти с одного прохода на многопроходную схему (FBO,
|
||||
разделимое размытие, карта дымки) для пространственных эффектов.
|
||||
- Обратная совместимость: `edit_params` остаётся JSON-блобом, фото без ключа
|
||||
`effects` рендерятся как раньше; миграции схемы БД не требуется.
|
||||
- Android-клиент не меняется: он показывает уже отрендеренные версии.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
Нет — эффекты входят в существующую способность `photos`.
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- `photos`: требование «Неразрушающее редактирование фотографии» расширяется
|
||||
параметрами эффектов; добавляются требования к виньетке, зерну, пространственным
|
||||
эффектам и их живому предпросмотру.
|
||||
|
||||
## Impact
|
||||
|
||||
- `backend/internal/photos/edit.go` — модель `EffectsParams`, нормализация,
|
||||
`IsEmpty`, сериализация.
|
||||
- `backend/internal/photos/handlers.go` — приём блока `effects` в
|
||||
`PATCH /photos/:id/edit` (у обработчика собственный request-структ).
|
||||
- `backend/internal/photos/edit_render.go` — порядок проходов рендера и новые
|
||||
эффекты; вероятно отдельный файл с пространственными операциями (blur,
|
||||
dark channel, виньетка, зерно).
|
||||
- `frontend/src/lib/edit.ts` — типы, дефолты, нормализация, CPU-реализация
|
||||
попиксельных эффектов (виньетка, зерно) для фолбэка.
|
||||
- `frontend/src/lib/webgl-preview.ts`, `Viewer.svelte` — многопроходный
|
||||
предпросмотр эффектов.
|
||||
- `frontend/src/lib/components/PhotoEditPanel.svelte` — раздел «Эффекты»,
|
||||
вкладки виньетки, цвет виньетки; свёрнутые по умолчанию секции; `EditSlider.svelte`
|
||||
переиспользуется.
|
||||
- `frontend/src/lib/editor-sections.ts` — состояние сворачивания секций в
|
||||
`localStorage` и его нормализация.
|
||||
- `frontend/src/lib/components/PhotoPanel.svelte` — вкладка «Редактирование»
|
||||
только при открытом просмотрщике.
|
||||
- Тесты: `edit_test.go`, `edit.test.ts`, новый e2e-сценарий правки с эффектами,
|
||||
бенчмарк пространственных проходов; проверка компиляции GL-шейдеров.
|
||||
- Миграции БД и Android-клиент не затрагиваются.
|
||||
Reference in New Issue
Block a user