Двойная запись на подъёмник: откуда она берётся
Слоты на подъёмники не учитывают перерывы и личный график мастеров. Разбираем, из чего на самом деле считается занятость поста и почему двойная запись не появляется там, где её проверяет сервер.
Два автомобиля на 15:00, один подъёмник и двое мастеров, которые оба уверены, что записаны. Обычно в такой сцене виноват не тот, кто записал, а то, чем записывали. Сетка слотов, нарисованная от руки, не знает ни про обед, ни про выходной одного из мастеров, ни про то, что после диагностики пост нужно ещё убрать. Разберёмся, из чего на самом деле считается занятость поста и почему двойная запись не появляется там, где её проверяет сервер, а не человек.
Как выглядит слот, нарисованный вручную
Слот в тетради устроен просто: часы работы сервиса разбиты на равные клетки, а на полях написано, сколько постов в зале. Выглядит аккуратно — и именно поэтому опасно. Сетка одинакова для всех часов дня и для всех мастеров: слот 12:30 в ней существует так же твёрдо, как 10:00, хотя в 12:30 мастер уже ест, а после 15:00 на посту может остаться мусор, который тоже занимает место.
Ручная сетка почти никогда не ошибается в арифметике. Она ошибается в допущениях, и допущений ровно три: у всех мастеров одинаковый день, пост освобождается ровно в момент окончания работы, а помнит про всё это человек, у которого в телефоне ещё двадцать других дел.
Три допущения, из которых растёт конфликт
Перерыв не часть слота. Пока в сетке нет места для обеда, к обеду на неё встаёт тот, кого записали последним. Второй мастер приходит в 12:30, видит занятый пост и либо ждёт, либо берёт работу «на потом» — а машина клиента уже стоит в очереди, и клиент об этом не знает.
Личный день мастера — не его смена. У одного мастера суббота заканчивается в 14:00, второй в этот день не работает вовсе, третий с утра на выезде. Если личное расписание живёт в голове у мастера, оно невидимо для того, кто принимает звонок, и клиенту достанется окно, в котором работать некому.
Буфера на уборку поста нет. Диагностика заняла на двадцать минут дольше плана, и следующий клиент приехал вовремя — в бокс, который ещё не готов. Формально он записан правильно. Фактически он ждёт на улице, а виноват оказывается тот, кто впустил.
К этому добавляется правило «одна работа на мастера одновременно». У большинства сервисов оно верное по умолчанию, но в тетради его тоже нет: мастер, у которого уже висит работа, спокойно ставится в соседнюю клетку.
Из чего на самом деле считается занятость
В LocalB.Автомастер слоты не рисуются, а считаются — из настоящих правил, и задаёт их сервис:
- часы работы и выходные, включая исключения по датам: отпуск, праздник, сокращённый день;
- число активных постов, а это и есть предел записей на одно время;
- личное расписание мастера: у дня мастера три режима — «как у сервиса», «работает» и «выходной»;
- список услуг, которые мастер вообще выполняет: привязка задаётся один раз и живёт в его карточке;
- шаг слотов, горизонт записи и минимальный запас до ближайшего слота;
- буфер между работами — сколько минут пост остаётся занятым после уборки;
- сколько работ мастер ведёт одновременно и на сколько минут работы могут пересекаться.
Проверка живёт на сервере, и это главное. Когда клиент выбирает занятый час, он получает не «запись создана, но как-нибудь разберёмся», а отказ с причиной. И та же проверка работает для администратора, который заводит запись по телефону в том же календаре: слот занят мастером, занят постом, уже занят у клиента, выходит за рабочие часы, переваливает через полночь — каждая причина названа словом, а не кодом ошибки.
Перенос — это та же проверка
Запись можно перетащить мышью на другое время, другого мастера или другой пост, и блок вернётся на место, если проверка не пройдена. Причины отказа те же самые, и это не сбой, а сообщение. Отдельно стоит сказать про плановую выдачу: это не перенос. Многодневный ремонт выражается датой обещания выдать машину, а не растянутым на три дня слотом — растянутый слот занимает пост на три дня и не пускает туда никого.
Рядом с плановой датой система показывает, сколько работа заняла на самом деле и насколько это разошлось с планом. Вопрос «уложились или нет» становится цифрой, а не спором между мастером и клиентом.
И ещё одно правило, которое экономит нервы: неявку нельзя переоткрыть. Приехал позже — это новая запись, и слот проверяется заново, а не считается свободным по памяти.
Чего расписание не делает
Честно о границах. Система не планирует загрузку за вас: сколько постов держать, какой длительности должна быть диагностика и нужен ли буфер на уборку — это решения владельца, а не настройки по умолчанию. Она не обещает клиенту минутную точность и не заменяет того, кто здоровается с клиентом по телефону.
Смена часов работы задним числом не отменяет уже созданные записи: они останутся стоять в закрытых часах, и разбираться с ними придётся вручную. Это сделано намеренно — молчаливая отмена визита опаснее лишней записи в расписании.
И предупреждение, о котором стоит знать заранее: письмо о переносе или подтверждении — любезность, а не доказательство. Большинство клиентских записей заводят по телефону, и почты у клиента может не быть вовсе. Считайте клиента предупреждённым только после звонка.
Как это проверить
Занятость поста и личное расписание мастера — из тех вещей, которые видно сразу, но не с первого взгляда. На витрине LocalB.Автомастер показаны живые экраны: календарь записей, день мастера, склад, финансы. В справке расписаны статусы визита и то, из чего система складывает свободное окно.
А если хотите проверить на своих постах — возьмите ключ на 14 дней, без карты и без обязательств. Расскажите, как у вас сейчас нарисована сетка слотов и сколько постов в зале, — посмотрим, что из этого уходит в настройки, а что всё равно придётся решить вам. Пишите нам — отвечаем быстро.