Отмена изменений
Обновлено
Два способа возврата
| Задача | Инструмент | Что возвращается |
|---|---|---|
| Отменить конкретную операцию агента | themes_restore |
Предыдущий текст файла либо прежние значения затронутых настроек |
| Убрать доработки изменённого файла | themes_revert_file |
Файл из установленной поставки со снятием пометки «изменён» |
Для themes_restore сохраните backup_id из результата записи и исходный target. Отмена также требует предпросмотра и подтверждения.
Отмени операцию с сохранённым backup_id для той же темы.
Сначала покажи, что вернётся, и дождись подтверждения.Возврат к поставке доступен для файла с пометкой «изменён», если в поставке есть оригинал. Для пробной темы инструмент возвращает trial_theme. Новый файл без оригинала удаляют отменой его добавления через themes_restore. Отдельного инструмента произвольного удаления файлов нет.
В диалоге показаны предпросмотр отмены, согласие пользователя и результат возврата index.html к поставке.
Защита последующих изменений
Отмена проверяет, что файл или затронутые ключи настроек всё ещё содержат результат отменяемой операции. Если их уже изменили, возвращается restore_conflict и восстановление не выполняется. Изменения других ключей настроек сами по себе не мешают отмене.
У JSON-настройки проверяется значение всего ключа: последующее изменение другого пункта того же списка тоже может помешать отмене.
Отмена добавления удаляет созданный файл и созданные той операцией папки, если они пусты. Каталог самой темы плагин не удаляет. Копия темы, созданная первой правкой, может остаться после отмены.
Где лежат резервные копии
wa-data/protected/mcp/plugins/themedesign/backups/<app>/<theme>/<backup_id>.jsonЭто закрытое серверное хранилище, одна запись на операцию. Оно содержит данные до и после изменения и сведения об операции. Не используйте его как постоянную резервную копию всего сайта.
Срок хранения — 90 дней, общий лимит — 200 записей. Очистка запускается при создании следующих записей: сначала удаляются просроченные, затем лишние, с приоритетом уже отменённых или откаченных. Свежие незавершённые операции и необходимые записи текущей отмены защищены на сутки, поэтому лимит временно может превышаться. Отдельно настраивать cron для очистки не требуется.
После удаления записи themes_restore возвращает backup_not_found. Возврат существующего изменённого файла к поставке не зависит от этой копии, но требует наличия оригинала и выполнения остальных условий инструмента.
Если сохранение завершилось ошибкой
Ошибка после начала изменения может содержать backup_id и rollback_status. Сохраните их и передайте разработчику.
| Статус | Значение и следующий шаг |
|---|---|
not_written |
Изменение не было записано; прочитайте текущее состояние перед повтором |
rolled_back |
Автоматический откат вернул данные операции; созданная копия темы может остаться |
rolled_back_content_only |
Содержимое возвращено, но полное восстановление пометок не подтверждено; проверьте редактор дизайна |
rollback_conflict |
Автоматический откат обнаружил конфликт; перечитайте тему и сравните содержимое |
rollback_failed |
Автоматический откат не завершён; нужна проверка разработчиком |
Для некоторых незавершённых операций themes_restore поддерживает восстановление по backup_id, если текущее состояние узнаваемо. Сначала выполните предпросмотр: обходить restore_conflict повторным подтверждением нельзя.
Если предупреждение сообщает о неудачном копировании темы, её копия может быть неполной. Сравните её с поставкой и проверьте в редакторе дизайна. Ошибка leftover_copy означает оставшийся каталог без theme.xml: разработчику нужно проверить указанный в ответе путь и исправить ситуацию вручную.