Интеграции
Как перенести бронирование без потери исходного слота: атомарность, конкурирующие запросы, доплата, тайм-ауты, уведомления и проверка результата операции.

Коротко
Безопасный перенос бронирования должен сохранять исходную запись, пока новое время не закреплено. Если выбранный слот уже занят или изменение не завершилось, клиент не должен остаться без обеих дат. Для этого перенос проектируют как связанную операцию с проверкой доступности, актуальности исходной брони и однозначным результатом.
Материал полезен владельцам сервисов, администраторам и командам, которые связывают календарь с сайтом, CRM и оплатой. Здесь описаны требования к надёжному процессу, а не гарантированные свойства API MySlot. Общие правила отмены определяют, можно ли переносить визит; этот разбор отвечает на другой вопрос: как технически не потерять запись во время разрешённого переноса.
Главное в статье
Поиск свободного времени не закрепляет его за клиентом.
Сначала отменить старую запись, затем создать новую — рискованный порядок.
Перенос должен учитывать одновременные действия клиента и администратора.
Тайм-аут требует проверки результата, а не создания ещё одной записи.
Оплата и уведомления связаны с переносом, но не становятся частью одной транзакции автоматически.
Раздел 01
Представим условный пример: клиент переносит визит с четверга на пятницу. Форма показала свободное время, клиент подтвердил изменение, интеграция удалила четверг. Пока создавалась пятница, её занял другой человек. Формально оба запроса могли работать по отдельности, но клиентский процесс завершился потерей подтверждённой услуги.
Обратная последовательность тоже требует контроля. Если сначала создать новую бронь, а затем не суметь закрыть старую, календарь удержит два места. Это лучше не маскировать сообщением об успехе: сотрудникам нужна явная незавершённая операция и порядок её разрешения. Два независимых действия не становятся надёжным переносом только благодаря правильному порядку вызовов.
Сначала сформулируйте правило результата: после завершения у клиента одна действующая запись на согласованных условиях; при отказе изменения исходная запись остаётся действующей. Исключения, например отдельное согласованное двойное резервирование, должны иметь собственные ограничения и не возникать случайно из-за ошибки интеграции.
Раздел 02
Атомарность означает применение связанных изменений целиком или отказ от них целиком. Документация PostgreSQL объясняет этот принцип на транзакциях базы данных. Применительно к календарю команда может использовать его, чтобы согласованно изменить занятость старого и нового интервала. Это проектное решение, которое зависит от устройства системы.
Одна транзакция сама по себе не гарантирует правильной обработки конкурирующих броней. Требуются корректные ограничения и управление одновременными изменениями. Документация PostgreSQL отдельно описывает уровни изоляции и возможные конфликты. Для бизнеса проверяемое требование проще технического названия: два клиента не должны получить подтверждение одного эксклюзивного ресурса на одно время.
Если старый и новый календарь принадлежат разным системам, общей транзакции может не быть. Тогда нужен явный процесс резервирования, подтверждения и восстановления после частичного результата. Нельзя обещать мгновенное «всё или ничего», не проверив возможности обеих сторон. До готовности такого процесса сложные межсистемные переносы стоит передавать ответственному сотруднику.
Раздел 03
Исходная бронь и её версия
Нужны идентификатор записи и способ проверить, что условия не изменились с момента открытия формы. Иначе клиент может перезаписать более свежее действие администратора.
Новый набор ресурсов
Проверяется не только начало визита, но и длительность, специалист, помещение, оборудование, вместимость и необходимые интервалы подготовки.
Согласованные условия
Зафиксируйте новые дату, место, услугу и стоимость. При существенном изменении предложения клиент должен увидеть его до окончательного подтверждения.
Идентификатор операции
Повтор запроса после обрыва связи должен находить тот же результат. Он не должен создавать второй перенос с независимым итогом.
Инициатор и результат
Сохраните, кто запросил изменение, когда оно завершилось и почему было отклонено. Это помогает отличить конфликт времени от отсутствия права на действие.
Раздел 04
| Ситуация | Неверная реакция | Ожидаемое поведение |
|---|---|---|
| Новое время занято | Удалить старую запись | Сохранить исходную бронь и предложить другой вариант. |
| Бронь уже изменена | Перезаписать её старой формой | Показать актуальные условия и запросить новое решение. |
| Ответ сервера потерян | Считать перенос неуспешным | Проверить результат исходной операции. |
| Подтверждение не доставлено | Повторно переносить визит | Повторить сообщение о уже сохранённом изменении. |
Раздел 05
Если новая услуга стоит столько же, это не означает, что нужно заново списывать деньги. Если сумма меняется, сначала определите коммерческие условия и покажите разницу клиенту. Технический перенос времени и финансовое урегулирование должны иметь различимые состояния, чтобы администратор видел, какой этап действительно завершён.
Для сценария с доплатой заранее решите, удерживается ли новое место на ограниченный срок, что происходит при истечении срока и сохраняется ли исходная бронь. Не держите открытую транзакцию базы данных всё время, пока человек оплачивает. Нужна отдельная управляемая последовательность с проверкой фактического результата платежа перед финальным действием.
Сообщение «визит перенесён» отправляют после подтверждённого изменения, а старые напоминания должны перестать приглашать на прежнее время. Если доставка сообщения не удалась, сам перенос не требуется выполнять заново. Очередь коммуникаций должна знать актуальную версию записи и не отправлять устаревшую дату после более позднего изменения.
Раздел 06
Задайте ожидаемые исходы
Опишите успешное изменение, отказ из-за занятости, запрет по условиям и неизвестный результат. Для каждого укажите состояние исходной записи и сообщение клиенту.
Создайте конкурентный запрос
Два пользователя выбирают одно новое время. Проверьте, что только допустимая бронь подтверждается, а проигравший запрос не разрушает старый визит.
Измените запись в другой сессии
Откройте форму клиента, затем перенесите или отмените визит от имени администратора. Старая форма не должна молча вернуть устаревшие условия.
Прервите получение ответа
Проверьте восстановление результата после тайм-аута и повторное нажатие. Отдельно убедитесь, что платёж и уведомление не дублируются.
Сверьте последствия
Проверьте календарь, CRM, оплату и будущие сообщения. Завершённая операция должна оставлять понятную историю и одну актуальную дату визита.
Раздел 07
Начните с переноса в пределах одной услуги без смены цены. Затем добавьте смену специалиста, длительности и финансовых условий. Такая последовательность позволяет обнаружить нарушение основного правила до того, как появятся сложные исключения. Ручной процесс тоже должен сохранять исходное обязательство до подтверждённой замены.
Отслеживайте незавершённые операции, случаи двойной занятости, потери исходного времени и отправки устаревших напоминаний. Процент успешных запросов недостаточен: один технически успешный вызов может быть частью неуспешного клиентского переноса. Полезнее проверять итог процесса по записи и её истории.
При обсуждении MySlot попросите показать перенос через реальный интерфейс и выбранную интеграцию, включая конкурентный запрос. Уточните гарантии сохранения исходной брони, защиту от повторов и возможность получить результат операции. Наличие метода изменения записи не доказывает автоматически поддержку всех перечисленных гарантий.
Важно
Главный приёмочный сценарий: новое время заняли прямо перед подтверждением. Если после отказа клиент по-прежнему видит исходную действующую запись, базовое правило сохранения брони выдержано.
Вывод
Надёжный перенос сохраняет обязательство перед клиентом на всём пути изменения. Для этого нужны согласованная работа календаря, проверка конкурирующих действий и однозначное восстановление результата после сбоя.
Проверяйте не только удобство выбора новой даты, но и неуспешные сценарии. Именно они показывают, можно ли разрешить самостоятельный перенос без риска потерять подтверждённый визит.
Демо
Покажем демо MySlot и разберём ваш процесс: услуги, расписание, ресурсы, CRM, оплаты и уведомления.
MySlot
MySlot подойдёт, если вам нужно:
Возможности
Похожие статьи
Автоматизация
Отмена и перенос онлайн-записи: правила, уведомления и защита расписания
Как настроить отмену и перенос онлайн-записи: дедлайны, статусы, уведомления, лист ожидания, предоплату и передачу изменений в CRM.
ЧитатьИнтеграции
Дубли онлайн-записи: как защитить бронь при повторном запросе
Как защитить онлайн-запись от повторных запросов: ключ операции, потерянный ответ, контроль параметров, CRM, оплата и тесты интеграции без дублей.
ЧитатьИнтеграции
Временный резерв слота: как связать онлайн-запись и оплату без дублей
Как устроить временный резерв слота при онлайн-записи: срок удержания, подтверждение оплаты, повторные запросы, поздний платёж и проверка защиты от двойной брони.
ЧитатьЗапуск
MySlot поможет принимать записи, управлять расписанием, ресурсами, оплатами и передавать данные в CRM.