Программа планирования смен по заданным правилам составляет и публикует график: кто из сотрудников в какой день, в какую смену и на какой должности работает. Коротко: хорошая программа меньше рисует и больше проверяет. Она ловит нарушения правил до публикации графика и уже при сохранении показывает пересекающиеся смены, слишком короткий отдых, смену, назначенную сотруднику в отпуске, или позицию, занятую человеком без нужной квалификации.
Зачем нужна программа планирования смен?
График в таблице подходит маленькой команде. Когда команда растёт, появляются три проблемы: отпуска ведутся в другом файле, обмены сменами обсуждают в групповом чате и не вносят в график, а переработку в конце месяца считают по плану, а не по факту. Программа собирает всё вместе: отпуска, квалификация, тип договора и правила работы становятся входными данными плана, а план становится входными данными табеля.
- Шаблоны смен: утренняя, вечерняя и ночная задаются один раз с началом, концом и длительностью перерыва.
- Потребность: для каждого дня и площадки указывается, сколько людей нужно на какой должности.
- Составление графика: планировщик закрывает потребность, система не предлагает сотрудников в отпуске или без квалификации.
- Проверка правил: пересечения, отдых, недельный лимит и ограничение подряд идущих ночных смен проверяются до сохранения.
- Публикация и обмен: график приходит на телефон сотрудника; обмен требует согласия обоих сотрудников и руководителя.
Основная запись это назначение на смену, а не график
Если хранить график как картинку таблицы, получится архив, по которому потом нельзя сделать запрос. Правильная модель это строка назначения: сотрудник, время начала и конца, площадка, должность и кто сделал назначение. График лишь представление этих строк. Для смен, переходящих через полночь, храните моменты начала и конца, а не дату; иначе смена с 22:00 до 06:00 разделится на два дня и итоги по часам сломаются. Когда опубликованное назначение меняется, старая запись не удаляется; сохраняется, кто и почему её изменил.
Найти нарушение правил после публикации графика уже поздно. Проверки пересечений, отдыха и недельного лимита должны выполняться при сохранении назначения, а кнопка публикации должна быть недоступна, пока есть нарушения.
Как проверяются отдых и пересечения?
Правила рабочего времени и отдыха зависят от страны, отрасли и договора; программа не должна зашивать их в код, а должна читать из таблицы и применять при каждом назначении. Пример ниже сортирует смены одного сотрудника и находит пересечения и слишком короткий отдых между сменами. Порог задайте по своей политике и с учётом мнения юриста; эта статья не является юридической консультацией.
type Assignment = { employeeId: string; start: Date; end: Date };
const MIN_REST_HOURS = 11; // set from your own policy and legal advice
function violations(list: Assignment[]): string[] {
const errors: string[] = [];
const byEmployee = new Map<string, Assignment[]>();
for (const a of list) {
byEmployee.set(a.employeeId, [...(byEmployee.get(a.employeeId) ?? []), a]);
}
for (const [id, items] of byEmployee) {
items.sort((x, y) => x.start.getTime() - y.start.getTime());
for (let i = 1; i < items.length; i++) {
const prev = items[i - 1];
const cur = items[i];
if (cur.start < prev.end) errors.push(id + ': overlapping shifts');
const restHours = (cur.start.getTime() - prev.end.getTime()) / 3_600_000;
if (restHours >= 0 && restHours < MIN_REST_HOURS) {
errors.push(id + ': rest period too short');
}
}
}
return errors;
}Обмен сменами и срочные замены
Если запросы на обмен не проходят через формальный процесс, график перестаёт отражать реальность. Хороший процесс: сотрудник отмечает смену для обмена, подходящие и квалифицированные коллеги получают уведомление, кто-то соглашается, руководитель согласует, и назначение обновляется сразу для обоих. При срочных пробелах, например из-за болезни, система показывает людей, которые подходят на смену, не нарушают правило отдыха и не превышают недельный лимит. Мгновенные уведомления можно отправлять через WhatsApp Business API или внутри приложения, а напоминания перед публикацией настраиваются через плановую задачу (cron job).
Сравнение плана и факта
График говорит, что должно произойти; отметки прихода и ухода говорят, что произошло. Главная ценность в том, чтобы поставить их рядом: смены, начатые с опозданием, незапланированная переработка, неявки. О данных учёта времени читайте статью о системе учёта рабочего времени (PDKS), а о сценарии, где смены связаны с заказами на производственной линии, статью о программе учёта производства (MRP). В табель и расчёт зарплаты должно идти утверждённое фактическое время, а не плановое.
Нужно ли автоматическое планирование?
Алгоритмы, которые строят весь график сами, выглядят привлекательно, но в большинстве компаний это не первая потребность. Сначала нужно правильно описать правила, сделать нарушения видимыми сразу и фиксировать обмены. Когда эта основа готова, полуавтоматические инструменты вроде «скопировать прошлую неделю» и «заполнить пробелы подходящими людьми» снимают с планировщика большую часть работы. Полную оптимизацию стоит оценивать отдельно для команд с несколькими площадками и сотнями сотрудников.
Итог
Ценность программы планирования смен в том, что она считает назначение основной записью, применяет правила до публикации и сравнивает план с фактической явкой. Если хотите внедрить систему смен и дежурств под вашу команду, загляните на страницу корпоративные решения или свяжитесь с нами через форму запросить смету.