Точка возврата

Точка возврата

Prof-inet
10 установок
от 499 ₽3 999 ₽ год / 9 999 ₽ навсегда

Оперативная поддержка — быстро отвечаем и помогаем! Предлагайте новые функции и настройки — добавим их по вашим пожеланиям.

Точка возврата — история изменений и выборочное восстановление данных товаров

Ошиблись в цене, заменили удачное описание или получили нежелательные изменения после импорта? «Точка возврата» сохраняет наблюдаемые версии данных товаров, показывает разницу и помогает вернуть выбранные поля. Можно восстановить цену, сохранив новые описания, или вернуть SEO-заголовок, не затрагивая другие данные.

Плагин предназначен для Shop-Script. Все разделы имеют отдельные настройки: вы выбираете, какие изменения записывать и какие разрешать восстанавливать. Интерфейс и подсказки на русском языке. История хранится внутри вашей установки Webasyst; внешний сервис для записи истории не нужен.

Что умеет первая версия

Вести историю цены продажи и зачёркнутой цены каждого существующего артикула. Запись закупочных цен включается отдельно и по умолчанию выключена.

Записывать название товара, краткое и полное описание.

Отдельно сохранять SEO title, meta description и meta keywords.

Фиксировать привязанные к товару значения характеристик. Возвращать строковые, текстовые, числовые характеристики и цвета при неизменном справочнике.

Показывать прежнее, записанное после изменения и текущее значение в одном сравнении.

Восстанавливать выбранные поля с повторной проверкой конфликтов непосредственно перед записью.

Создавать новую запись после успешного восстановления. При отсутствии конфликтов можно отменить и само восстановление.

Фильтровать историю по ID товара и источнику события; просматривать записи по страницам.

Отправлять администратору email после восстановления и периодическую сводку новых записей.

Проверять каталог порциями вручную или по cron, продолжая с места остановки.

Пример работы

Цена лампы была 4900, а после редактирования стала 3900. Одновременно изменилось краткое описание. Откройте запись в истории, отметьте только цену и укажите причину возврата. Если текущая цена по-прежнему 3900, плагин вернёт 4900 и оставит новое описание. Если цену уже успели изменить ещё раз, поле будет заблокировано для возврата из этой записи. Принудительного перезаписывания более свежих правок нет.

Как установить

Войдите в Webasyst под администратором и откройте приложение «Установка».

Найдите «Точка возврата» среди плагинов Shop-Script, выберите подходящую лицензию и установите плагин штатными средствами Webasyst. Доступность установки зависит от публикации продукта в каталоге и вашей лицензии.

В Shop-Script откройте «Плагины» → «Точка возврата». Для доступа нужны права администратора магазина.

Выберите нужные разделы, настройте переключатели и нажмите «Сохранить настройки».

Откройте «Обзор» и нажимайте «Проверить каталог», пока не будет завершён полный проход. При большом каталоге сразу настройте cron.

Убедитесь, что число товаров со снимком соответствует каталогу. Проверяйте дату полного прохода. С этого момента у товаров есть исходная версия для сравнения.

Для проверки измените безопасное поле собственного закрытого тестового товара. Найдите запись в истории и проверьте сравнение.

Архив для технической установки имеет единственный корневой каталог returnpoint . Код размещается в wa-apps/shop/plugins/returnpoint/ . Штатная установка также создаёт таблицы истории и регистрирует плагин. Простое копирование файлов без выполнения установки схемы недостаточно. Устанавливать архив вручную рекомендуется техническому специалисту с резервной копией базы и файлов.

Обзор и первый снимок

На обзоре видны число товаров с исходным снимком, количество записей, срок хранения, время последней проверки и последнего полного прохода. Первая проверка товара сохраняет его текущее состояние, но не создаёт вымышленную запись о прежних изменениях. Плагин не знает значений до установки или до первого снимка.

Общий переключатель «Записывать историю» приостанавливает наблюдение. После повторного включения формируются новые исходные версии; изменения за время паузы не выдаются за наблюдавшиеся события. Аналогичное правило действует при включении отдельного раздела.

Настройки цен

«Записывать изменения» включает цены продажи и зачёркнутые цены существующих артикулов.

«Учитывать закупочные цены» добавляет закупочные цены в историю. По умолчанию выключено.

«Разрешить восстановление» разрешает возврат цен совместно с общим переключателем восстановления.

Плагин проверяет валюту, тип товара, состав артикулов, единицы измерения и коэффициенты, сохранённые в контексте записи. Если контекст изменился, возврат цен блокируется. Валюта, коэффициенты и структура артикулов не восстанавливаются. Расчёт производных цен выполняется средствами Shop-Script; складские количества из истории не возвращаются.

Настройки текстов и SEO

«Тексты товаров» и «SEO» — независимые разделы. В каждом отдельно включаются запись и восстановление. Для текстов доступны название, краткое и полное описание. Для SEO — заголовок, описание и ключевые слова. В сравнении HTML отображается безопасно как текст, а при восстановлении сохраняется исходное содержимое поля. URL товара, редиректы, изображения и файлы не входят в эти разделы.

Настройки характеристик

Записываются значения, назначенные всему товару. Возврат доступен для типов строка, текст, число и цвет. Изменения других типов видны в истории как набор идентификаторов и не восстанавливаются. Характеристики отдельных артикулов и варианты выбора не перезаписываются.

Перед возвратом проверяется, что характеристика и её прежние значения существуют, а схема и данные справочника не изменились. Плагин не создаёт заново удалённые определения или значения. Добавленное значение можно убрать возвратом соответствующего поля, если проверка пройдена. Изменение структуры артикула или контекста товара блокирует возврат характеристики.

Как восстановить данные

Откройте «История изменений».

При необходимости укажите ID товара и выберите источник: сохранение, проверка каталога или восстановление.

Нажмите «Сравнить» у нужной записи.

Сопоставьте три колонки. «Прежнее значение» — то, которое будет возвращено; «После изменения» — значение из выбранного события; «Сейчас» — результат свежего чтения товара.

Отметьте только нужные поля. Поля с конфликтами выбрать нельзя.

Введите причину. По умолчанию требуется от 3 до 500 символов.

Отметьте подтверждение и нажмите «Восстановить выбранное».

Дождитесь сообщения об успехе, проверьте новую запись и карточку товара.

За одну операцию можно выбрать от 1 до 100 полей одного товара. Если хотя бы одно выбранное поле не проходит повторную проверку, операция не применяется. Общий переключатель «Разрешить восстановление» позволяет оставить плагин в режиме наблюдения и просмотра. Доступ для отдельных сотрудников в первой версии не настраивается: нужен статус администратора Shop-Script.

Защита при восстановлении

Запросы защищены проверкой прав администратора и CSRF-кода. Непосредственно перед записью значения повторно сравниваются под блокировкой таблиц. На время короткой операции другие обращения к заблокированным таблицам могут ожидать её завершения. Это следует учитывать в магазинах с высокой нагрузкой.

Перед изменением создаётся закрытый аварийный журнал. При обрабатываемой ошибке плагин пытается вернуть состояние начала операции, пока блокировка удерживается. При аварийном завершении процесса или неудачной компенсации журнал сохраняется, а следующее восстановление этого товара блокируется. Это не полная транзакционная резервная копия: такой случай требует проверки специалистом. Не удаляйте аварийный журнал без анализа.

Email-уведомления

Откройте «Уведомления» и включите отправку.

Введите один email администратора.

Выберите уведомления после восстановления и/или сводку новых записей.

Укажите интервал сводки: от 1 до 168 часов; по умолчанию 24 часа.

Сохраните настройки и отправьте тестовое письмо.

Проверьте входящие и спам. Если письмо не пришло, проверьте почтовый транспорт Webasyst и настройки отправителя.

Сообщение об успешной отправке означает, что письмо принято почтовым транспортом, а не гарантированно доставлено. В уведомлении о возврате указываются ID товара, число полей, номер записи и введённая причина. Полные описания и закупочные цены автоматически в письмо не добавляются. Не включайте конфиденциальные сведения в причину, если не хотите отправлять их получателю.

Сводка формируется только при работающем cron. Отсчёт первого интервала начинается с первого запуска cron после включения сводки. При отсутствии новых записей письмо не отправляется. Интервал — минимальный: фактическая отправка происходит при ближайшем запуске планировщика.

Cron: автоматическая проверка каталога

В разделе «Хранение и расписание» включите проверки по cron. В панели хостинга создайте задание:

php /путь/к/webasyst/cli.php shop returnpointPluginScan

Замените php на путь к поддерживаемой версии PHP, а путь к cli.php — на абсолютный путь вашей установки. Начальный вариант расписания — каждые 5 минут, */5 * * * * . После сохранения дождитесь запуска и проверьте время последнего cron в плагине. Не добавляйте несколько одинаковых заданий.

Один запуск обрабатывает одну порцию: по умолчанию 100 товаров, настраивается от 10 до 500. Следующий запуск продолжает проход. При 1000 товарах, порции 100 и интервале 5 минут полный проход занимает около 50 минут, плюс время выполнения. Для более быстрой проверки увеличьте порцию или уменьшите интервал с учётом ресурсов хостинга.

Событие сохранения Shop-Script записывает наблюдаемые изменения без ожидания очередного обхода. Cron дополняет его для импортов и интеграций, которые обходят это событие. Если между проверками одно поле менялось несколько раз, плагин увидит итоговое состояние. Восстановление всех промежуточных состояний прямого импорта не гарантируется.

Хранение и нагрузка

Срок истории настраивается от 7 до 3650 дней; по умолчанию 90 дней. Во время проверок удаляется до 1000 просроченных записей за запуск. Уменьшение срока приведёт к необратимому удалению старой истории при следующих проверках. Текущие исходные снимки сохраняются отдельно и не очищаются по этому сроку.

Объём базы зависит от количества товаров, длины описаний, характеристик и частоты изменений. Это не фиксированный лимит в мегабайтах. Для часто обновляемого каталога контролируйте размер базы и выберите разумный срок. Удаление плагина штатными средствами может удалить его данные — перед удалением сделайте резервную копию.

Частые вопросы

Почему история пустая? Первый снимок ещё не создан либо после него не было наблюдаемых изменений. Проверьте общий переключатель, настройки раздела и фильтры истории.

Почему поле нельзя вернуть? Оно изменилось позднее, соответствующий раздел выключен, изменился контекст товара или справочник характеристики. Подсказка рядом с полем объяснит причину. Выберите более свежую запись и сравните данные заново.

Можно ли восстановить удалённый товар? Нет. Первая версия возвращает поддерживаемые поля существующих товаров и существующих артикулов.

Кто указан автором? Для события сохранения в админпанели — ID текущего администратора. Для обхода каталога и событий без контекста пользователя автор не установлен. Это информация об источнике наблюдения, а не доказательство того, кто выполнил прямую запись в базу.

Можно ли отменить импорт целиком? Массового отката всего импорта одной кнопкой нет. Возврат выполняется по выбранным полям одного товара. Ненаблюдавшиеся промежуточные версии восстановить нельзя.

Что делать с аварийным журналом? Остановите повторные попытки возврата этого товара и передайте ситуацию специалисту. Журналы находятся в закрытом каталоге данных Shop-Script plugins/returnpoint/recovery/ . Нужны сравнение с текущей базой и анализ последующих правок. Автоматического принудительного восстановления такого журнала нет.

Требования и ограничения

Shop-Script 12.1 или новее, интерфейс Webasyst 2.0; PHP 7.4 или новее. Фактическая проверка проведена на Shop-Script 12.1 и PHP 8.2.

Доступ на запись в закрытый каталог данных и собственные таблицы плагина.

Разрешение LOCK TABLES у пользователя базы для восстановления. Проверено на таблицах товаров MyISAM; плагин не переводит базу на другой движок.

Работающий планировщик хостинга для периодических обходов и сводок; настроенный почтовый транспорт для email.

Заказы, оплаты, доставка, остатки, фотографии, файлы, удалённые товары, структура артикулов и страницы приложения «Сайт» не восстанавливаются.

Сторонние поисковые индексы, витринные кеши и интеграции могут потребовать отдельного обновления. Их реакции после возврата следует проверить на тестовом товаре.

Плагин дополняет регулярное резервное копирование, но не заменяет его. Скриншоты показывают интерфейс с демонстрационными товарами и адресом получателя.

Поддержка: Prof-inet.ru . При обращении укажите версии Shop-Script, PHP и плагина, последовательность действий и текст ошибки. Не отправляйте пароли.