Правка сайта чатом - и ничего не сломать
Просьбу простыми словами легко показать на демо и трудно сделать безопасной. Как правка становится патчем к проверенному описанию сайта и попадает в черновик.
«Сделай шапку темнее и перенеси отзывы выше цен».
Показать такое на демо легко. Сделать это безопасным - вот настоящая работа, потому что главный риск не в неправильном цвете, а в том, что модель перепишет страницу, которую просили лишь слегка поправить, и по пути незаметно потеряет часы работы.
Сайт - это данные, а не код
Сайт здесь - это проверенное описание: страницы, разделы, содержимое, дизайн. В HTML его превращает только рендерер, больше никто. Поэтому правка никогда не трогает разметку - она меняет описание, а описание проверяется до сохранения.
«Проверяется» - это больше, чем «удалось разобрать». Межполевые правила ловят то, что схема сказать не может: два первых экрана на одной странице, статья без даты, страница, вложенная туда, где роутер её никогда не отдаст, таблица, привязанная к коллекции, которую сайт не объявлял. Такое отклоняется сразу, а не публикуется, чтобы обнаружиться позже.
Правка - это патч
Модель не просят вернуть новый сайт. Её просят выдать наименьший патч, который вносит изменение, относительно сайта в его текущем виде.
Одно это решение снимает большую часть опасности:
- Содержимое, которое правка не упоминает, измениться не может - его нет в ответе.
- Небольшое изменение - небольшой ответ, поэтому правки быстрые и дешёвые.
- Патч сохраняется, так что история говорит, что изменилось, а не только чем стал сайт.
Ничего не публикуется, пока вы не скажете
Каждая правка попадает в черновик. Редактор показывает черновик, а публичный сайт продолжает отдавать последнюю опубликованную версию, пока вы не опубликуете новую. Все версии сохраняются, поэтому вернуться назад - это один клик, а не извинения.
Есть ещё одна проверка, о которой стоит сказать, потому что она поймала настоящую ошибку. Если черновик изменился, пока шла долгая правка - например, вы внесли изменение в другой вкладке, - результат отклоняется, а не сливается:
"Пока выполнялась эта правка, в сайт было сохранено другое изменение. Пожалуйста, посмотрите текущий черновик и попробуйте снова.
Потерять правку неприятно. Молча затереть чужую - гораздо хуже.
Чего мы не будем делать
Мы не позволяем правке выдумывать факты. Правка, которая добавляет отзыв, которого никто не писал, или сертификат, которого ни у кого нет, - не функция, и то же правило, что управляет созданием сайта, управляет и правками.
Мы также не притворяемся, что изменение произошло, когда этого не было. Если запрос нельзя выразить как изменение описания, система так и скажет, а не выдаст что-то похожее в надежде, что сойдёт.