Потрібне схвалення

Вузол, який зупиняє виконання, доки людина не схвалить чи не відхилить його, і відправляє його далі гілкою рішення.

4 хв читання

Потрібне схвалення зупиняє виконання, доки щодо нього не вирішить людина. Схвалення відправляє виконання далі через Схвалено, а відхилення — або відсутність рішення вчасно — через Відхилено.

Вузол
Потрібне схвалення
Тип
require_approval
Категорія
Гроші
Порти
  • Схвалено approved підключення обовʼязкове
  • Відхилено rejected підключення обовʼязкове
Завершує шлях
Ні

Що робить вузол

Коли виконання доходить до вузла, Slen заводить запит на погодження з приміткою вузла й строком, до якого щодо нього треба вирішити, і надсилає подію вебхука approval.requested. Виконання зупиняється на вузлі, і його статус стає waiting.

Запит, який почав виконання, одразу отримує відповідь 202. У відповіді waiting_on називає вузол, його type — approval, а resume_at — null: виконання рухає рішення, а не годинник. Виконання, почате в асинхронному режимі, отримало відповідь раніше, і його статус стає waiting, коли воно доходить до вузла.

Учасник вирішує на сторінці Погодження або API-ключ вирішує через API — Погодження. Протягом хвилини після рішення виконання продовжується з вузла:

  • схвалено — через Схвалено;

  • відхилено — через Відхилено;

  • не вирішено вчасно — запит стає expired, і виконання виходить через Відхилено, наче його відхилили.

Поки виконання чекає, нічого не зарезервовано. Виклик моделі після вузла оцінюється й резервується, коли виконання до нього доходить, — після рішення, за бюджетами, якими вони будуть тоді.

Коли використовувати

  • Щоб людина схвалювала витрату до того, як вона станеться, — велике завдання, дорогу модель, запит клієнта, за яким ви наглядаєте.

  • Поставте перед вузлом Умова, щоб рішення чекали лише ті запити, яким воно потрібне. Так робить шаблон Погодження запитів — Шаблони AI-флоу.

  • Щоб дізнаватися про запит, не відкриваючи консоль, підпишіться на approval.requested і approval.decided — Вебхуки.

  • Щоб затримати виконання на заданий час без людини, використовуйте Черга.

Запит на сторінці Погодження може прийти й без цього вузла — від вузла AI-модель, чия політика перевитрати просить людину схвалити виклик, який виявився дорожчим за свій холд. Відхилення або відсутність рішення протягом 24 годин відхиляє виклик із кодом overrun_stopped, і виконання виходить із вузла моделі через Відмова. У нового вузла моделі політики перевитрати немає, а політика, яка у вузла є, практично не спрацьовує, — Погодження, AI-модель.

Налаштування

НалаштуванняДля чого воно
expires_hoursСкільки часу в людини на рішення, у цілих годинах. Не менше за 1 і за замовчуванням не більше за 71. Якщо ніхто не вирішив вчасно, це вважається відхиленням. Вузол без значення дає 24 години.
noteСлова, які читає разом із запитом той, хто вирішує, — наприклад, чому витрата потребує рішення. Необов’язково. Зберігаються перші 500 символів.

У конструкторі налаштування — це поля Вирішити протягом (годин) і Примітка для того, хто вирішує. Новий вузол дає 24 години й не має примітки.

Найдовший строк рішення за замовчуванням — 71 година: виконання може чекати загалом 72 години, і рішення має прийти раніше. Довший строк відхиляється під час публікації флоу.

Порти

ПортВиконання виходить через нього, коли
СхваленоЗапит схвалено. Обов’язковий
ВідхиленоЗапит відхилено або ніхто не вирішив вчасно. Обов’язковий

Флоу, у якому будь-який із портів нікуди не веде, не публікується — Порти й розгалуження.

Вихід

Після рішення вузол залишає свій вердикт наступним вузлам.

JSON
{
  "status": "approved",
  "reason": "Within the quarter plan",
  "approval_id": "74438200973595136",
  "decided_at": "2026-10-02T09:41:00+00:00"
}
  • status — це approved, rejected або expired. І відхилення, і строк, що сплив, виходять через Відхилено, тому Умова на цій гілці розрізняє їх за nodes.<key>.output.status, де <key> — ключ цього вузла у флоу.

  • reason — те, що людина написала разом із рішенням, або null. У запиту, строк якого сплив, там not decided in time.

  • Хто вирішив, у виході немає. Його називає подія вебхука approval.decided.

Помилки

Своїх помилок вузол не видає. Його налаштування перевіряються під час перевірки флоу та під час його публікації.

В API запис issues називає таку перевірку в params.detail; його code — invalid_node_config.

ПеревіркаПовідомлення в конструкторі
require_approval_invalid_expires_hoursСтрок рішення «{node}» має бути цілим числом годин, не менше 1.
require_approval_expires_too_lateСтрок рішення «{node}» довший, ніж зберігається виконання, що очікує: не більше {max} год.

До вузла не можна дійти від вузла Резерв бюджету раніше, ніж до моделі, жодним зв’язком, крім гілки Відмова: у виконання, що чекає, нічого не зарезервовано. Такий флоу не публікується — Фінансовий ланцюжок.

Щодо запиту, чиє виконання закрили раніше, ніж хтось вирішив, — після того як воно чекало надто довго, — вирішити вже не можна.

Приклад

  • Запит — Типовий → Потрібне схвалення
  • Потрібне схвалення — Схвалено → AI-модель
  • Потрібне схвалення — Відхилено → Відхилити запит
  • AI-модель — Успіх → Повернути відповідь

Запит отримує відповідь waiting, щойно виконання доходить до вузла Потрібне схвалення. Після схвалення AI-модель резервує гроші й викликає модель, а Повернути відповідь завершує виконання як completed. Після відхилення або коли ніхто не вирішив вчасно Відхилити запит завершує його як rejected, і жодних грошей не було зарезервовано.

Зібрано з openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d