Автоматическое распределение заданий на уборку
Модуль Горничные → Задания на уборку теперь поддерживает автоматическое распределение грязных номеров между горничными, назначенными в смену. Алгоритм учитывает этаж, на котором работает сотрудница, и её текущую загрузку — это позволяет сократить время на ручное распределение и сделать нагрузку более равномерной.
Назначение горничной в смену
При добавлении горничной в смену появилась возможность указать, на каком этаже она работает. Это нужно для того, чтобы алгоритм распределения мог сопоставить номер и сотрудницу по географическому признаку.
Новые поля в диалоге назначения:
-
Группа ресурсов — селект с выбором группы номерного фонда;
-
Этажи — мультивыбор этажей из ресурсов выбранной группы. В списке отображаются уникальные значения этажей, присутствующих в данной группе.
Рекомендация: указывайте реальный этаж или этажи, на которых сегодня работает горничная. Чем точнее привязка — тем корректнее отработает алгоритм распределения.
Редактирование назначения
Если нужно изменить группу ресурсов или список этажей уже после того, как горничная назначена в смену:
-
В списке назначенных сотрудниц найдите нужную горничную.
-
Нажмите кнопку «Действия» → «Редактировать».
-
Откроется диалог назначения — измените группу ресурсов или список этажей и сохраните.
Саму горничную изменить нельзя — только её зону работы на текущую смену.
Автоматическое распределение заданий
Рядом с кнопкой «Назначить сотрудника» появилась кнопка «Распределить задачи». Она запускает алгоритм автоматического назначения всех ещё не распределённых грязных номеров между горничными текущей смены.
Как работает алгоритм:
-
Система собирает все ресурсы в статусе «Грязный», по которым ещё нет назначенной горничной.
-
Для каждого такого ресурса подбирается исполнитель по правилам, описанным ниже в разделе «Логика алгоритма».
-
Если у горничной уже были назначенные вручную задания — они не удаляются. Алгоритм добавляет новые задания к уже существующим.
-
После завершения распределения каждая горничная, которой было назначено хотя бы одно новое задание, получает одно push-уведомление в мобильное приложение — независимо от количества назначенных номеров.
Важно: перед запуском алгоритма система запросит подтверждение действия. Это защита от случайного распределения.
Логика алгоритма для супервайзера
При запуске автоматического распределения система по очереди обрабатывает каждый грязный номер без назначенной горничной и подбирает исполнителя по четырём правилам. Ниже — подробный разбор логики, чтобы вы могли понимать, почему конкретный номер ушёл конкретной сотруднице, и могли корректно настроить смену перед запуском.
Правило 1: Совпадение по этажу
Если у номера указан этаж, и в смене есть горничные, закреплённые за этим этажом, система назначает одну из них.
-
Если на этаже одна горничная — номер достаётся ей.
-
Если на этаже несколько горничных — система выбирает ту, у которой наименьшая текущая загрузка. Загрузка оценивается по двум показателям в порядке приоритета:
-
Суммарная трудоёмкость уже назначенных заданий (общая длительность уборки по всем распределённым номерам);
-
При равной трудоёмкости — количество уже назначенных номеров.
-
Что проверить перед запуском: убедитесь, что этажи у горничных указаны корректно. Если на одном этаже работают несколько сотрудниц, алгоритм сам выровняет нагрузку между ними.
Правило 2: Нет горничных на этаже — передаём «свободной»
Если на этаже грязного номера нет ни одной закреплённой горничной, система ищет сотрудниц, у которых не указан ни один этаж в настройках смены.
-
Из таких горничных выбирается та, у которой наименьшая текущая загрузка (сначала по трудоёмкости, затем по количеству номеров).
Что проверить: горничные без привязки к этажу получат номера с тех этажей, которые не охвачены другими сотрудницами. Если вы хотите, чтобы конкретная горничная работала только на своём этаже, — обязательно укажите его в настройках смены.
Правило 3: Все привязаны к этажам — ищем ближайшую
Если у всех горничных в смене указаны этажи, но ни одна не закреплена за этажом грязного номера, система ищет ближайший этаж среди закреплённых за сотрудницами.
-
Сравнивается числовое расстояние между этажом номера и этажами горничных.
-
При равном расстоянии — выбор по минимальной загрузке (трудоёмкость, затем количество номеров).
Что проверить: если у вас есть этажи, на которые не назначена ни одна горничная, номера с них всё равно будут распределены — они уйдут сотрудницам с ближайших этажей.
Правило 4: Номер без этажа
Если у самого номера не указан этаж, система игнорирует географическую привязку и назначает его горничной с наименьшей загрузкой по всей смене — независимо от этажей.
Что проверить: если в списке грязных номеров есть ресурсы без этажа, они будут распределены в последнюю очередь и достанутся наименее занятой горничной. Рекомендуется проверить справочник ресурсов и заполнить этажи у всех номеров — это сделает распределение более предсказуемым.
Итоговый приоритет алгоритма
| Приоритет | Условие | Критерий выбора |
|---|---|---|
| 1 | Горничная закреплена за этажом номера | Наименьшая загрузка (трудоёмкость → кол-во номеров) |
| 2 | Есть горничные без привязки к этажам | Наименьшая загрузка среди них |
| 3 | Все привязаны к этажам, но не к этому | Ближайший этаж → наименьшая загрузка |
| 4 | У номера нет этажа | Наименьшая загрузка по всей смене |
No Comments