docs(openspec): изменение fix-edit-preview-handoff
- proposal/design/tasks и delta-спеки photos, realtime - серверный признак edit_pending, бесшовная подмена предпросмотра, мгновенный сброс
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# Spec Delta: photos
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Признак незавершённого рендера правок
|
||||
|
||||
Фото в ответах API и в событиях `photo.updated` SHALL содержать булево поле `edit_pending`. Оно SHALL быть `true`, пока серверный рендер сохранённых правок не завершён, и `false`, когда рендера нет или он завершён. Пока `edit_pending` равно `true`, URL отредактированных вариантов SHALL NOT считаться актуальными, даже если они присутствуют. Поле SHALL быть аддитивным: клиент, который его не читает, продолжает работать как раньше.
|
||||
|
||||
#### Scenario: Сохранение правок
|
||||
|
||||
- **WHEN** правки фото сохранены, а серверный рендер ещё не завершён
|
||||
- **THEN** ответ на сохранение и событие `photo.updated` содержат `edit_pending=true`
|
||||
|
||||
#### Scenario: Предыдущий рендер устарел
|
||||
|
||||
- **WHEN** у фото уже есть отрендеренная версия, а для новых сохранённых правок рендер ещё не завершён
|
||||
- **THEN** фото содержит `edit_pending=true`, а URL отредактированных вариантов не выдаются за актуальные
|
||||
|
||||
#### Scenario: Готовность рендера
|
||||
|
||||
- **WHEN** серверный рендер сохранённых правок завершён
|
||||
- **THEN** `edit_pending=false`, а URL отредактированных вариантов соответствуют сохранённым правкам
|
||||
|
||||
#### Scenario: Сброс правок
|
||||
|
||||
- **WHEN** правки фото сброшены
|
||||
- **THEN** `edit_pending=false` и URL отредактированных вариантов отсутствуют
|
||||
|
||||
### Requirement: Мгновенный показ сброса правок
|
||||
|
||||
Клиент SHALL показывать исходный вид фото сразу после возврата контролов редактора в значения по умолчанию или нажатия сброса, не дожидаясь отложенного сохранения на сервер. Пока сброс, выполненный возвратом контролов, ещё не отправлен, просмотрщик SHALL NOT показывать отредактированную версию фото.
|
||||
|
||||
#### Scenario: Сброс возвратом контролов
|
||||
|
||||
- **WHEN** пользователь возвращает контролы редактора в значения по умолчанию (двойной клик по ползунку, шкала в нуле)
|
||||
- **THEN** просмотрщик сразу показывает исходный вид, не дожидаясь срабатывания отложенного сохранения
|
||||
|
||||
#### Scenario: Сброс кнопкой
|
||||
|
||||
- **WHEN** пользователь нажимает «Сброс»
|
||||
- **THEN** просмотрщик показывает исходный вид не позже ответа на запрос сброса
|
||||
|
||||
#### Scenario: Сброс при готовом рендере
|
||||
|
||||
- **WHEN** сброс выполнен, а отредактированная версия ещё существует на сервере
|
||||
- **THEN** просмотрщик показывает исходный вид, а не отредактированную версию
|
||||
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Живой предпросмотр цветовых правок
|
||||
|
||||
Клиент SHALL показывать результат цветовых правок в просмотрщике до завершения серверного рендера. Пока серверный рендер сохранённых правок не завершён (`edit_pending`) или пока локальные правки не сохранены, клиент SHALL показывать клиентский предпросмотр поверх исходной версии. После завершения рендера SHALL показываться серверная версия. Клиент SHALL NOT показывать исходную или предыдущую отрендеренную версию между предпросмотром и серверной версией: подмена SHALL выполняться только после загрузки нового изображения.
|
||||
|
||||
#### Scenario: Правки видны сразу
|
||||
|
||||
- **WHEN** пользователь двигает цветовой контрол
|
||||
- **THEN** просмотрщик обновляет изображение без ожидания серверного рендера
|
||||
|
||||
#### Scenario: Серверная версия заменяет предпросмотр
|
||||
|
||||
- **WHEN** серверный рендер цветовых правок завершён
|
||||
- **THEN** просмотрщик показывает отрендеренную версию
|
||||
|
||||
#### Scenario: Бесшовная подмена предпросмотра
|
||||
|
||||
- **WHEN** серверный рендер завершён, но новое изображение ещё загружается
|
||||
- **THEN** просмотрщик продолжает показывать предпросмотр и не показывает оригинал или предыдущую отрендеренную версию
|
||||
|
||||
### Requirement: Живой предпросмотр эффектов
|
||||
|
||||
Клиент SHALL показывать эффекты в просмотрщике до завершения серверного рендера. Пока серверный рендер сохранённых правок не завершён (`edit_pending`) или пока локальные правки не сохранены, клиент SHALL показывать клиентский предпросмотр поверх исходной версии. После готовности серверной версии клиент SHALL показывать её после загрузки нового изображения, не показывая в промежутке оригинал или предыдущую отрендеренную версию. Предпросмотр пространственных эффектов (текстура, чёткость, дымка) MAY отличаться от серверного рендера деталями, но SHALL передавать характер эффекта.
|
||||
|
||||
#### Scenario: Эффекты видны сразу
|
||||
|
||||
- **WHEN** пользователь двигает ползунок эффекта
|
||||
- **THEN** просмотрщик обновляет изображение без ожидания серверного рендера
|
||||
|
||||
#### Scenario: Серверная версия заменяет предпросмотр
|
||||
|
||||
- **WHEN** серверный рендер эффектов завершён
|
||||
- **THEN** просмотрщик показывает серверную версию
|
||||
|
||||
#### Scenario: Бесшовная подмена предпросмотра
|
||||
|
||||
- **WHEN** серверный рендер эффектов завершён, но новое изображение ещё загружается
|
||||
- **THEN** просмотрщик продолжает показывать предпросмотр и не показывает оригинал или предыдущую отрендеренную версию
|
||||
|
||||
#### Scenario: Предпросмотр без WebGL
|
||||
|
||||
- **WHEN** аппаратное ускорение недоступно
|
||||
- **THEN** клиент показывает эффекты доступным способом или показывает их после серверного рендера, не блокируя интерфейс
|
||||
Reference in New Issue
Block a user