# Як створити й підтримувати дію в ActionJail (Адміністратор)

ActionJail дозволяє швидко додавати власну логіку без розробки ядра платформи. Ця інструкція допоможе створити нову дію, відредагувати її, клонувати чи видалити, а також упорядкувати конфіг і форму введення параметрів.

---

## Коли стане в пригоді
- Треба додати бізнес-правило або інтеграцію без зміни основного коду.
- Потрібно оновити логіку існуючої дії після зміни процесу.
- Є типова дія, яку швидше скопіювати та адаптувати.

---

## Що важливо знати
- **Action** — JS-скрипт із власним системним ID (`action_*`), конфігурацією та UI-схемою для параметрів.
- **Майстер дії** — 5 кроків: Інформація → Код → JSON-конфіг → UI схема → Документація.
- **Системний ID** — не змінюється після створення; використовується в сценаріях.
- **Тестування** — доступне в редакторі дії (тільки для кастомних дій) для перевірки виконання перед використанням у сценаріях.

---

## Перед початком
- [ ] Ви маєте роль з доступом до `Меню -> Бібліотека дій`.
- [ ] Під рукою опис логіки дії та потрібні параметри.
- [ ] Визначено, хто використовуватиме дію у сценаріях (для назви й опису).

---

## Покрокова інструкція
1. Відкрийте `Меню -> Бібліотека дій` і натисніть `Додати нову дію` — відкриється майстер.
2. **Інформація про дію**: вкажіть відображуване ім'я, перевірте системний ID (`action_*`), додайте короткий опис призначення.
3. **Код**: вставте або напишіть JS-логіку; за потреби використайте AI-генерацію для чернетки.
4. **JSON-конфіг**: задайте параметри запуску (ключі, дефолтні значення), щоб сценарії могли передавати дані.
5. **UI схема**: додайте поля вводу (назва, тип, обов'язковість, підказка, дефолт); це бачать користувачі сценарію.
6. **Документація**: коротко опишіть, що робить дія, які параметри очікує та приклад запуску.
7. Натисніть `Завершити` — дія з'явиться у списку. Для правок відкрийте дію зі списку, змініть поля і натисніть `Зберегти`.
8. Щоб клонувати, оберіть дію → `Зробити копію` — перевірте новий системний ID і збережіть.
9. Щоб видалити, оберіть дію → `Видалити дію` → підтвердьте.
10. **Тестування**: Після збереження використовуйте розділ **Тестування** для перевірки виконання дії з різними параметрами перед використанням у сценаріях.

---

## Що відбувається після
- Нова або оновлена дія доступна у списку та може використовуватись у сценаріях.
- Клон створюється з новим системним ID, оригінал не змінюється.

---

## Як переконатися, що все вдалось
- Дія відображається у бібліотеці та відкривається без помилок.
- Системний ID унікальний і не змінюється під час редагування.
- Поля UI-схеми видно в формі параметрів дії у сценарії.
- **Розділ тестування** доступний в редакторі дії (тільки для кастомних дій) і дозволяє тестувати виконання з різними параметрами.

## Тестування дій

Розділ **Тестування** дозволяє перевірити виконання дії перед використанням у сценаріях. Це допомагає переконатися, що дія працює коректно з різними параметрами.

### Коли використовувати тестування
- Після створення або оновлення коду дії
- Перед підключенням дії до сценарію
- При відлагодженні логіки дії
- Для перевірки обробки параметрів

### Як протестувати дію
1. Відкрийте дію зі списку (тільки кастомні дії — системні дії не мають тестування).
2. Перейдіть до розділу **Тестування** (перед Документацією).
3. Оберіть режим тестування:
   - **Простий режим**: Введіть JSON параметри безпосередньо (наприклад, `{ "param1": "value1" }`).
   - **Повний state**: Введіть повну структуру state (можна скопіювати з Конструктора сценаріїв).
4. Якщо параметри відсутні, натисніть **Додайте перший параметр** для швидкого створення тестового параметра.
5. Натисніть **Test Action** — дія виконається з наданими параметрами.
6. Перегляньте результат:
   - **Результат**: Значення, яке повернула дія
   - **Логи**: Системні логи з виконання
   - **Помилки**: Будь-які помилки, що виникли під час виконання
   - **Час виконання**: Скільки часу зайняло виконання дії

### Режими тестування

**Простий режим**:
- Введіть тільки параметри, які потрібні вашій дії (з `json_obj`).
- JSON редактор автоматично заповнюється дефолтними значеннями з "Дефолтний JSON конфіг", якщо вони доступні.
- Підходить для швидкого тестування логіки дії.

**Повний state**:
- Введіть повну структуру `KwizbotEngine` state.
- Включає node, const, position та інший контекст.
- State можна скопіювати з Конструктора сценаріїв для реалістичного тестування.
- Показує підказку: "Цей state можна скопіювати в **Конструктор сценаріїв**".

### Поради
- Якщо "Дефолтний JSON конфіг" порожній, ви побачите "Параметри відсутні" з опцією додати перший параметр.
- Тестуйте з різними значеннями параметрів для забезпечення надійної обробки.
- Перевіряйте логи для розуміння потоку виконання дії.
- Використовуйте режим Повний state при тестуванні дій, які залежать від контексту сценарію.

---

## Інші способи
- Клонування замість створення з нуля — швидше для подібних дій.
- AI-генерація коду/конфіга/документації — для чернеток, але перевіряйте вручну.

---

## Пов'язані інструкції
- [Як створити кастомну дію з усіма полями](/uk/actionjail/how-to/create-custom-action.md) — детальна інструкція з AI та ручним заповненням
- [Про те, як дані з Action Jail потрапляють у Scenario Builder](/uk/actionjail/explanation/action-to-scenario-flow.md)
- [Знайти дію у списку](/uk/actionjail/how-to/filter-search-actions.md)
- [Клонувати дію](/uk/actionjail/how-to/clone-action.md)
- [Actions Reference — повний довідник по стандартних actions](/uk/actionjail/reference/actions-reference.md)








