Темный режим
API Import Workflow
1. Обзор workflow
Workflow для импорта сотрудников с обработкой данных и интеграцией с внешним API.
| Название | api-import |
|---|---|
| База данных | PostgreSQL (employees, departments) |
| Основные функции | Импорт сотрудников, обработка данных, создание/обновление записей |
2. Employee Import Workflow
Полный процесс импорта данных сотрудника с обработкой и проверкой.
Цепочка выполнения:
-
When Executed by Another Workflow
Триггер, запускаемый другим workflow. Принимает данные сотрудника в формате:
{ "Фамилия": "Ростонская", "Имя": "Полина", "Отчество": "Андреевна", "Должность": "Главный специалист", "Отдел": "Сектор поддержки начинающих предпринимателей...", "Город": "Санкт-Петербург", "Дата рождения": 37419, "Дата приема на работу": 45194, "Пол": "женский", "Email": "rostonskaya@crpp.ru", "Телефон": 79626812567, "Telegram": "polinarostonskaya", "companyId": 70, "token": "87d2a6f7-2cfd-4136-9281-8020ffb16ebe" } -
Edit Fields8
Преобразует входящие данные в стандартные поля:
lastName = $json['Фамилия'] firstName = $json['Имя'] middleName = $json['Отчество'] role = $json['Должность'] departmentName = $json['Отдел'] city = $json['Город'] birthDate = $json['Дата рождения'] hireDate = $json['Дата приема на работу'] gender = $json['Пол'] email = $json.Email phone = $json['Телефон'] Telegram = $json['Telegram'] companyId = $json.companyId token = $json.token -
Code
Выполняет сложную обработку данных:
Функции обработки:
-
format_date - преобразует даты из различных форматов:
- Поддерживает Excel-формат (число дней с 1900-01-01)
- Распознает форматы: xxxx.xx.xx, xx.xx.xxxx, xxxx-xx-xx, xx/xx/xxxx
- Возвращает дату в формате YYYY-MM-DD
-
format_gender - нормализует пол:
- Приводит к значениям "male" или "female"
- Распознает: "м", "муж", "жен", "женский" и др.
-
generate_department_sql - генерирует SQL для отдела:
- Проверяет существование отдела
- Создает отдел если не существует
- Возвращает departmentId в любом случае
Пример сгенерированного SQL для отдела:
WITH existing_department AS ( SELECT "departmentId" FROM departments WHERE "companyId" = 70 AND "name" = 'Сектор поддержки...' ), inserted_department AS ( INSERT INTO departments ("companyId", "name") SELECT 70, 'Сектор поддержки...' WHERE NOT EXISTS ( SELECT 1 FROM existing_department ) RETURNING "departmentId" ) SELECT "departmentId" FROM existing_department UNION ALL SELECT "departmentId" FROM inserted_department; -
format_date - преобразует даты из различных форматов:
-
Параллельные операции:
-
Postgres (department)
Выполняет сгенерированный SQL для получения departmentId:
{{ $json.generated_sql }} -
Postgres1 (employee check)
Проверяет существование сотрудника:
SELECT COALESCE( (SELECT "userId" FROM employees WHERE email = $1 AND "companyId" = $2 LIMIT 1), NULL ) AS "userId";Параметры: email и companyId
-
Postgres (department)
-
Merge
Объединяет результаты:
- Основные данные сотрудника
- departmentId из Postgres
- userId (если существует) из Postgres1
-
If
Проверяет наличие userId:
Условие: $json.userId пустоеОпределяет, нужно ли создавать нового сотрудника или обновлять существующего.
-
Ветка 1 (новый сотрудник):
-
create employee
Отправляет POST-запрос к API:
POST https://api.hroom.ai/webhook/employees/create Headers: Authorization: {{ $json.token }} Body: { "lastName": "{{ $json.lastName }}", "firstName": "{{ $json.firstName }}", "middleName": "{{ $json.middleName }}", "role": "{{ $json.role }}", "city": "{{ $json.city }}", "birthDate": "{{ $json.birthDate }}", "hireDate": "{{ $json.hireDate }}", "gender": "{{ $json.gender }}", "phone": "{{ $json.phone }}", "email": "{{ $json.email }}", "telegram": "{{ $json.Telegram }}", "companyId": "{{ $json.companyId }}", "departmentId": "{{ $json.departmentId }}", "status": "active" }
-
create employee
-
Ветка 2 (обновление сотрудника):
-
update employee
Отправляет POST-запрос к API:
POST https://api.hroom.ai/webhook/employees/update Headers: Authorization: {{ $json.token }} Body: { "lastName": "{{ $json.lastName }}", "firstName": "{{ $json.firstName }}", "middleName": "{{ $json.middleName }}", "role": "{{ $json.role }}", "city": "{{ $json.city }}", "birthDate": "{{ $json.birthDate }}", "hireDate": "{{ $json.hireDate }}", "gender": "{{ $json.gender }}", "phone": "{{ $json.phone }}", "email": "{{ $json.email }}", "telegram": "{{ $json.Telegram }}", "companyId": "{{ $json.companyId }}", "departmentId": "{{ $json.departmentId }}", "status": "active", "userId": "{{ $json.userId }}" }
-
update employee
Особенности обработки данных:
- Даты: автоматическое преобразование из Excel-формата и других форматов
- Отделы: автоматическое создание при отсутствии
- Пол: нормализация к стандартным значениям
- Проверка: определение существующего сотрудника по email и companyId