Потрібне схвалення
Вузол, який зупиняє виконання, доки людина не схвалить чи не відхилить його, і відправляє його далі гілкою рішення.
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 години, і рішення має прийти раніше. Довший строк відхиляється під час публікації флоу.
Порти
| Порт | Виконання виходить через нього, коли |
|---|---|
| Схвалено | Запит схвалено. Обов’язковий |
| Відхилено | Запит відхилено або ніхто не вирішив вчасно. Обов’язковий |
Флоу, у якому будь-який із портів нікуди не веде, не публікується — Порти й розгалуження.
Вихід
Після рішення вузол залишає свій вердикт наступним вузлам.
{
"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, і жодних грошей не було зарезервовано.
Див. також
Погодження — вирішити щодо запиту в консолі або через API.
Асинхронні запуски й очікування — як застосунок чекає на виконання, яке відповіло
waiting.Черга — чекати заданий час замість рішення.
Зібрано з openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d