n8n · Zapier · Make: ремонт
Автоматизация приёма заказов теряла каждый восьмой заказ и молчала
Небольшая керамическая мастерская отправляла заказы из интернет-магазина в Google Таблицу, письмо-подтверждение клиенту и канал в Slack. Месяцами всё работало, потом заказы начали пропадать, а некоторые клиенты стали получать по два подтверждения. Никто ничего не замечал, пока покупатель не спросил, где его кружка.
На этой странице сам ремонт: что сломалось, почему и что изменилось после исправления. Обе версии сценария проходят одну и ту же смену, поэтому разница посчитана, а не заявлена.
Демо по моей инициативе. Компания Palewood Ceramics вымышленная: заказы, клиентов и сбои создаёт файл сценария, который входит в проект. А вот JSON сценариев, неисправности и ремонт такие же, с какими работает эта услуга.
На что жаловалась владелица
Четыре жалобы её словами. У каждой оказалась своя причина.
«Некоторые заказы просто не появляются в таблице».
Никакой закономерности: по несколько в день, и узнаёт она всегда от клиента.
«Несколько клиентов получили одно и то же подтверждение дважды».
Неловко, а двое решили, что деньги с них списали два раза.
«Иногда канал в Slack молчит по часу».
Автоматизация останавливалась посреди запуска. n8n об этом знал, больше никто.
«Я ей больше не доверяю и проверяю каждый заказ вручную».
В этом и настоящая цена: автоматизация ещё работала, но экономить время перестала.
Та же смена, запуск за запуском.
До · Приём заказов v3
- Строк записано в таблицу
- 0
- Запусков со сбоем
- 0
- Тревог отправлено
- 0
Потеряно насовсем:
После · Приём заказов v4
- Строк записано в таблицу
- 0
- Запусков со сбоем
- 0
- Тревог отправлено
- 0
Потеряно насовсем:
Одна и та же смена через обе версии
Одна пятичасовая смена: 120 заказов, 60 запусков по расписанию и одинаковые сбои в обоих прогонах. Хостинг магазина семь минут перезагружается, API магазина один раз упирается в лимит запросов и один раз отвечает ошибкой шлюза, Gmail дважды блокирует отправку по квоте, три заказа магазин публикует с опозданием на семь–девять минут, четыре клиента исправляют заказ через несколько минут после оформления. В одном заказе нет фамилии, в другом телефона, в третьем пустая почта, а на один адрес письма не доставляются совсем. Различаются только два файла сценария.
До: версия v3
order-intake-BROKEN.jsonПосле: версия v4
order-intake-FIXED.jsonЧто было сломано и почему
Шесть неисправностей. Фрагменты «до» и «после» берутся прямо из двух файлов сценария на этой странице, а не перепечатываются вручную, поэтому не могут разойтись с тем, что на самом деле работает.
Журнал запусков
Каждый запуск смены по расписанию, так, как n8n показал бы список выполнений. В сломанной версии сбои выделены красным, и ни один из них никому не прислал сообщения.
| Запуск | Время (UTC) | Статус | Записано | Отложено | Письма | Тревоги | Что произошло |
|---|---|---|---|---|---|---|---|
| Запустите сравнение выше, чтобы заполнить журнал. | |||||||
Как эта страница запускает сценарии
Чтобы ничего здесь не приходилось принимать на веру.
- Оба JSON-файла написаны в формате экспорта n8n (типы узлов, typeVersion, resource locator, настройки повторов и выходы для ошибок) и рассчитаны на загрузку через Workflows → Import from file. Оговорка: они написаны для этого демо и в работающем n8n не открывались, поэтому холст считайте непроверенным, а логику проверенной. Узлы, выражения и JavaScript в узлах Code те же, что во фрагментах выше.
- Страница выполняет эти файлы. Небольшой исполнитель в
engine/runner.jsпроходит те же узлы и связи, вычисляет те же выражения{{ … }}и по-настоящему запускает JavaScript из узлов Code. API магазина, Google Таблицы, Gmail и Slack заменены локальными заглушками с заранее заданными сбоями. - Обе версии получают одинаковую смену. Те же заказы, то же время, те же сбои и те же виртуальные часы, поэтому повтор через две секунды не спасает от семиминутного сбоя.
- Это не сам n8n. Исполнитель понимает девять типов узлов из этих сценариев (Schedule Trigger, Error Trigger, HTTP Request, Code, Split Out, IF, Google Sheets, Gmail и Slack) и не воспроизводит режим очереди n8n, параллельные запуски и интерфейс.
- Особенность n8n, о которой стоит знать перед проверкой: курсор и память об обработанных заказах хранятся в static data сценария, а n8n сохраняет их только для рабочих запусков активного сценария, не для ручных запусков из редактора. Поэтому при ручном нажатии «Execute workflow» будет казаться, что курсор не двигается.
- Одно отличие стоит назвать: исполнитель повторяет только элемент, на котором случился сбой. n8n повторяет весь узел и может повторить уже успешные элементы. Поэтому для узла с внешним действием (отправка письма) рабочая версия перебирает заказы по одному, и повтор не отправит письмо дважды. Такой цикл рекомендован следующим шагом в письменном отчёте о ремонте (он есть по запросу), а этот прогон его не доказывает.
- Цифры в панелях берутся из прогона, который вы только что запустили, а не вписаны в страницу. В проекте
node tests/run-tests.jsпроверяет те же цифры из командной строки: 38 проверок по файлам и обоим прогонам.
Что входит в ежемесячную поддержку
- Слежу за запусками. Сбои и тревоги приходят в канал, который я читаю, поэтому поломку замечаю я, а не клиент.
- Слежу за изменениями сервисов. Магазин, Google и Slack меняют API и лимиты, и автоматизация без присмотра тихо ломается посреди горячей недели.
- Небольшие изменения вслед за бизнесом. Новый тип товара, второй лист, ещё одно уведомление: всё это входит в поддержку в пределах оговорённых часов в месяц.
- Короткий отчёт раз в месяц: сколько заказов прошло, что ломалось и что я поменяла. Одна страница, без жаргона.