Согласование
approval добавляет ожидание решения человека к вызову call.
Параметры
| Параметр | Назначение | По умолчанию |
|---|---|---|
when | Нужно ли согласование; может читать result вызова | true |
quorum | Число разных голосов, 1–100 | 1 |
sources | Каналы решения | account, telegram |
version_fields | Какие поля определяют версию | Все, кроме blocked_fields |
blocked_fields | Поля занятости, запрещающие решение | [] |
allow_skip | Разрешить пропуск | false |
toggle_votes | Повторное нажатие отзывает голос | false |
actions | Действия редактирования и выбора | [] |
recovery_actions | Действия восстановления из списка actions | [] |
Пример
- id: draft
call: prepare_draft
inputs:
topic: "{inputs.topic}"
approval:
quorum: 2
sources: [account, telegram]
version_fields: [text, attachment]
allow_skip: falseРезультат
Результат call не меняет форму. Решение доступно через {state.draft.approval.status}: not_required, pending, approved, skipped.
Поведение
Без approval согласования нет; пустой объект включает значения по умолчанию. Пропуск продолжает путь с подготовленным результатом, но не означает одобрение. Последующее действие проверяет статус через when.
Новая версия результата сбрасывает голоса. Повторное событие не добавляет голос и не повторяет действие. Редактирование возвращает к ожиданию.
Доработка
Явно передаются approval.previous, approval.feedback, approval.event; начальные значения — {}, пустая строка и null. Событие содержит source, id, action, payload.
Сохранение результата перед следующей записью
Аннотация approval_checkpoint: value на data.build сохраняет полный новый результат до последующих внешних действий, под защитой ресурса. Она сохраняет правила восстановления и не заменяется частичным обновлением или скрытым вызовом кода.