# Автоматизации

> Конструктор сценариев без кода: условия запуска, действия, ветвления, тест-прогон с образцом данных и десять готовых сценариев.

Автоматизация — это сценарий из шагов: условие запуска, затем действия, условия и повторения. Сценарий собирается в конструкторе «Автоматизации» без кода: каждое поле выбирается из списка или берётся из данных предыдущих шагов. Полный справочник шагов с полями и данными на выходе — в разделе [Шаги автоматизаций](https://docs.legalstack.ru/automations/nodes).

## Из чего состоит сценарий

- **Условие запуска.** Событие платформы (новая запись реестра, заполненная форма, письмо, подписанный документ), расписание, внешний запрос по адресу автоматизации или запуск вручную. У события можно выбрать конкретный источник или «Любой», для событий и внешних запросов задаётся окно активности по дням и времени.
- **Действия.** Создать документ по шаблону, запустить согласование или подписание, завести задачу, отправить письмо или сообщение в Telegram, найти или изменить запись реестра, проверить документ по чек-листу, обратиться к внешней системе. Редкие действия спрятаны за переключателем «Показать расширенные действия».
- **Условие.** Правило над данными сценария: «сумма больше», «статус равен», «текст содержит». У условия два выхода, «Да» и «Нет», и оба должны куда-то вести: сценарий не оставляет молчаливых тупиков.
- **Повторение.** Проходит по списку (например, по найденным записям реестра) и выполняет тело цикла для каждого элемента. Внутри тела доступны «Текущая запись» и «Номер записи».
- **Исходы ожидания.** Согласование, подписание и задача агента завершаются одним из выходов: «Готово», «Отклонено» или «Срок истёк». Для каждого выхода можно задать свою ветку, а ветви, ведущие в один шаг, соединяются сами.
- **Ошибки.** У действия есть поведение при ошибке: остановить ветку или направить в выход «Ошибка» с текстом ошибки, чтобы, например, завести задачу ответственному.

## Данные между шагами

В любом поле кнопка «Из данных» открывает каталог: поля условия запуска, результаты предыдущих шагов, текущая запись цикла и дата запуска. Так письмо получает тему из формы, а задача — ссылку на созданный документ. Каталог показывает только те данные, которые реально доступны в этой точке сценария, поэтому опечатки в именах полей исключены.

## Тест-прогон

Кнопка «Тест» запускает сценарий в безопасном режиме:

- **Чтения выполняются по-настоящему**: поиск записей, получение документа, расчёт форматов и запросы к ИИ идут как в обычном прогоне.
- **Записи и отправки симулируются**: документ не создаётся, письмо не уходит, согласование не запускается. Вместо результата шаг получает данные по своей схеме с пометкой «(тест)», а ожидания считаются завершёнными с исходом «Готово». Чтение, которое опирается на симулированную запись, тоже симулируется.
- **Образец данных триггера.** Тест запускается с данными последнего реального срабатывания: они запоминаются автоматически, без бинарных вложений и с ограничением по размеру. Образец можно задать или поправить вручную в карточке условия запуска, блок «Данные для теста», и сбросить к данным события. Если у запуска вручную или внешнего запроса объявлены поля, перед тестом открывается форма с их значениями, заполненная из образца.
- **Журнал прогона.** После теста у каждого шага на схеме видна отметка, а в карточке шага появляется вкладка «Прогон» с данными на входе и выходе, причиной исхода и пометкой о симуляции. Длинные значения и большие списки в журнале усекаются. Тот же журнал доступен в истории прогонов и по API.
- **Кто видит данные.** Образец данных триггера и вход и выход шагов видят только те, кто может редактировать автоматизацию: там бывают письма, поля записей и документы, к которым у остальных нет доступа. Тем, кто может только смотреть автоматизацию, журнал показывает статусы шагов и ошибки без данных.

## Версии шагов

Настройки каждого действия описаны контрактом с номером версии. Когда контракт меняется, старые автоматизации читаются через миграцию настроек, а при следующем сохранении записываются в новой версии. Прогон, начатый до обновления, тоже доходит до конца: настройки его шагов мигрируют перед выполнением. Если автоматизация сохранена в версии новее, чем знает приложение, конструктор сообщает об этом и просит обновить приложение, а движок останавливает такой шаг с понятной ошибкой, а не выполняет его наугад.

## Десять сценариев

Каждый сценарий ниже собран и проверен сквозным тестом: от описания шагов до прогона через движок с симуляцией записей. Названия шагов и полей совпадают с конструктором.

### 1. Согласование отклонили — уведомить инициатора

Запуск вручную → **Согласование → Запустить согласование** (название, участники, срок) → выход «Отклонено» → **Письмо → Отправить** с текстом «Решение: решение, комментарий: комментарий». Выход «Готово» ведёт к следующему шагу, например к получению документа. В тесте согласование считается завершённым, письмо симулируется.

### 2. Новая запись реестра — документ и подписание

**Событие: Реестр → Запись создана** (выбранный реестр) → **Документ → Создать по шаблону** с заполнением переменных из полей записи → **Подписание → Отправить и дождаться** с документом из предыдущего шага → выход «Готово» → **Реестр → Изменить запись** (статус «подписан»); выход «Отклонено» → письмо ответственному.

### 3. Входящее письмо — сохранить вложения и поставить задачу

**Событие: Входящая почта → Письмо получено** с фильтром по теме → **Файл → Сохранить** вложения письма в папку → **Задача → Создать** с темой письма в названии и сроком «через 3 дня».

### 4. За три дня до даты договора — напомнить

**Событие: Реестр → Дата наступила** (поле даты, «до даты», 3 дня) → одновременно **Telegram → Отправить** и **Письмо → Отправить** с числом оставшихся дней из данных события.

### 5. Еженедельная сводка по задачам

**По расписанию** (еженедельно, понедельник 09:00, источник «Задачи», условие «За период») → **ИИ → Сгенерировать текст** по сводке → **Письмо → Отправить** с ответом ИИ. В тесте обращение к ИИ выполняется, письмо симулируется.

### 6. Заявка с формы — проверить и направить

**Событие: Интерфейс → Форма заполнена** → **Условие** «сумма больше 100 000» → «Да»: **Реестр → Создать запись** с полями заявки; «Нет»: письмо автору заявки. Поля формы появляются в каталоге данных после выбора формы в условии запуска.

### 7. Внешний запрос — задача из CRM

**Внешний запрос** с объявленными полями запроса (номер сделки, название) → **Задача → Создать** с названием из этих полей. Адрес и секрет запроса показаны в карточке условия запуска после сохранения.

### 8. Новый документ — проверка по чек-листу

**Событие: Документ → Документ создан** → **Проверка → Запустить проверку** по выбранным чек-листам → **Условие** «статус равен failed» → «Да»: **Задача → Создать** с высоким приоритетом; «Нет»: письмо о пройденной проверке.

### 9. Обход реестра — задачи по просроченным записям

Запуск вручную → **Реестр → Найти записи** → **Повторение** по найденным записям → **Условие** «статус текущей записи равен overdue» → «Да»: **Задача → Создать** с названием записи; «Нет»: **Форматирование → Шаблон строки** как отметка «в порядке». Поиск выполняется по-настоящему и в тесте, задачи симулируются.

### 10. Подписание не состоялось — отозвать и эскалировать

Запуск вручную → **Подписание → Отправить и дождаться** (внешний подписант, срок 2 дня) → выход «Срок истёк»: **Подписание → Отозвать** и **Задача → Создать** ответственному; выход «Готово»: письмо с подписанным документом. В журнале прогона у шага подписания видна причина «Срок ожидания истёк».

## Что проверить перед включением

- Все обязательные поля заполнены: счётчик «Нужно заполнить» в шапке конструктора должен исчезнуть.
- У каждого условия подключены оба выхода, у ожиданий — нужные исходы.
- Тест-прогон прошёл: в журнале нет ошибок, симулированные шаги получили ожидаемые данные.
- После включения сценарий работает от имени ответственного пользователя: ему нужны права на документы, реестры и формы, которые использует сценарий.
