Прийом на роботу (Employee Onboarding)¶
Прийом на роботу - це задача, яка дозволяє автоматизувати процес найму нового співробітника, включаючи створення та підписання необхідних документів, валідацію анкетних даних та переведення співробітника в статус "працює".
Компанія може мати кілька шаблонів задачі "Прийом" (наприклад, окремі для штатних співробітників і стажерів). Через API можна створити шаблон, отримати список шаблонів та змінити базові налаштування шаблону (назва, статус, автозавершення, вимоги до полів у мобільному застосунку). Склад документів шаблону налаштовується лише через веб-інтерфейс Вчасно.Кадри. При створенні задачі шаблон обирається полем template_version_identifier; якщо його не передати, використовується найраніше створений активний шаблон "Прийом" компанії (див. Вибір шаблону без template_version_identifier).
Особливості задачі "Прийом"¶
Задача "Прийом" відрізняється від інших задач наступними особливостями:
- Валідація анкетних даних - можливість відправити анкету співробітника на заповнення та валідацію через спеціальні ендпоінти
/submit-questionnaireта/submit-approve-questionnaire - Автоматичний перевід співробітника в статус "працює" - після завершення всіх маршрутів задачі, співробітник автоматично отримує статус
working - Прив'язка до співробітника зі статусом
candidateабоdraft- задачу можна створити тільки для співробітників, які ще не працюють
Статуси задачі¶
Задача "Прийом" має наступні статуси:
| Статус | Опис |
|---|---|
new |
Задача створена, але документи ще не відправлені на підписання |
in_progress |
Документи відправлені на підписання, процес в процесі виконання |
completed |
Всі документи підписані, задача завершена, співробітник переведений в статус working |
canceled |
Задача скасована |
Статуси маршруту задачі (Task Route)¶
Кожен маршрут в задачі має свій статус:
| Статус | Опис |
|---|---|
new |
Маршрут створений, але ще не активний |
in_progress |
Маршрут активний, документи на підписанні |
completed |
Маршрут завершений, всі документи підписані |
canceled |
Маршрут скасований |
Типи маршрутів для задачі "Прийом"¶
Задача "Прийом" може містити наступні типи маршрутів:
| Тип маршруту | Опис |
|---|---|
questionnaire_sent |
Відправлення анкети співробітнику на заповнення |
questionnaire_validation |
Валідація заповненої анкети співробітника |
document_generation |
Генерація документів на основі шаблонів |
signing |
Підписання документів |
approval |
Погодження документів |
make_employee_working |
Автоматичний перевід співробітника в статус working |
Статуси документів¶
Документи в рамках задачі "Прийом" мають наступні статуси:
| Статус | Опис |
|---|---|
new |
Документ створений, але ще не відправлений на підписання |
in_progress |
Документ відправлений на підписання, очікується підпис |
completed |
Документ підписаний всіма підписантами |
canceled |
Документ скасований |
Статуси підписантів¶
Кожен підписант документа має свій статус:
| Статус | Опис |
|---|---|
new |
Підписант доданий, але документ ще не відправлений |
completed |
Підписант підписав документ |
declined |
Підписант відхилив документ |
Робота з анкетними даними (Questionnaire)¶
Одна з ключових особливостей задачі "Прийом" - можливість роботи з анкетними даними співробітника. Це дозволяє:
- Відправити анкету співробітнику через маршрут типу
questionnaire_sent - Отримати заповнені дані від співробітника
- Провалідувати дані через маршрут типу
questionnaire_validation - Зберегти дані в профілі співробітника
Ендпоінти для роботи з анкетою (v2)¶
Актуальна версія роботи з анкетою — v2. Тіло запиту має формат {employee, blocks}, узгоджений із конфігурацією анкети (блоки та поля), замість попереднього формату v1 {employee, documents, social_statuses}.
GET /api/public/v2/employee-onboarding/{task_id}/questionnaire-definition - отримати визначення (конфігурацію) анкети, закріпленої за задачею. Кожен блок і поле мають стабільний version_identifier, тож клієнт може кешувати конфігурацію та виявляти зміни схеми між запитами.
GET /api/public/v2/employee-onboarding/{task_id}/questionnaire - отримати відповіді анкети (у форматі блоків), які заповнив співробітник.
POST /api/public/v2/employee-onboarding/{task_id}/submit-questionnaire - відправити заповнену анкету на валідацію. Дані будуть збережені, але анкета залишиться на етапі валідації (is_questionnaire_approved=false).
POST /api/public/v2/employee-onboarding/{task_id}/submit-approve-questionnaire - відправити та затвердити анкету одночасно. Дані будуть збережені та анкета буде затверджена (is_questionnaire_approved=true), маршрут questionnaire_validation автоматично завершиться.
Застаріло (v1): ендпоінти
POST /api/public/v1/employee-onboarding/{task_id}/submit-questionnaireтаPOST /api/public/v1/employee-onboarding/{task_id}/submit-approve-questionnaire(форматEmployeeProfileUpdateSerializerз документами та соціальними статусами) залишаються для зворотної сумісності, але рекомендується використовувати v2.
Детальніше про структуру профілю співробітника див. в документації Employee.
Очікувана послідовність дій для задачі "Прийом"¶
Базовий сценарій без анкети¶
-
Створити задачу "Прийом". Передавати ID співробітника (
initiator_id) на цьому кроці не обов'язково: якщо його не вказати, система створить нового співробітника у статусі «Кандидат» на основі переданих полів (first_name,last_name,phoneтощо). Якщоinitiator_idвказано — співробітник повинен мати статусcandidateабоdraft -
Отримати створену задачу та її маршрути
-
Отримати документи для підпису
-
При необхідності, створити додаткові документи
-
При необхідності, завантажити файл документу
-
Отримати список підписантів документа
-
При необхідності, додати або видалити підписантів
-
Відправити документи на підписання
-
При необхідності, надіслати нагадування підписанту
-
Скачати підписаний документ
Сценарій з анкетою¶
Якщо в шаблоні задачі налаштовано маршрути questionnaire_sent та questionnaire_validation, послідовність дій може бути наступною:
-
Створити задачу "Прийом"
-
Система автоматично відправить анкету співробітнику через маршрут
questionnaire_sent -
Співробітник заповнює анкету через веб-інтерфейс або через інтеграцію
-
Отримати визначення (конфігурацію) анкети, щоб знати структуру блоків і полів:
-
За потреби — отримати поточні відповіді анкети:
-
Відправити заповнену анкету на валідацію через API:
-
Після перевірки даних, затвердити анкету:
-
Після затвердження анкети, маршрут
questionnaire_validationавтоматично завершиться -
Продовжити роботу з документами (кроки 3-10 з базового сценарію)
Додаткові операції¶
Робота з шаблонами "Прийом"¶
Отримати список шаблонів "Прийом" компанії (активних і неактивних). Для створення задачі можна використовувати лише активні шаблони:
Створити новий шаблон або оновити наявний за ідентифікатором версії шаблону. Новий шаблон отримує стандартний набір документів (анкета, заява, наказ, особова картка, переведення в статус "працює"):
Приклад: окремий шаблон для стажерів¶
-
Створити шаблон:
POST /api/public/v1/employee-onboarding/template { "name": "Прийом стажера", "is_auto_complete": false }Відповідь
200 OK:{ "detail": { "version_identifier": "3f6c1a2e-8d4b-4c1e-9a7f-2b5d6e8f0a13", "type": "employee_onboarding", "name": "Прийом стажера", "status": "active", "is_auto_complete": false, "mobile_name_requirement": null, "mobile_description_requirement": null } } -
Переглянути шаблони компанії —
version_identifierз цього списку передається при створенні задачі:GET /api/public/v1/employee-onboarding/template?page_num=1&page_size=100{ "detail": { "items": [ { "version_identifier": "9b2e4d71-5a3c-4f08-b6e1-7c9d0a4f2e55", "type": "employee_onboarding", "name": "Прийом на роботу", "status": "active", "is_auto_complete": null, "mobile_name_requirement": null, "mobile_description_requirement": null }, { "version_identifier": "3f6c1a2e-8d4b-4c1e-9a7f-2b5d6e8f0a13", "type": "employee_onboarding", "name": "Прийом стажера", "status": "active", "is_auto_complete": false, "mobile_name_requirement": null, "mobile_description_requirement": null } ], "page_num": 1, "page_size": 100, "has_prev": false, "has_next": false, "total_items": 2, "total_pages": 1 } } -
Створити задачу з обраного шаблону:
POST /api/public/v1/employee-onboarding { "template_version_identifier": "3f6c1a2e-8d4b-4c1e-9a7f-2b5d6e8f0a13", "first_name": "Олена", "last_name": "Коваль", "phone": "+380501234567" } -
Змінити налаштування шаблону або вимкнути його. Передаються лише поля, які треба змінити;
version_identifierшаблону при цьому не змінюється:PATCH /api/public/v1/employee-onboarding/template/3f6c1a2e-8d4b-4c1e-9a7f-2b5d6e8f0a13 { "status": "inactive" }Неактивний шаблон лишається у списку шаблонів, і його можна знову ввімкнути, передавши
"status": "active".
Можливі помилки при створенні задачі з template_version_identifier:
| Код | Коли |
|---|---|
404 |
Шаблону з таким ідентифікатором немає, він належить іншій компанії або це шаблон іншого типу задачі (наприклад, відпустки) |
400 |
Шаблон «Прийом» компанії неактивний |
Вибір шаблону без template_version_identifier¶
Якщо поле template_version_identifier не передано, шаблон обирається так:
- Серед активних шаблонів "Прийом" компанії береться той, що був створений найраніше. Зазвичай це стандартний шаблон, який компанія отримує при підключенні, тож поява нових шаблонів не змінює поведінку наявних інтеграцій.
- Якщо активних шаблонів немає — береться найраніше створений шаблон незалежно від статусу. Так інтеграції компаній, у яких єдиний шаблон деактивовано, продовжують працювати.
Дата створення шаблону — це дата його першого збереження. Редагування шаблону у веб-інтерфейсі чи через PATCH на неї не впливає, тож шаблон, обраний за замовчуванням, від цього не зміниться.
Приклад: у компанії є стандартний шаблон «Прийом на роботу» (створений першим) і доданий пізніше «Прийом стажера», обидва активні. Запит без template_version_identifier створить задачу зі стандартного шаблону. Якщо стандартний шаблон деактивувати, такі задачі створюватимуться з «Прийом стажера».
Якщо в компанії кілька активних шаблонів "Прийом", рекомендуємо завжди передавати
template_version_identifierявно — тоді вибір шаблону не залежить від того, які шаблони існують у компанії.
Оновлення задачі¶
Задачу можна оновити через ендпоінт PATCH /api/public/v1/employee-onboarding/{task_id}:
Можна оновити наступні поля:
- name - назва задачі
- status - статус задачі (для скасування задачі передайте canceled)
- cancellation_reason - причина скасування
- manager_id - ID менеджера задачі
Оновлення документа¶
Документ можна оновити через ендпоінт PATCH /api/public/v1/employee-onboarding/{task_id}/document/{document_id}:
Видалення документа¶
Документ можна видалити через ендпоінт DELETE /api/public/v1/employee-onboarding/{task_id}/document/{document_id}:
Список всіх задач "Прийом"¶
Отримати список всіх задач "Прийом" можна через ендпоінт GET /api/public/v1/employee-onboarding:
Підтримуються наступні фільтри (TaskFilterParams):
| Параметр | Тип | Опис |
|---|---|---|
status__in |
array[TaskStatus] | Фільтр за статусом задачі (new, in_progress, completed, canceled) |
initiator__in |
array[UUID] | Фільтр за ID співробітників-ініціаторів |
manager__in |
array[UUID] | Фільтр за ID менеджерів задачі |
external_id__in |
array[string] | Фільтр за зовнішніми ID задачі |
task_template__in |
array[UUID] | Фільтр за ID шаблонів задач |
task_template_type__in |
array[TaskTemplateType] | Фільтр за типом шаблону |
start_date |
date | Нижня межа періоду створення задачі |
end_date |
date | Верхня межа періоду створення задачі |
is_approved |
boolean | true — задачу успішно погоджено; false — погодження скасовано |
is_approval_needed |
boolean | true — є незавершене погодження; false — погодження не потрібне або завершене |
search |
string | Повнотекстовий пошук |
page, size |
int | Пагінація |
Скасування задачі¶
Скасувати задачу "Прийом" можна через ендпоінт POST /api/public/v1/employee-onboarding/{task_id}/cancel:
Маршрути задачі¶
Отримати повний список маршрутів задачі з інформацією про виконавців та статуси:
Перевизначення підписантів документа¶
Замінити список підписантів документа (видаляє старих і додає нових):
Погодження¶
Отримати список маршрутів погодження задачі та перевизначити погоджувачів:
Вкладення задачі¶
Отримати список додатків (вкладень) задачі:
Дозволені формати файлів для завантаження¶
При завантаженні документів через ендпоінт POST /api/public/v1/employee-onboarding/{task_id}/document/{document_id}/upload підтримуються наступні формати:
- PNG, JPEG, JPG, SVG
- PDF
- XLS, XLSX, CSV
- DOC, DOCX
- TXT, XML
Поля для створення задачі "Прийом"¶
| Поле | Тип | Опис | Обов'язкове |
|---|---|---|---|
template_version_identifier |
UUID | Ідентифікатор версії шаблону "Прийом" (з GET /api/public/v1/employee-onboarding/template). Якщо не вказано — використовується найраніше створений активний шаблон компанії (див. правило вибору). Шаблон має належати компанії та бути активним. |
Ні |
initiator_id |
UUID | ID співробітника (сутність employee), для якого створюється задача. Якщо не вказано — система створить нового співробітника у статусі «Кандидат» з переданих полів. Якщо вказано — співробітник повинен мати статус candidate або draft. |
Ні |
first_name |
string | Ім'я співробітника | Умовно¹ |
last_name |
string | Прізвище співробітника | Умовно¹ |
middle_name |
string | По батькові співробітника | Ні |
phone |
string | Номер телефону співробітника | Умовно¹ |
date_joined |
date (YYYY-MM-DD) |
Дата прийняття на роботу (перший робочий день) | Ні |
position |
string | Посада співробітника | Ні |
group_id |
UUID | ID підрозділу (сутність group), до якого належить співробітник | Ні |
company_number |
string | Табельний номер співробітника в компанії | Умовно² |
ipn |
string | ІПН або серія/номер паспорта співробітника | Умовно² |
work_email |
string | Робочий email співробітника | Умовно³ |
email |
string | Особистий email співробітника | Ні |
leader_id |
UUID | ID керівника (сутність employee) | Ні |
managerial_leader_id |
UUID | ID адміністративного керівника (сутність employee) | Ні |
sign_type |
string | Тип підпису: personal (особистий ключ, ФОП, зв'язок по ІПН) або corporate (корпоративний ключ, зв'язок по work_email) |
Ні |
name |
string | Назва створеної задачі | Ні |
skip_questionnaire |
boolean | Пропустити кроки «Анкета» та «Погодження» (за замовчуванням false) |
Ні |
skip_application |
boolean | Не створювати документ «Заява на прийом» (за замовчуванням false) |
Ні |
skip_order |
boolean | Не створювати документ «Наказ про прийняття на роботу» (за замовчуванням false) |
Ні |
skip_employee_form |
boolean | Не створювати документ «Особова картка працівника» (за замовчуванням false) |
Ні |
manager_id |
UUID | ID співробітника-менеджера, який відповідає за задачу | Ні |
external_id |
string | Зовнішній ідентифікатор задачі для інтеграції з зовнішніми системами | Ні |
is_auto_complete |
boolean | Перевизначає налаштування автозавершення задачі із шаблону | Ні |
¹ Обов'язкове лише при створенні нового співробітника (коли
initiator_idне передано). ² Обов'язкове приskip_questionnaire=trueта створенні нового співробітника. ³ Обов'язкове приskip_questionnaire=true,sign_type=corporateта створенні нового співробітника.
Поля в відповіді при отриманні задачі¶
| Поле | Тип | Опис |
|---|---|---|
id |
UUID | ID задачі |
initiator_id |
UUID | ID співробітника, для якого створена задача |
manager_id |
UUID | null | ID менеджера задачі |
status |
TaskStatus | Статус задачі: new, in_progress, completed, canceled |
name |
string | null | Назва задачі |
description |
string | null | Опис задачі |
cancellation_reason |
string | null | Причина скасування задачі |
cancelled_by |
TaskCancelledByType | null | Хто скасував задачу: initiator, manager, api, document_decline |
cancelled_by_employee_id |
UUID | null | ID співробітника, який скасував задачу |
cancelled_by_user_id |
UUID | null | ID користувача, який скасував задачу |
cancellation_date |
datetime | null | Дата скасування задачі |
external_id |
string | null | Зовнішній ID задачі |
is_questionnaire_sent |
boolean | Чи була відправлена анкета співробітнику |
is_questionnaire_approved |
boolean | Чи була затверджена анкета співробітника |
date_created |
datetime | Дата створення задачі |
date_updated |
datetime | Дата останнього оновлення задачі |
is_auto_complete |
boolean | null | Перевизначення налаштування автозавершення задачі із шаблону |
Важливі моменти¶
-
Співробітник повинен бути в статусі
candidateабоdraft- якщо переданоinitiator_id, не можна створити задачу "Прийом" для співробітника, який уже має статусworking,firedабоarchived. Якщоinitiator_idне передано, нового співробітника буде автоматично створено у статусіcandidate. -
Блокування редагування співробітника - під час активної задачі "Прийом" (статус
newабоin_progress), співробітник заблокований для редагування через інші API. -
Автоматичний перевід в статус
working- залежить від налаштування шаблону задачі (документmake_employee_working, полеconfig.type), яке у ВЕБі відповідає блоку «Переведення співробітника в статус "Працює"»:task_done— співробітник переводиться в статусworkingодразу після успішного завершення задачі (статусcompleted);first_working_day— співробітник переводиться в статусworkingу перший робочий день (коли настанеdate_joined), навіть якщо задачу завершено раніше. Перевід виконується фоновим завданням.
-
Послідовність відправлення документів - документи можна відправляти на підписання послідовно або одночасно, залежно від налаштувань шаблону задачі. Якщо налаштовано послідовне підписання, то наступний документ можна відправити тільки після повного підписання попереднього.
-
Зміна підписантів - підписантів можна додавати та видаляти тільки до моменту відправлення документа на підписання.
-
Підписанти зі статусом
working- в якості підписантів можна використовувати тільки співробітників зі статусомworking. -
Анкета та профіль - дані з анкети зберігаються в профіль співробітника і можуть включати документи та соціальні статуси. Після затвердження анкети, дані стають частиною профілю співробітника.