Задачи для людей
Узел «Задача для человека» ставит сценарий на паузу и ждёт, пока человек примет решение — одобрить или отклонить счёт, подтвердить возврат средств, выбрать один из нескольких вариантов, — а затем продолжает по ветке, соответствующей выбору, с собственным ответом резолвера доступным внутри этой ветки как типизированное значение. Это тот же приём, что и вопрос в Telegram (отправить, подождать, разветвиться по нажатой кнопке), только без мессенджера — «сообщением» становится строка на странице внутри самого продукта.
Заголовок и Описание — короткая сводка, показываемая в списке задач, и более длинное, оформленное в Markdown объяснение (что нужно решить, ссылки, суммы), показываемое на самой задаче.
Контекст — необязательное выражение, вычисляющее любое структурированное значение (заказ, который согласовывается, запись, которую проверяют), показывается на задаче как блок только для чтения — никогда не редактируется тем, кто её решает.
Вложения — необязательный список файлов, показывается как ссылки для скачивания.
Таймаут — необязательная длительность (
48h,3d). Оставьте пустым — сценарий будет ждать вечно; задайте — и узел возьмёт фиксированную автоматическую ветку «Таймаут», если никто не решит задачу вовремя (см. ниже).
Опции и типизированные ответы
Заголовок раздела «Опции и типизированные ответы»Каждая опция — это кнопка, которую видит человек на задаче — по умолчанию «Одобрить»/«Отклонить», свободно переименовываемые или дополняемые, точно как кнопки вопроса в Telegram. Что делает опции задачи для человека отличными от обычной ветки — то, что каждая может ещё и собрать типизированное значение от того, кто её решает:
Void — обычная кнопка, заполнять больше нечего.
Текст — текстовое поле (причина отказа, исправленное значение).
Число — числовое поле ввода.
Булево — чекбокс/переключатель.
Отдельного поля «комментарий» нет: опция «Отклонить» с ответом типа Текст и подсказкой «Причина» —
и есть поле для комментария. Внутри ветки каждой опции доступны две переменные: task (кто и когда
решил задачу) и, для любой опции кроме Void, data — типизированная точно так, как задан тип ответа
этой опции.
Ветка по таймауту
Заголовок раздела «Ветка по таймауту»Заданный Таймаут автоматически добавляет к узлу ещё одну ветку — фиксированную, всегда последнюю, её нельзя удалить или переименовать. Если никто не решит задачу за отведённое время, сценарий пойдёт по этой ветке (сама задача при этом помечается на странице Tasks как «Истекла») — удобно для сценариев вида «эскалировать, если никто не ответил за день». Сценарий, остановленный или пересобранный, пока задача ещё открыта, тоже закрывает её (как «Отменена») — задача никогда не остаётся висеть открытой, указывая на запуск, которого уже не существует. Если очистить Таймаут, ветка пропадёт — кроме случая, когда в ней уже есть иконки: тогда она остаётся на схеме (молча не удаляется), но больше не компилируется.
Страница Tasks
Заголовок раздела «Страница Tasks»Все открытые (и прошлые) задачи живут на странице Tasks — рядом со страницей Runs, доступной из списка проектов, а также, отфильтрованной под конкретный сценарий, из вкладки Tasks внутри редактора. Задача видна только владельцу проекта, который её создал, — в этой версии нет ни списка исполнителей, ни внешней ссылки, ни доступа администратора: владелец проекта — тот, кто строит и тестирует сценарий, поэтому именно он решает и то, чего сценарий ждёт. Открытие задачи показывает описание, контекст, вложения и по одной кнопке на каждую опцию — с типизированным полем ввода рядом, если опция собирает значение.
Dev и production
Заголовок раздела «Dev и production»Задача, созданная во время разработки сценария (dev-запуск), — тоже настоящая строка, решаемая с той же страницы Tasks: именно так тестируется сценарий с согласованием — соберите его, запустите и одобрите/отклоните сами со вкладки Tasks рабочего пространства. Production-задача переживает повторное развёртывание, поскольку опубликованный запуск продолжает выполняться на своей закреплённой версии независимо от того, что публикуется дальше; решение задачи достигает именно этого запуска.
Вопросы в Telegram тоже умеют истекать
Заголовок раздела «Вопросы в Telegram тоже умеют истекать»Узел вопроса Telegram в этом же проходе получил такое же поле «Таймаут» — задайте его, и вопрос с inline-клавиатурой, оставшийся без ответа, пойдёт по собственной автоматической ветке таймаута: кнопки убираются, и вместо бесконечного ожидания отправляется короткое сообщение «этот вопрос устарел».
