Реализация бота-помощника для HR (отпуска, заявки) в мобильном приложении
HR-бот берёт на себя рутину, которая съедает время HR-специалистов: заявки на отпуск, проверка остатков дней, больничные, документы. Для сотрудника — это замена писем и звонков в HR. Технически — интеграция с HR-системой через мобильный диалоговый интерфейс.
Интеграция с HR-системами
Основные системы на рынке СНГ: 1С:ЗУП (зарплата и управление персоналом), SAP HCM, HiBob, Workday, Bamboo HR. У каждой свои API с разной степенью документированности.
1С:ЗУП чаще всего интегрируется через HTTP-сервисы (REST-интерфейс, опубликованный на 1С-сервере) или через 1С:Шину. Для SAP — RFC/BAPI или OData API. Workday/HiBob — современный REST с OAuth 2.0.
Для систем без готового API (старые версии 1С, кастомные HR-системы) — промежуточный сервис, который читает данные через ODBC или напрямую из базы данных с readonly-правами.
Жизненный цикл заявки на отпуск
Диалоговый сценарий проще, чем кажется, но каждый шаг требует валидации:
1. Пользователь: «хочу отпуск с 15 марта на 14 дней»
2. Бот: проверяет остаток дней (API) → 14 дней доступно
3. Бот: проверяет пересечения с коллегами (опционально) → конфликтов нет
4. Бот: показывает карточку с датами для подтверждения
5. Пользователь: подтверждает
6. Бот: создаёт заявку в HR-системе → статус «На согласовании»
7. Бот: уведомляет руководителя (push/email)
8. Руководитель: согласует/отклоняет
9. Бот: уведомляет сотрудника о решении
На каждом шаге — обработка исключений: что если остатка дней не хватает, период пересекается с другим отпуском, руководитель не отвечает 2 дня.
// Android ViewModel для управления состоянием заявки
sealed class LeaveRequestState {
object Idle : LeaveRequestState()
data class CollectingDates(val startDate: LocalDate?, val endDate: LocalDate?) : LeaveRequestState()
data class AwaitingConfirmation(val request: LeaveRequestDraft) : LeaveRequestState()
data class Submitted(val requestId: String) : LeaveRequestState()
data class Error(val message: String) : LeaveRequestState()
}
Какие запросы должен закрывать HR-бот
Помимо отпусков — полный перечень типовых обращений:
- Остаток отпускных дней и отгулов
- Справка о зарплате / справка 2-НДФЛ (генерация документа или ссылка)
- Заявка на больничный (уведомление + ввод данных листа нетрудоспособности)
- График работы и сменное расписание
- Данные о начислениях и вычетах
- Заявка на командировку
- Корпоративные контакты и оргструктура
Для каждого типа запроса — отдельный сценарий с соответствующими полями.
Безопасность и авторизация
HR-данные чувствительны. Мобильное приложение должно быть аутентифицировано через корпоративный IdP: Azure AD / Entra ID, Okta, Keycloak. SSO через SAML 2.0 или OpenID Connect.
Бот видит данные только текущего сотрудника, не может запросить информацию о другом. Исключение — руководители: они видят данные своей команды в рамках своих прав в HR-системе.
Логирование всех действий через бота — обязательно. Аудит: кто, когда, какую заявку создал.
Уведомления руководителю
Когда сотрудник подаёт заявку, руководитель получает push-уведомление с deeplink в приложение. В приложении — краткий preview заявки, кнопки «Согласовать» / «Отклонить» прямо из notification (на iOS через UNNotificationAction, на Android через Notification Action). Не нужно открывать приложение для простого решения.
Процесс работы
Аудит HR-системы: API возможности, права доступа, тестовый стенд.
Проектирование сценариев для каждого типа заявки.
Разработка интеграционного слоя (API-клиент для HR-системы).
Мобильный клиент: диалоговый UI, карточки заявок, статусы.
Интеграция с IdP для аутентификации.
Ориентиры по срокам
HR-бот для базовых заявок (отпуск + справки) с одной HR-системой — 2–3 недели. Полный набор сценариев, несколько типов заявок, руководительские функции — 1,5–2 месяца.







