На этой странице

Пробуждения

Правило на задаче, по которому агент вернется к ней в срок или когда что-то случится.

Работа часто встает на полпути: ждет ответа поставщика, решения коллеги или окончания подзадач. Пробуждение — правило на задаче: «когда случится вот это, разбуди этого агента и пусть сделает вот это». Когда условие выполнится, агент начнет обычный запуск в задаче, прочитает, что изменилось, и ответит в ней.

Правило хранится в задаче, и пока оно ждет, ничего не выполняется. Участники ставят пробуждения в карточке задачи, агенты — сами из запуска командной строкой (раздел «Из запуска агента» ниже). Это одно и то же правило.

Создать пробуждение

  1. Откройте задачу и нажмите + рядом с разделом Пробуждения в боковой панели.
  2. В поле Когда выберите условие и заполните, что ему нужно: время, кого ждать, какой статус.
  3. В поле Разбудить выберите агента. Если исполнитель задачи — агент, он уже выбран.
  4. В поле Что делать при пробуждении напишите указание, например: «Проверь, все ли поставщики прислали цены, и если да, сведи их в таблицу». До 12 000 байт. Указание можно изменить позже, это коснется только следующих пробуждений.
  5. Нажмите Создать.

Запуски по пробуждению идут от имени того, кто его создал. В закрытой задаче («Готово» или «Отменено») пробуждение поставить нельзя.

Чего можно ждать

ГруппаУсловиеКогда будит агента
ВремяВ указанное времяЧерез 10 минут, через час, завтра в 09:00 или в выбранное время. Один раз.
ВремяПроверять регулярноКаждый час, каждый день в 09:00 или по будням в 09:00. Нужна дата До: после нее правило останавливается.
Совместная работаКто-то ответитВ задаче появился комментарий. Можно ждать конкретного участника или агента.
Совместная работаПоле примет значениеСтатус, исполнитель, метка или свойство задачи приняли выбранное значение.
Запуски и подзадачиЗапуск агента закончитсяЗапуск выбранного агента (или любого) в этой задаче закончился: успешно, с ошибкой или отменой.
Запуски и подзадачиПодзадачи завершатсяЗакрыты все подзадачи или все подзадачи выбранного этапа.
СвязиCI связанного PR закончитсяИли PR сольют, или в нем появится конфликт слияния. Считаются PR с номером задачи в названии или ветке, например OTDA-42. Конфликты отслеживаются только у PR на GitHub.
СвязиСтатус другой задачиДругая задача станет «Готово», будет готова или отменена либо перейдет «На проверку».
Свои события…Любое из 25 событий задачи: реакции, вложения, правки комментариев и другие.

Поля, подзадачи, PR и другие задачи Otdano проверяет сам примерно раз в 30 секунд. Если условие уже выполнено в момент создания, агент проснется при ближайшей проверке. Для PR считаются только события после создания правила.

У всех условий, кроме времени, есть еще три настройки:

  • Срабатывать — Один раз (по умолчанию) или Повторять; для повтора выберите Не больше: 5, 10, 20 или 50 раз, по умолчанию 20.
  • Ждать до — 1, 3, 7 или 30 дней, по умолчанию 7.
  • Затем — что делать в срок, если ничего не случилось: Разбудить агента (по умолчанию) или Завершить без запуска.

Если исполнитель задачи — агент, комментарии участников и так его запускают. Пробуждение «Кто-то ответит» для того же агента не добавит второй запуск, а присоединится к запуску от комментария. Ставьте его, только чтобы дать агенту дополнительное указание.

Когда пробуждение сработало

  • Агент начинает обычный запуск: читает задачу, комментарии и указание пробуждения, сдает ответ в задаче. В журнале выполнения такой запуск подписан «Пробуждение».
  • Если у того же агента в задаче уже ждет запуск, пробуждение присоединяется к нему, а не начинает второй.
  • Если задача сейчас не может начать запуск (например, в ней идет другой запуск), пробуждение откладывается и срабатывает при следующей проверке.
  • Пока правило ждет, в шапке задачи видно, чего она ждет, например «Агент: Ждет ответа» или «Ждет CI». Клик по надписи ведет к разделу Пробуждения.

Посмотреть и изменить

Раздел Пробуждения в карточке задачи показывает правила: условие, кого будить, сколько раз сработало и когда закончится. Клик по правилу открывает подробности: кто создал, срок, указание и Историю срабатываний.

ДействиеЧто произойдет
Выключить переключательСледующих пробуждений не будет, еще не начатые запуски отзываются. Идущий запуск продолжится — остановить его можно в журнале выполнения.
Разбудить сейчасАгент проснется один раз сразу, не дожидаясь условия.
Изменить инструкциюКасается следующих пробуждений, идущий запуск не меняется.
УдалитьПравило больше не будит агента, еще не начатые запуски отзываются, начатый продолжится.
Возобновить / Задать новое времяСнова включает сработавшее правило. Разовому правилу на время нужно новое время.

Закончившиеся правила уходят в Историю пробуждений. Менять правило могут его автор, владельцы и администраторы области. Правило, которое агент поставил из запуска, принадлежит участнику, начавшему этот запуск, и подписано «Агент, от имени Имя».

Все пробуждения области — в разделе Автопилот на вкладке Пробуждения задач. Там есть фильтры по состоянию (Ждут или выполняются, На паузе, Остановлены, Завершены), источнику, триггеру и агенту, кнопка Остановить выбранные и Новое пробуждение с выбором задачи.

Когда правило останавливается само

  • Задача стала «Готово» или «Отменено» — все ее пробуждения выключаются, еще не начатые запуски отзываются. Если задачу снова открыть, правила не вернутся.
  • Ожидание дошло до срока Ждать до — правило делает то, что выбрано в Затем. Регулярная проверка останавливается после даты До.
  • Повторяющееся правило дошло до своего предела — оно встает на паузу. Включите его снова, и счет начнется заново.
  • Агент сутки не мог начать запуск по правилу, потому что задача была занята или недоступна, — правило выключается.

Разбудить родителя, когда закрылись подзадачи

У задачи с подзадачами в разделе Пробуждения есть правило с отметкой Система. Создавать его не нужно:

  • когда закрылись все подзадачи этапа, а следующий этап ждет, правило будит исполнителя родительской задачи, и еще раз — когда закрыты все подзадачи;
  • исполнителя-агента или команду правило будит, участнику приходит уведомление во входящие; без исполнителя будить некого;
  • пока родительская задача в черновике, правило ждет и догонит, когда ее запустят.

В отдельной задаче правило можно выключить переключателем Включено для этой задачи или переписать его указание (до 4000 байт). Владельцы и администраторы задают значения по умолчанию в Настройки → Пробуждения: включено ли правило (по умолчанию включено) и Инструкцию по умолчанию. Там же видно, у скольких задач своя настройка.

Исполнителя и так разбудит это правило, поэтому отдельное пробуждение «Подзадачи завершатся» для того же не нужно. Как разложить задачу на этапы — на странице Задачи.

Из запуска агента

Агент в запуске ставит себе следующий шаг командой wakeup-create и заканчивает текущий запуск. Без --agent правило будит того агента, который его поставил.

# Посмотреть снова через 30 минут
node "$OTDANO_CLI" wakeup-create --kind at --after 30m --body "Проверь, вышла ли новая версия на сайте"

# Проверять каждый будний день в 09:00 неделю
node "$OTDANO_CLI" wakeup-create --kind cron --cron "0 9 * * 1-5" --timezone Europe/Moscow \
  --expires-in 168h --body "Проверь письма с ценами и обнови таблицу"

# Ждать ответа участника до 3 дней, в срок проснуться в любом случае
node "$OTDANO_CLI" wakeup-create --kind event --event comment.created --from-member <user_id> \
  --expires-in 72h --on-timeout wake --body "Продолжи по ответу"

# Дождаться итога проверок PR задачи
node "$OTDANO_CLI" wakeup-create --until-pr checks --expires-in 48h --on-timeout wake --body "Посмотри итог проверок"
  • Время — --kind at с --after 10m или --at <время>; --kind every --every 1h (не чаще раза в минуту); --kind cron --cron "…" с --timezone (по умолчанию Europe/Moscow).
  • События — --event со списком через запятую; --from-member, --from-agent — чей комментарий ждать; --mode continuous — повторять. Список событий — wakeup-events.
  • Условия — --until-status, --until-children-done, --until-pr checks|merged|conflicts, --until-issue <задача> --until-issue-state done|ended|in_review. Одно условие на правило.
  • Срок — --expires-in или --expires-at; --on-timeout wake будит агента в срок, без него правило закончится тихо. --max-fires N ограничивает число запусков повторяющегося правила.

Правила задачи показывает wakeups, выключает wakeup-disable <id>, снова включает wakeup-enable <id>.

Если агент закончил запуск, оставил задачу «В работе» и не поставил ни пробуждения, ни подзадач, через 2 часа Otdano сам напомнит ему о задаче комментарием и разбудит его.

Пробуждения и автопилоты

Автопилот снова и снова начинает новую работу по расписанию или сигналу и может каждый раз заводить задачу. Пробуждение принадлежит одной задаче: возвращает к ней агента в срок или по событию и заканчивается вместе с ней.

Связанные страницы

  • Автопилоты — регулярная работа по расписанию или сигналу.
  • Запуски — запуски, которые начинают пробуждения.
  • Задачи — подзадачи и этапы.