Решить судьбу выполнения, которое ждёт человека

Читайте запросы на согласование, одобряйте или отклоняйте их и знайте, что будет, если никто не решит вовремя.

3 мин чтения

Согласование — это запрос решения человека. Выполнение, которое доходит до узла Требуется одобрение, останавливается на нём и ждёт, пока кто-нибудь его одобрит или отклонит, или пока не выйдет его время. Эта страница — о странице согласований в консоли.

Где находятся согласования

Откройте Согласования. Вкладки Ожидают, Одобренные, Отклонённые и Просроченные показывают запросы проекта, выбранного в шапке. Вкладка Ожидают перечитывает список каждые 30 секунд; Обновить перечитывает его сразу.

Строка называет флоу и операцию, заметку, которую автор флоу оставил на узле, узел и то, когда было запрошено решение. Ожидающая строка говорит, сколько осталось на решение; решённая — кто решил и когда. Нажмите на строку, чтобы открыть её выполнение.

Страница открывается тому, у кого есть разрешение management:read. Для одобрения и отклонения нужно management:write: в консоли оно есть у ролей Владелец и Администратор. Без него кнопки не показываются.

Одобрить или отклонить

1. Выберите запрос

На вкладке Ожидают найдите строку и нажмите Одобрить или Отклонить.

2. Укажите причину

Окно просит подтвердить. Причина необязательна: она хранится вместе с согласованием и видна в трассировке выполнения.

3. Подтвердите

Нажмите Одобрить или Отклонить в окне. Строка уходит с вкладки Ожидают.

  • Одобрить выводит выполнение из узла через порт Одобрено, и оно идёт дальше так, как говорит флоу, включая вызов модели.

  • Отклонить выводит его через порт Отклонено. За вызов модели, которого оно ждало, ничего не списывается.

  • Решение не двигает выполнение сразу: оно продолжится в течение минуты.

Пока выполнение ждёт, никакой холд не стоит. Деньги резервируются, когда выполнение доходит до вызова модели — после решения, по новой оценке.

Если никто не решил

Автор флоу задаёт на узле, сколько может длиться решение; новый узел даёт 24 часа. Когда это время проходит, запрос становится expired, и выполнение выходит через Отклонено, как если бы его отклонили. Ожидающая строка, чьё время прошло, кнопок не показывает.

Запрос, чьё выполнение закончилось — например, было закрыто, потому что слишком долго ждало, — тоже решить нельзя. Через API такое решение отклоняется с кодом approval_expired, а решение по запросу, который кто-то только что решил, — с кодом approval_already_decided. Консоль тогда перечитывает список.

Запрос от узла модели

Строка может прийти и от узла AI-модель, чья политика перерасхода просит человека одобрить вызов, который оказался дороже своего холда. Такая строка называет узел модели, а её заметка, которую пишет Slen, называет новую оценку вызова и холд, который у него был. У нового узла модели политики перерасхода нет, а политика, которая у узла есть, практически не срабатывает, — почему, говорит строка overrun_approval_required в статье Коды ошибок. Саму политику описывает статья AI-модель.

  • Одобрить пускает вызов модели дальше. Его холд был возвращён, когда запрашивалось согласование, поэтому вызов берёт новый.

  • Отклонить или отсутствие решения в течение 24 часов отклоняет вызов с кодом overrun_stopped. Выполнение выходит из узла модели через его порт Отказ и заканчивается как rejected, если к этому порту ничего не подключено.

Через API и в вебхуках

  • API-ключ с management:write решает через POST /v1/approvals/{id}/approve или POST /v1/approvals/{id}/reject; его строка тогда говорит, что решил API-ключ.

  • Событие вебхука approval.requested отправляется, когда выполнение начинает ждать, а approval.decided — когда запрос одобрен, отклонён или просрочен, — Вебхуки.

  • Журнал аудита записывает каждое одобрение и отклонение.

Что читать дальше