У записи к врачу нет статуса «отменён»
Отмена в интерфейсе — это удаление записи. Для заказов и приёмов нет метода «что изменилось».
Клиенты, записи к врачу и заказы очков сами появляются в CRM каждые 5 минут. А «заказ готов» клиенту отправляет собственный сервис: в Max или Telegram, а если сообщение не дошло — SMS.
Весь операционный учёт сети — в отраслевой системе itigris. С клиентами работают в Битрикс24. Связи между ними не было.
Большая часть работы — не «передать поля из А в Б», а обойти особенности обеих систем так, чтобы данные не терялись молча.
Отмена в интерфейсе — это удаление записи. Для заказов и приёмов нет метода «что изменилось».
Метод изменений отвечал ошибкой без диагностики, если в запрос попадал определённый день.
Узким местом оказалась не учётная система, а лимит скорости записи в Битрикс24.
Трёхлетняя история заказов и приёмов превышала лимит тарифа «Стандарт».
Без отдельной обработки клиент получил бы второе «заказ готов».
Роботы искали каждого клиента по номеру перед отправкой — это сработало как защита Telegram от поиска людей.
Сбой по одной записи не останавливает синхронизацию.
Запись уходит в разбор, а следующий запуск повторит тот же отрезок.
Разобрали, что itigris умеет отдавать и чего не умеет. Изменения по клиентам можно запрашивать по дате, а для заказов и приёмов такого метода нет. Часть методов не фильтрует по номеру записи.
Интеграция помнит по каждому потоку, до какого момента всё уже забрано. Незавершённые заказы и приёмы за 90 дней перепроверяются одним запросом за тик. В Битрикс24 пишется только то, что реально изменилось — иначе тик не укладывался в свои 5 минут.
Перенос шёл на обычном хостинге, где многочасовой фоновый процесс может оборваться в любой момент. Поэтому разбили его на короткие порции по расписанию: каждая знает, где остановилась предыдущая.
Вместе с поддержкой Wappi выяснили: номер-отправитель попал под скрытое ограничение Telegram. Его спровоцировали сами роботы — они искали каждого клиента по номеру перед каждой отправкой.
Сначала — реальные тестовые номера, включая плохие сценарии: отключённый номер-отправитель, недоступный клиент, обрыв связи. Потом новая схема включалась салон за салоном, а старые роботы для этого салона сразу выключались — чтобы клиент не получил уведомление дважды.
Разберём API обеих сторон, договоримся о правилах и запустим без потери данных — поэтапно, как в этом проекте.