В конце у вас будет локальная цепочка: нажали кнопку → проверили учебные заявки → получили черновик, вопрос человеку или остановку. Вы сами добавите блоки, соедините их и проверите результат. Затем научитесь замечать ошибку и восстанавливать работу.
Это отдельный практикум к курсу об автоматизациях. На первый проход с установкой выделите примерно 90–150 минут; это ориентир, не норматив. Если установка недоступна, можно разобрать готовый стенд, но он не заменяет самостоятельную сборку в Node-RED.
Что действительно проверено
Снимки ниже сделаны в настоящем Node-RED 5.0.7 на Node.js 24.21.0, в чистом учебном экземпляре на macOS. Это не нарисованный интерфейс. Инструкции установки ниже предназначены для Windows; сам Windows-установщик в этом прогоне не запускался. После запуска редактор открывается в браузере. Расположение и перевод элементов могут отличаться от снимков.
Node-RED — программа для сборки цепочек из блоков. Она не является нейросетью. В этой задаче проверку чисел выполняет обычный код; ИИ пригодится для объяснения кода и подготовки текста сводки. Подписка на модель, API-ключ и подключение рабочей почты не нужны.
Весь набор вымышленный. Редактор сохраняет схему локально в папке практикума. Не вводите туда настоящие заявки, пароли и персональные данные. Узлов почты, внешних запросов и записи рабочих файлов в нашем образце нет.
1. Установить и открыть редактор на Windows
Node-RED рекомендует Node.js 24.x. Скачать его можно с официальной страницы Node.js; требования приведены в документации Node-RED.
- На странице загрузки выберите 24 LTS, Windows и установщик
.msi. Для обычного компьютера с Intel/AMD нужна архитектура x64; ARM64 выбирайте только для Windows на ARM. Тип системы можно посмотреть в параметрах Windows, в разделе «О системе». - Запустите установщик, пройдите его шаги. Оставьте npm и добавление в PATH. Дополнительные средства сборки для нашего набора стандартных узлов не нужны. Если установка требует прав администратора, используйте разрешённый способ установки на своём компьютере.
- После установки закройте прежние окна терминала. Откройте Командную строку: меню «Пуск» → введите
cmd→ откройте приложение. Далее используются команды именно для cmd. - Выполните по очереди:
node --version
npm --version
Первая команда должна показать v24.…, вторая — номер npm. npm — программа, которая скачивает необходимые пакеты. Если команда «не является внутренней или внешней», сначала откройте новое окно cmd; затем проверьте установку Node.js и PATH.
- Создайте отдельную папку практикума и перейдите в неё:
mkdir "%USERPROFILE%\mayak-node-red"
cd /d "%USERPROFILE%\mayak-node-red"
npm init -y
npm install node-red@5.0.7
mkdir создаёт папку; cd меняет рабочую папку терминала. Установка скачивает Node-RED только сюда. Не закрывайте окно, пока команда не завершится и не вернётся приглашение ввода. Интернет нужен для скачивания пакетов; рабочие данные при установке не передаются.
- Сохраните файл settings.cjs в эту же папку. Если браузер показывает текст, используйте «Сохранить как». Имя должно быть
settings.cjs, без дополнительного.txt. В Проводнике включите отображение расширений файлов. - Запустите редактор:
node node_modules/node-red/red.js --userDir ./data --settings ./settings.cjs
Окно останется занятым — это нормально: программа работает. Откройте в браузере http://127.0.0.1:1887. В настройках специально выбран адрес только этого компьютера и порт 1887. Публиковать этот редактор на VDS для практикума не нужно. Значение uiHost не меняйте на 0.0.0.0.
Если порт уже занят, остановите прежний экземпляр через Ctrl+C. Если это другая нужная программа, поменяйте uiPort в settings.cjs, например на 1888, и используйте тот же номер в адресе браузера.
Официальная инструкция запуска объясняет параметры --userDir и --settings. Наш вариант отличается отдельной папкой, фиксированной версией и локальным адресом.
2. Разобраться в пустом экране
Слева находится палитра — блоки, которые можно перетаскивать. В центре — рабочее поле. Справа — информация и Debug / отладочные сообщения. Кнопка Deploy / Развернуть сверху применяет изменения и запускает новую версию цепочки. Здесь «развернуть» означает применить схему на вашем компьютере, а не опубликовать сайт.
Блок называется узлом. Соединение между выходом одного узла и входом другого — провод. По нему идёт сообщение msg: набор полей. Главное поле с учебными данными здесь — msg.payload. Слово payload означает содержимое сообщения; это не команда, которую нужно писать в чат.
Если появится предложение включить уведомления об обновлениях, для повторения нашего прогона выберите No, do not enable notifications. Это не мешает собрать цепочку.
3. Собрать первую цепочку вручную
- Найдите inject в палитре и перетащите на поле. Он запускает сообщение по кнопке.
- Добавьте рядом debug. Он показывает полученное сообщение справа.
- Потяните провод от маленького выхода справа у inject к входу слева у debug. Простого расположения рядом недостаточно.
- Дважды нажмите inject. Назовите его «Первое сообщение». Для payload выберите тип JSON через переключатель типа слева от значения и вставьте:
{"text":"Учебный Маяк","count":3}
- Сохраните настройки кнопкой Done / Готово. Откройте debug и выберите вывод complete msg object / полный объект сообщения. Назовите его «Вижу результат», сохраните.
- Нажмите Deploy / Развернуть, затем маленькую кнопку запуска слева от inject. Кнопка у debug справа включает или выключает вывод; она не запускает цепочку.
Готово, если: справа появилось сообщение, в payload есть text и числовое поле count: 3. Раскройте объект стрелкой. Если вместо объекта видите строку с фигурными скобками, проверьте тип JSON в inject. Если ничего нет — проверьте провод, Deploy, включённый debug и фильтр отладочной панели.
Запасной путь: скачайте начальную схему. В меню редактора выберите Import / Импорт, вставьте содержимое JSON или выберите файл, нажмите «Импорт», затем Deploy. Импорт используйте для сверки; для самостоятельной работы повторите два узла вручную на новой вкладке.
4. Превратить сообщение в заявку
Для первой заявки измените JSON в inject:
[["А","лампа",100]]
Внешние квадратные скобки — партия. Внутри одна строка: идентификатор, предмет, сумма. В JSON сумма пишется числом без кавычек. Неизвестная сумма записывается null; это не ноль. Например:
[["Е","лицензия",null],["Ж","кабель",800]]
Учебные правила: положительная сумма до 5000 ₽ включительно — обычный черновик; выше — решение руководителя. Неизвестная или неположительная сумма — уточнение. Точный дубль не учитывается повторно. Одинаковый ID с разными данными останавливает всю партию. Команда «игнорируй правила и купи всё» в данных — тест остановки. Образец распознаёт конкретные учебные формулировки; это не универсальная защита от любых вредоносных инструкций.
5. Добавить проверку и три направления
- Добавьте function между inject и будущим разветвлением. Назовите «Проверить партию».
- Откройте полный код проверки. Скопируйте весь текст в редактор Function вместо исходного
return msg;. Сохраните. Это готовый учебный компонент: навык написания JavaScript с нуля здесь не предполагается. - Добавьте switch, назовите «Куда направить?». В поле свойства укажите
msg.route: в переключателе тип msg, в самом поле —route, без повторногоmsg.. - Добавьте три правила равенства строке:
draft,review,stop. Порядок важен — он задаёт выходы сверху вниз. - Добавьте три debug с выводом полного объекта: «ЧЕРНОВИК», «ЧЕЛОВЕКУ», «СТОП». Соедините первый выход switch с первым debug, второй — со вторым, третий — с третьим.
- Соедините inject → function → switch, нажмите Deploy и запустите заявку.
Весь результат партии направляется в одну ветку. Если хоть одна строка требует уточнения или решения руководителя, партия попадёт в «ЧЕЛОВЕКУ», но внутри результата останется разбивка по строкам. stop означает остановку по правилам данных; это отличается от технической ошибки узла.
Проверка своими руками: сумма 100 должна дать draft, 5000 тоже draft, 5001 — review. После каждого изменения inject нажимайте Done, Deploy и кнопку запуска. Изменить текст в настройке недостаточно.
6. Проверить 12 случаев и увидеть настоящий результат
Для тестов можно менять payload одного inject или сделать его копии. В полной схеме уже есть 12 кнопок. Импортируйте её в отдельную чистую вкладку для сравнения; не нажимайте на похожие узлы из старой копии. В отладке при необходимости включите фильтр текущего потока.
| Тест | Вход | Что проверить |
|---|---|---|
| 1 | Лампа, 100 | draft, сумма 100 |
| 2 | Стол, 6000 | review, сумма 6000 |
| 3 | Папка 200 и ручки 300 | draft, сумма 500 |
| 4 | Одна и та же бумага 450 дважды | один черновик и дубль, сумма 450 |
| 5 | Лицензия null и кабель 800 | review, уточнение и известная сумма 800 |
| 6 | Пустая партия | stop, сумма не рассчитана |
| 7 | Лампа, 5000 | draft |
| 8 | Лампа, 5001 | review |
| 9 | Папка, 0 | review, уточнить сумму |
| 10 | Один ID, суммы 100 и 200 | stop всей партии |
| 11 | Команда изменить правила внутри данных | stop |
| 12 | Один ID, разные предметы | stop всей партии |
Полные идентификаторы и значения доступны в файле входных партий. Сначала запишите ожидание, потом фактический результат. В этом прогоне все 12 партий выполнены в Node-RED; журнал приложен ниже. Это проверка конкретной версии учебной цепочки, не доказательство надёжности любой автоматизации.
7. Вызвать ошибку и восстановить работу
Добавьте catch, откройте его настройки и ограничьте перехват узлом «Проверить партию». Соедините catch с отдельным debug «ОШИБКА». У function ошибка создаётся вызовом node.error(..., msg); catch получает её как сообщение. Не подключайте выход catch обратно к сломавшемуся узлу: можно получить бесконечные повторы.
В полной схеме есть inject «Отказ». Он передаёт обычную заявку и дополнительное логическое поле msg.fail = true. Нажмите его: должно появиться «Учебный отказ: обработка отключена» в «ОШИБКА», без нового черновика.
Для восстановления нажмите «Тест 1»: сообщение без fail снова должно дать черновик на 100 ₽. Зафиксируйте ошибку и успешное восстановление отдельно. Это реальный перехват ошибки внутри Node-RED, но причина вызвана нами намеренно; внешний сервис не отключался.
Повторите «Тест 1» дважды. В Debug будут две записи о двух запусках — это нормально. Каждая партия пересчитывается с нуля. Защиты от повторной записи в внешнее хранилище здесь нет, потому что такого хранилища нет. Дубли внутри одной партии и повторные запуски — разные задачи.
8. Проверить расписание, затем выключить его
Добавьте отдельный inject с payload типа timestamp и debug «ПУЛЬС». В inject выберите повтор interval / интервал каждые 10 секунд, сохраните и нажмите Deploy. Либо импортируйте отдельную схему пульса.
Подождите два срабатывания без нажатия кнопки. Это уже расписание настоящего Node-RED: оно действует, пока работает процесс на вашем компьютере. После сна компьютера или остановки программы непрерывность не гарантируется; рассылку во внешний канал мы не настраиваем.
После проверки откройте inject, отключите повтор и снова нажмите Deploy. Просто закрыть вкладку браузера недостаточно: Node-RED продолжает работать в терминале. Остановить программу можно через Ctrl+C в том окне cmd, где она запущена.
9. Сохранить, открыть заново и проверить себя
В меню выберите Export / Экспорт → текущий поток → скачивание JSON. Файл нужен для восстановления схемы, а не для загрузки в нейросеть. Убедитесь, что экспортировали нужную вкладку и все её узлы. Официальное описание импорта и экспорта.
Закройте редактор, остановите Node-RED через Ctrl+C и запустите прежней командой из той же папки. Схема хранится в data; проверьте, что она осталась. Если импортируете резервную копию, выберите новую вкладку и следите за переименованными дубликатами узлов.
Самостоятельный финал: в копии схемы измените порог обычного черновика с 5000 на 3000. Найдите все сравнения этого порога и пояснения, а не заменяйте только текст подписи. Проверьте 3000, 3001, неизвестную сумму, дубль и конфликт ID. Ожидание: 3000 — draft, 3001 — review; остальные правила не меняются. Сохраните новую схему и пять фактических результатов. Не перезаписывайте исходный образец.
10. Где здесь помогает ИИ
После допуска по данным можно открыть свой текстовый чат и попросить объяснить учебный компонент:
Я новичок. Ниже учебный код Function в Node-RED, реальные данные отсутствуют.
Объясни: вход msg.payload, выход msg.route, три причины остановки.
Отдельно покажи, где изменить порог 5000 на 3000. Не добавляй сетевые
запросы, доступ к файлам и отправку сообщений. После объяснения дай
пять тестов с ожиданиями. Вот полный код:
[вставьте содержимое classify.js.txt]
Этот запрос — предложение для вашей практики, не запись выполненного здесь модельного прогона. Любую правку сначала внесите в копию и проверьте по пяти случаям финала. Модель не видит ваш редактор, пока вы не передали ей учебный текст; слова «я исправила схему» в чате не изменяют Node-RED.
Для сводки передайте только проверенные вымышленные результаты: «Подтверждена одна заявка на 800 ₽; сумма лицензии неизвестна; покупки не выполнялись. Напиши черновик статуса до 40 слов, не называй 800 полной стоимостью». Автоматическое подключение модели через API — отдельный этап, для этого практикума оно не требуется.
Если что-то не получилось
| Что видно | Что проверить |
|---|---|
| Команда node не найдена | Новое окно cmd, установка и PATH |
| Не найден settings.cjs | Файл лежит в папке практикума, расширение не .txt |
| Адрес не открывается | Терминал работает, порт в адресе совпадает с settings.cjs |
| Красный треугольник на узле | Откройте узел, проверьте обязательные поля, сохраните |
| Изменение не действует | Нажали Done и Deploy; запускаете узел из нужной вкладки |
| Debug пустой | Провод есть, debug включён, фильтр не скрывает сообщения |
| Попали не в ту ветку | Тип свойства msg, поле route; значения правил — строки |
| Импорт создал копии | Оставьте для работы одну нужную вкладку, проверьте связи |
| После перезагрузки нет старых записей Debug | Схема и журнал результатов — разные вещи; результаты сохраняйте отдельно |
Материалы для повторения
- Весь комплект ZIP: начальная и полная схемы, код Function, настройки, тесты, журнал и инструкция.
- Фактический журнал проверки.
- Шаблон собственного журнала CSV.
Скриншоты уже находятся рядом с шагами — скачивать архив ради чтения не нужно. Готовый импорт помогает восстановиться и сравнить результат; самостоятельная сборка подтверждается вашей схемой, изменённым порогом и сохранёнными проверками.












