- proposal/design/tasks и delta-спеки photos, realtime - серверный признак edit_pending, бесшовная подмена предпросмотра, мгновенный сброс
8.0 KiB
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 клиент показывает эффекты доступным способом или показывает их после серверного рендера, не блокируя интерфейс