Перейти до вмісту

Автоматизації

Автоматизація визначає коли, якщо і тоді: коли завдання переходить у «Готово» — записати час; коли надходить негативний відгук — сповістити відповідальну особу й написати в Slack; щопонеділка о 9:00 — створити рядок для зустрічі команди. А коли однієї дії замало, вона виконує потік: знайти рядок, піти тією чи іншою гілкою залежно від того, що в ньому, повторити кроки на кожному рядку, що відповідає фільтру, і використати на одному кроці те, що знайшов або записав попередній крок, зачекати три дні перед нагадуванням, надіслати PDF у долученні.

Їх відкривають через Автоматизації в блоці відкритої бази внизу бічної панелі, і вони потребують рівня Керування.

Потік і один із його запусків, накладений на нього

Потік малюється згори донизу: тригер, а потім кожен крок. + на лінії відкриває список кроків, розподілених за категоріями — Рядки, Комунікація, Документи, ШІ, Логіка — з пошуком, і додає вибраний крок у цьому місці; картка відкриває свої налаштування праворуч. Проста автоматизація — тригер і одна дія — вміщується у дві картки й налаштовується, як і раніше.

ТригерНалаштування
Рядок створенотаблиця
Рядок зміненотаблиця і, за потреби, лише ті поля, за якими треба стежити
За розкладомщогодини, щодня чи щотижня, у вибраний час і часовому поясі
Натиснуто кнопкуполе «Кнопка» таблиці
Рядок видаляєтьсятаблиця; кроки посилаються на рядок таким, яким він був
Рядок потрапляє у фільтртаблиця і фільтр: автоматизація запускається, коли рядок у нього потрапляє, і повторно запускається лише після того, як він із нього вийде — «рахунок стає простроченим», а не «прострочений рахунок змінюється»
Настає датаполе «Дата» таблиці, зсув — за три дні до, того самого дня, тиждень після — і час: нагадування про термін, річниці договору
Отримано вебхукнічого: автоматизація отримує власну адресу, яку викликає інша програма (деталі)

Тригер на рядках бачить усі записи: з інтерфейсу, API, від агента, з опублікованої форми і навіть із прямого SQL — автоматизації запускаються з історії, яка фіксує їх усі.

Необов’язкова умова мовою фільтрів — statut eq "fait", montant gte 10000 and payee eq false, — яка перевіряється для рядка в момент дії. Запуск, умова якого не виконується, «пропускається», і про це повідомляється.

До сорока кроків по черзі; перший крок, що завершився помилкою, зупиняє наступні — окрім випадків усередині блоку Спроба (деталі).

КрокЩо він робить
Змінити рядокзаписує значення в рядок, який запустив автоматизацію, — або в той, що його знайшов чи створив один із кроків
Створити рядоку цій таблиці або в іншій таблиці бази
Знайти рядокперший рядок таблиці, що відповідає фільтру, щоб наступні кроки посилалися на нього чи змінювали його
Сповістити когосьсповіщення вибраним людям або людині з поля «Особа»
Надіслати електронний листлюдям з команди, особі з поля «Особа», на адресу з поля «Електронна пошта» — клієнту, постачальнику — або на вписані адреси; тема та текст цитують рядок і попередні кроки
Викликати вебхукзапит HTTPS до служби — метод, адреса, заголовки та тіло на ваш розсуд (деталі); на його відповідь потім можна посилатися
Надіслати в Slackповідомлення в підключений канал
Запитати ШІвідповідь постачальника ШІ на інструкцію, яка посилається на рядок і попередні кроки, — написати, підсумувати, класифікувати, — прочитана як текст, число, так чи ні, дата або варіант зі списку
Умовакілька гілок: вибирається перша, умова якої виконується, або «Інакше», якщо не виконується жодна; потім гілки знову сходяться
Для кожного рядкакроки, які вона містить, — один раз для кожного рядка таблиці, що відповідає фільтру (деталі)
Видалити рядокрядок, який запустив автоматизацію, або той, що знайшов один із кроків, — він потрапляє в кошик
Підрахувати й підсумуватикількість рядків фільтру, їхня сума, середнє, мінімум або максимум — щоб процитувати чи перевірити далі
Згенерувати PDFдокумент рядка, доданий до поля файлу або долучений до листа
Зачекатитривалість, або дата поля (деталі)
Спробакроки, і інші, якщо один з них завершиться помилкою (деталі)
Запустити автоматизаціюіншу автоматизацію бази, на рядку її таблиці

Пошук, який нічого не знайшов, не зупиняє потік: кроки, що мали змінити його рядок, пропускаються. Щоб у такому разі зробити щось інше, Якщо жодного рядка не знайдено…, під пошуком, додає умову, яка це перевіряє.

Умова перевіряє рядок за фільтром, або значення: відповідь ШІ, код вебхука, підсумок — «{{e2.reponse}} дорівнює «Терміново»», «{{e3.somme.montant}} більше або дорівнює 1000». Числа порівнюються як числа, тексти — без діакритики та регістру.

Крок Для кожного рядка читає рядки таблиці, що відповідають його фільтру — порожній: усі, — у вибраному порядку, до своєї межі (типово 50, не більше 200), а потім виконує один раз для кожного з них кроки, розміщені в його рамці. «Щопонеділка нагадувати про неоплачені рахунки» записується так: У визначений час, потім Для кожного рядка рахунків payee eq false and relancee eq false, а в циклі — електронний лист контактній особі рахунку та Змінити рядок, яка встановлює прапорець «Relancée».

У циклі ідентифікатор кроку називає рядок цього проходу: {{e1.client}} посилається на нього, а Змінити рядок пропонує його серед рядків для зміни. Після циклу {{e1.nombre}} показує, скільки рядків він опрацював, — наприклад, для підсумку в Slack. Фільтр може посилатися на те, що передує кроку: якщо автоматизацію запустив оплачений рахунок, facture eq {{_id}} перебирає його рядки деталізації.

Рядки, що перевищують межу, чекають наступного запуску, який про це повідомляє: щоб опрацювати їх усі протягом кількох запусків, виводьте з фільтра ті, що вже опрацьовані, — прапорець «relancée», дата. Цикл не може містити інший цикл, а запуск зупиняється через дві хвилини.

Крок Зачекати призупиняє виконання — на три години, два дні — або до дати поля рядка, із зсувом і часом: «за день до терміну, о 9:00». Виконання з’являється як Призупинено на вкладці Запуски, із датою відновлення.

Виконання продовжується з наступного кроку, перечитуючи свої рядки: «через три дні після надсилання комерційної пропозиції, якщо вона досі не прийнята, нагадати» записується як Зачекати 3 дні, а потім умова за статусом комерційної пропозиції — таким, яким він є на той день. Вимкнення автоматизації зупиняє призупинені виконання; очікування не можна розмістити ні в циклі, ні в блоці Спроба, і воно триває щонайбільше рік.

Блок Спроба має дві гілки. Перша виконується; якщо один з її кроків завершується помилкою, потік переходить до другої — У разі помилки — яка посилається на саму помилку: {{e4.erreur}}, код, і {{e4.etape}}, крок, — а потім потік продовжується після блоку. Це дозволяє попередити когось, коли служба не відповідає, не зупиняючи все інше.

Простіше: вебхук може сам повторити спробу до трьох разів після збою служби, а цикл може продовжити роботу, незважаючи на рядок з помилкою.

Згенерувати PDF створює документ рядка — за шаблоном документа його таблиці, або за карткою всіх його полів — і може додати його до поля файлу. Надіслати електронний лист може потім долучити його, разом із файлами поля файлу чи зображення:

  • лист кожному окремо, або один для всіх, з одержувачами в копії;
  • повідомлення у форматованому тексті — жирний, списки, посилання — що цитує рядок;
  • адреса для відповіді: ваша за замовчуванням, або адреса з поля «Електронна пошта»;
  • до 50 одержувачів, 10 вкладень і 15 МБ.

«Коли комерційна пропозиція переходить у «Прийнято», надіслати рахунок клієнту, бухгалтерію в копії»: Рядок потрапляє у фільтр statut eq "accepte", Згенерувати PDF із шаблоном «Рахунок», Надіслати електронний лист на поле «Електронна пошта» клієнта, з долученим рахунком.

Служба, що викликає basedb

Section titled “Служба, що викликає basedb”

З тригером Отримано вебхук автоматизація має власну секретну адресу, яку треба дати програмі, що має її запускати, — інтернет-магазину, зовнішній формі, інструменту автоматизації:

Fenêtre de terminal
curl -X POST "https://basedb.example.com/api/v1/hooks/<secret>" \
-H "content-type: application/json" \
-d '{"client": {"nom": "Dupont"}, "total": 120}'

Кроки посилаються на надіслане: {{trigger.client.nom}}, {{trigger.total}}; форма зчитується так само, текст — через {{trigger.texte}}. Адреса копіюється з налаштувань тригера; Змінити адресу замінює її, і стара відразу припиняє діяти. Запит отримує 202, автоматизація запускається за секунду.

Крок Викликати вебхук типово надсилає методом POST дані автоматизації: вибраний рядок і те, що знайшли або записали попередні кроки. Щоб звернутися до служби так, як вона цього очікує, налаштовують:

  • метод: POST, PUT, PATCH, GET або DELETE — два останні без тіла;
  • адресу, яка може посилатися на значення після свого хоста — https://api.exemple.fr/clients/{{e2.numero}}; кожне значення в ній кодується;
  • заголовки, значення яких може посилатися на щось: Idempotency-Key: {{_id}};
  • тіло: дані автоматизації, JSON для складання, форма (пара ключ=значення на рядок) або текст. У JSON посилання в лапках — це текст, а поза лапками — значення: число, так чи ні, список:
{ "facture": "{{e1.numero}}", "montant": {{e1.montant}}, "payee": {{e1.payee}} }

Ключ API чи токен кладуть у секретний заголовок (замок): зашифрований ключем екземпляра, він більше ніколи не показується — ні на екрані, ні через API, ні Copilot-у — і йде лише на той хост, для якого ви його дали. Зміна хоста адреси вимагає дати його знову; Замінити дає ввести новий.

Як і поле ШІ, крок надсилає постачальнику свою інструкцію, де кожне посилання замінено його значенням:

Cet avis de {{auteur}} demande-t-il une action de notre part ? {{avis}}

Ви вибираєте очікувану відповідь — вільний чи короткий текст, число, так чи ні, дату, вебадресу або варіант зі списку, який можна взяти з поля вибору. Модель про це попереджають, і відповідь, яка його не містить, призводить до помилки кроку. Наступні кроки посилаються на неї через {{e1.reponse}}: у назві створеного завдання, у повідомленні чи в полі вибору, де вона потрапляє у варіант із тим самим підписом.

Те, на що посилається інструкція, надсилається постачальнику: крок потребує вашої згоди, яку треба надати знову, коли інструкція змінюється. Кожен виклик журналюється й враховується разом із полями ШІ в BASEDB_AI_FIELD_QUOTA (типово 300 на годину). ШІ нічого не робить самостійно: записують чи сповіщають кроки, розташовані після нього.

Значення, повідомлення й фільтри можуть посилатися на те, що було раніше, через кнопку { } поруч із кожним текстом:

  • {{Titre}}, {{_id}}: рядок, який запустив автоматизацію;
  • {{e2.titre}}, {{e2._id}}: рядок, знайдений, створений чи змінений кроком e2, — кожен крок має свій ідентифікатор на картці;
  • {{e3.statut}}, {{e3.reponse.numero}}: що відповів вебхук e3;
  • {{e4.reponse}}: відповідь кроку ШІ e4;
  • {{e5.client}} у циклі e5 — рядок цього проходу; {{e5.nombre}} після циклу — кількість опрацьованих рядків;
  • {{e6.nombre}}, {{e6.somme.montant}}, {{e6.moyenne.montant}}, {{e6.max.echeance}}: те, що підрахував крок e6;
  • {{e7.erreur}}, {{e7.etape}}: помилка, яку перехопив блок Спроба e7;
  • {{e8.nom}}: назва PDF кроку e8;
  • {{trigger.client.nom}}: те, що надіслав вхідний вебхук;
  • {{_maintenant}}: момент запуску.

Значення, що складається з одного посилання, передає саме значення: зв’язок, особу, варіант вибору — саме так створений рядок пов’язується з тим, який знайшов пошук. У фільтрі посилання завжди є значенням для порівняння, а не частиною мови фільтрів.

Крок може посилатися лише на те, що гарантовано відбулося до нього: на те, що знайшла одна з гілок, після умови посилатися вже не можна. Редактор повідомляє про це на картці ще до збереження.

Copilot у заголовку відкриває праворуч розмову природною мовою про автоматизації бази: «коли завдання переходить на перевірку, сповісти призначену людину», «додай підсумок від ШІ в нотатки», «чому останній запуск завершився помилкою?». Він відповідає і пропонує цілу автоматизацію — ту, що у вас на екрані, змінену, або нову, — зі списком змін.

Copilot нічого не зберігає: Накласти на потік показує пропозицію в редакторі, де ви переглядаєте її перед збереженням, — а Скасувати на картці повертає потік до попереднього стану. Нова автоматизація відкривається в редакторі, готова до створення. Кожну пропозицію перевіряють так само, як перевіряли б збереження; те, що не проходить перевірку, відкидається, і про це повідомляється.

Типово постачальнику ШІ разом із розмовою надсилається лише структура: таблиці та їхні поля, автоматизації бази, та, що на екрані, у тому вигляді, як її показує редактор, і її останні запуски — їхні статуси й коди помилок, ніколи жодних значень. Люди й канали Slack надсилаються під умовними позначками (p1, s1), ніколи за своїми ідентифікаторами. Прапорець Дозволити читання даних дає Copilot змогу в межах розмови читати рядки (не більше 50 за одне читання), і кожне читання наводиться під його відповіддю.

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

Section titled “Тестування й відстеження”

Протестувати на рядку виконує збережену автоматизацію на вибраному рядку — по-справжньому. Вкладка Запуски зберігає останні 50 запусків протягом 30 днів: очікує, виконується, успішний, пропущений із причиною, невдалий із кодом. Вибраний запуск накладається на потік — пройдену гілку підсвічено, кожен виконаний крок показує, що він зробив і скільки часу це зайняло, а решту приглушено. У циклі кожен крок також показує, скільки разів він виконався.

Від чийого імені вона діє

Section titled “Від чийого імені вона діє”

Автоматизація діє з дозволами людини, яка зберегла її останньою, і вони перевіряються заново під час кожного запуску: якщо ця людина втратить дозвіл, крок, якому він був потрібен, завершиться помилкою замість того, щоб оминути обмеження, а пошук знаходить лише те, що вона може читати. Історія показує це як «Автоматизація „Tâche terminée“ · від імені …», а її записи скасовуються так само, як і інші.

  • Те, що записує автоматизація, не запускає жодної іншої: те, що має виконуватися ланцюжком, описують в одному потоці, або через Запустити автоматизацію, не більше трьох рівнів.
  • Пошук повертає один рядок — перший; цикл опрацьовує щонайбільше 200 рядків за запуск. Виконання триває щонайбільше дві хвилини, без урахування очікувань.
  • Немає скриптів. Лист надсилається через сервер вихідної пошти екземпляра.
  • Шаблон бази переносить лише автоматизації без пошуку, циклів, умов і кроків ШІ, і ніколи — вебхук.
  • Вебхук не переходить за перенаправленнями й чекає щонайбільше 10 секунд; відповідь, відмінна від 2xx, призводить до помилки кроку після повторних спроб.
  • Дату, що настає, перевіряють щохвилини; враховуються лише ті, що настали після збереження автоматизації.
  • 100 запусків на годину для кожної автоматизації; пропущений погодинний запуск надолужується лише один раз.
  • Затримка між записом і дією — близько секунди.

basedb — вільне програмне забезпечення від Eodia, студії ШІ-орієнтованого програмного забезпечення.