Перейти к содержимому

Учёт отпусков и отсутствий

Внутренний сервис, где сотрудник подаёт заявку на отпуск или отгул, руководитель согласует её, видя календарь команды, а HR получает сводку отсутствий без ручной сверки.

Без него заявки приходят письмом, в мессенджер и в общую таблицу, и ни один из этих каналов не связан с реальными остатками дней. Руководитель согласует отпуск, не зная, что половина команды уже отсутствует в эту неделю. HR каждый расчётный период сверяет остатки в нескольких местах. Заявка может висеть без ответа несколько дней, потому что ушла не тому человеку, а отчёт на конец года собирается из трёх источников и всё равно не сходится.

  • Принимает заявки в одном месте. Сотрудник выбирает вид отсутствия и даты, видит свой остаток и историю заявок.
  • Направляет заявку нужному согласующему. Маршрут строится по подразделению: сначала руководитель, при длинном отпуске — дополнительно HR; у каждого шага свой срок.
  • Показывает пересечения до решения. На экране согласования виден календарь команды и предупреждение, если в эти даты отсутствует слишком много людей.
  • Учитывает правила разных офисов. Виды отсутствий, начисление и перенос дней хранятся по юрлицу или локации, и заявка проверяется по правилам своего офиса.
  • Ведёт журнал. Каждое изменение статуса сохраняется с автором и временем, поэтому ответ на вопрос «кто и когда согласовал» — это фильтр, а не расследование.
  • Остатки считает учётная система. В большинстве российских компаний остатки отпусков, график отпусков и приказы ведутся в 1С:ЗУП или аналоге. Сервис загружает остатки оттуда по расписанию и показывает дату обновления, а не считает собственную версию.
  • Кадровое оформление остаётся за учётной системой. Согласованная заявка — сигнал для кадровиков, а не замена заявления и приказа. Если нужна юридически значимая подпись, её оформляют через КЭДО или бумажный порядок, принятый в компании.
  • Готовые решения часто достаточны. Модули отпусков в 1С, Битрикс24 или HR-платформах закрывают типовой процесс. Своё приложение оправдано, когда маршруты согласования, правила по локациям или связь с планированием смен не укладываются в готовый продукт.
  • Каждая заявка должна иметь согласующего. Для подразделения задаётся согласующий по умолчанию и замещающий на время его отпуска, иначе заявки попадают в очередь, которую никто не смотрит.
  • Причины отсутствия — чувствительные данные. Для больничного достаточно факта и дат; диагнозы и медицинские документы в сервисе не храните. Коллеги видят в календаре «отсутствует», а не вид отсутствия. Состав данных согласуйте с ответственным за 152-ФЗ.
  • Доступ ограничивают на сервере. Сотрудник видит свои заявки и остатки, руководитель — свою команду, HR — всех. Это правило действует в календаре, таблицах и выгрузке.
  • Порог покрытия — это настройка. Минимальная доля присутствующих в команде задаётся для подразделения и уточняется со временем.

Промпты рассчитаны на AI-агента (Claude Code, Cursor и аналоги) в Laravel-проекте с установленным Filament 4.x. Отправляйте их по одному и проверяйте результат каждого шага.

Создай модели и миграции для учёта отсутствий: LeaveType (название,
требует ли согласования HR, порог дней для HR), LeavePolicy (юрлицо или
локация, вид отсутствия, правила переноса), LeaveBalance (сотрудник, вид,
остаток, дата загрузки из учётной системы), LeaveRequest (сотрудник, вид,
даты, число дней, статус, текущий согласующий), LeaveApprovalStep
(заявка, согласующий, порядок, решение, комментарий, время). Добавь
фабрики с демо-данными.
Сгенерируй для сотрудника страницу «Мои отсутствия»: остатки по видам с
датой обновления, история заявок и форма новой заявки. При отправке
проверяй правила политики его локации и достаточность остатка и строй
маршрут: руководитель, затем HR, если число дней выше порога вида.
Сделай ресурс заявок для согласующих: таблица ожидающих решения с
фильтрами по подразделению и датам, действия «Согласовать» и «Отклонить»
с комментарием. На экране решения покажи календарь команды на эти даты и
предупреждение, если доля присутствующих ниже порога подразделения.

Проверьте, что в календаре коллеги видят только факт отсутствия, без его вида.

Сделай фоновую задачу, которая раз в сутки загружает остатки из учётной
системы по API или из файла и пишет журнал загрузок. Если заявка ждёт
решения дольше двух рабочих дней, передавай её замещающему согласующему и
уведомляй HR. Все смены статуса записывай в журнал.
Настрой доступ: сотрудник видит свои данные, руководитель — свою команду,
HR — всех. Добавь виджеты «отсутствуют сегодня и на неделе» и «заявки без
решения», а также экспорт согласованных отсутствий за период для
кадровой службы.