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/nodes
  • GET /zp/state
  • GET /zp/state/all
  • GET /zp/log
  • GET /zp/traffic
  • POST /zp/commands