ZP7
ZP7 показывает состояние задач, полученное напрямую от зарегистрированных ZP node-сервисов.
Источник данных
z3nDash хранит только адреса узлов в таблице zp_nodes. Состояние задач запрашивается у каждого узла:
GET http://HOST:PORT/state
Страница получает адреса через GET /zp/nodes?probe=false, затем независимо
опрашивает каждый узел через GET /zp/state?machine=... каждые 3 секунды.
Задачи отображаются по мере поступления ответов: медленный или недоступный узел
не задерживает загрузку и обновление остальных. Одновременно выполняется не более
одного запроса состояния на узел; таймаут обращения к node — 10 секунд.
Список задач
Доступны фильтры:
- имя;
- состояние;
- режим работы;
- теги.
Выбранные фильтры сохраняются в состоянии UI.
Управление
Команды отправляются непосредственно выбранному node:
POST http://HOST:PORT/command
Поддерживаемые действия интерфейса:
- start;
- stop;
- interrupt;
- apply/update settings;
- add/set tries;
- set threads;
- clear done;
- clear fails;
- execution settings;
- scheduler settings.
Панели
- Task Detail — параметры и действия выбранной задачи;
- Logs — логи выбранной задачи с её узла (
GET /zp/log); - allLogs — модальное окно общей истории со всех узлов, с фильтрами и сортировкой;
- traffic — модальное окно HTTP-трафика со всех узлов и самого z3nDash;
- HTTP — трафик выбранной задачи:
GET /zp/traffic?machine=...&task_id=..., опрос раз в 3 секунды; - Projects heatmap — данные проектов из report API.
Input Settings
⚙ Input Settings открывает переменные проекта. Значения приходят с узла как
GET /zp/task/settings?machine=&task_id= — пара base64: исходный XML
InputSettings и текущие значения.
Два вида, переключаются кнопкой в подвале окна:
Form (по умолчанию) — виджеты по типам из XML:
Тип Виджет Tabвкладка Commentразделитель секции Labelподпись без поля ввода Booleanчекбокс Numberчисловой ввод DropDown,Selectвыпадающий список DropDownMultiSelectнабор чекбоксов Passwordскрытый ввод остальные ( Text,FileName,CaptchaModules, …)текстовое поле, длиннее 60 символов — textarea Варианты для списков лежат в подписи блоком
{a|b|c}; из показанной подписи он убирается. Рядом с подписью — ключ переменной, во всплывающей подсказке —Help.JSON — плоский объект
{ключ: строка}.
Переключение переносит текущие значения, так что правки не теряются. Выбранный вид запоминается. Если XML не разобрался, окно остаётся в JSON и показывает причину.
Переменные, которые формой не рисуются, при сохранении не теряются: Tab и
Comment тоже бывают привязаны к переменной, поэтому значения с узла берутся
целиком, а поверх кладутся только те, что есть в форме.
📋 Copy Payload кладёт в буфер payload для планировщика: schema
с описанием полей и values с текущими значениями.
Сохранение в обоих видах одинаковое — команда set_input_settings с исходным
XML и собранными значениями; XML пересобирает сам узел.
API
GET /zp/nodesGET /zp/stateGET /zp/state/allGET /zp/logGET /zp/trafficPOST /zp/commands