Проверка кэша интеграций

Мы кэшируем в БД данные о звонках до 00:00 часов сегодня, а о заявках за все время (как работает интеграция с телефонией читайте здесь, с сервисами получения заявок — здесь). 

Если все настройки произведены верно, работа сервисов идет в штатном режиме, и с интернет-соединением все в порядке, информация о звонках и заявках будет сохраняться корректно. Но если сервер какое-то время передавал данные неверно, и проблема не была устранена день в день, информация закэшируется и будет отображаться с ошибками (например, не будет записей разговоров, а длительность разговоров будет принимать отрицательное значение). Особенно часто подобные ситуации будут возникать в первые месяцы работы собственных сервисов, пока не будут найдены и исправлены все ошибки.

Проверка кэша интеграций помогает увидеть и исправить информацию, которая сохранилась неправильно. Чтобы обнаружить все несовпадения, нужно перейти в «Настройки» (1) → «Интеграции» (2) → «Внешние сервисы» (3) → «Проверка кэша интеграций» (4) (это может делать только сотрудник с правом доступа «Настройка интеграций»). 

Обратите внимание на фильтры справа. Вы можете выбрать интересующий вас период (1). Также у вас есть два варианта просмотра данных (2): можно посмотреть только локальный кэш — то есть только данные, которые сохранились в БД клиники, а можно сравнить данные, сохранившиеся у вас, с тем, что есть на сервере

В таблице отображаются данные либо по звонкам, либо по заявкам, в зависимости от того, что вы выберете в «Типе данных» (3). Кроме того, вы можете произвести проверку кэша только по какому-то одному внешнему сервису (4).

Примените фильтр (5). IDENT обратится к серверу, заберет данные и разложит на 4 основные группы (6) по сопоставлению ключевых полей (о «Дубликатах записей» и «Ошибках» мы расскажем ниже)

  • «На добавление» — есть на сервере, но нет в программе. Нужно добавить в программу. 
  • «На изменение» — данные в неключевых полях на сервере и в программе отличаются (какие поля ключевые, а какие вспомогательные, смотрите здесь). Нужно изменить.
  • «На удаление» — есть в программе, но нет на сервере. Можно удалить из программы. Обратите внимание, что здесь не стоит галочка «Применить» по умолчанию, чтобы вы могли сначала проверить, что именно удаляете, и не удалили случайно что-то важное, так как некоторые сервисы хранят данные только определенное время (например, заявки у «НаПоправку» хранятся всего 6 дней). 
  • «Без изменений» — данные на сервере и в программе равны. Нет доступных действий.

Строки «На добавление» выделяются зеленым цветом, «На изменение» — желтым, «На удаление» — красным, «Без изменений» — не выделяются цветом.

Кроме цвета строки (обозначающего принадлежность к группе) цветом могут быть выделены ячейки — оранжевым (1) (в группе «На изменение») или коралловым (2) (в любой группе). Так выделяются какие-то нестыковки того, что есть в базе, и того, что есть на сервере. Ошибки могут быть двух видов — значение вообще не пришло или пришло, но некорректное. Если имеются ошибки в ключевых полях, то такие объекты вообще не попадают на сравнение и выносятся в отдельную группу — «Ошибки» (см. ниже), их сохранить нельзя (какие поля ключевые, а какие вспомогательные, мы рассказываем здесь).

Если мы имеем дело с несовпадением данных в неключевых полях, то объект проходит сравнение и дальше попадает в одну из групп:

  • Валидные (3) — все поля успешно распознаны и соответствуют типам данных, присутствуют значения во всех обязательных полях. 
  • Частично валидные (4) — значения в необязательных полях не соответствуют общепринятому формату (например, неизвестный формат номера телефона), или значение вообще не пришло (например, нет времени ожидания). В IDENT можно сохранить все сеансы, попавшие в эту группу, как есть, но при этом важно, чтобы вы обратили внимание на значения, которые со стороны программы кажутся нам некорректными.
  • Скорректированные (5) — значения в необязательных полях не соответствуют диапазону времени или типу данных (например, в столбце «Ожидание» и «Длительность» приходят отрицательные значения). В IDENT невозможно это сохранить, как есть, поэтому данные будут автоматически исправлены перед сохранением («Ожидание» — 0, «Длительность» — вообще не сохраняем).

Возвращенные значения нужно внимательно просмотреть. Вы можете навести мышку на цветную ячейку и увидеть — какое значение пришло с сервера, а какое сохранилось в программе.

Примеры ошибок в неключевых полях:

  • Выделенные оранжевым цветом:
    • несовпадение времени начала разговора (1); 
    • UIS стер запись разговора (2).

  • Выделенные коралловым цветом:
    • Неизвестный формат телефона (1)
    • Некорректное время ожидания (2). 
    • Некорректная длительность разговора (3).

В «Ошибки», как мы уже говорили выше, попадают все ошибки в ключевых полях: не заполнен номер телефона, с которого звонили, или номер телефона, на который звонили, не удалось определить направление по номерам телефона, не заполнен Id у заявок. Такие объекты не могут быть сохранены в IDENT. Необходимо обращаться к представителям внешнего сервиса с просьбой исправить ошибки на их стороне.

«Дубликаты записей» образуются если сервер возвращает несколько объектов с одинаковыми значениями ключевых полей. Мы сохраним только один из этих объектов, остальные будут исключены. Среди дубликатов также могут быть дубликаты строк из группы «Ошибки» (1), на это стоит обращать внимание. 

Чтобы понять, в чем проблема, представителям внешнего сервиса важно получить информацию по взаимодействию программы с этим сервисом. Для выгрузки этой информации служит кнопка «Подробнее» (2).

Только просмотрев информацию во всех строках и убедившись, что все выбранные изменения корректны (если строки «На удаление» действительно нужно удалить, проставляется соответствующая галочка), вы можете нажать «Применить изменения» — галочка в правом нижнем углу. 

Особенности проверки кэша интеграций у сервисов по сбору заявок

У заявок номер телефона неключевое поле, но оно тоже может не прийти (1), тогда заявка автоматически будет помечена как ошибочная (2). Мы ее, все равно, сохраним, но так как администратор не сможет по ней позвонить, то по умолчанию он ее и не увидит (но с помощью фильтра по ошибочным заявкам он сможет ее найти).

Скорректированных значений у заявок может быть намного больше, чем у звонков, —  например, начало приема задано (1), а конец не задан (2) (или наоборот), в поле «Врач» пришел какой-то «мусор», и значение не будет сохранено (3).

С каждым несоответствием информации в программе и на сервере, попавшим в группу «Закрытые (изменились)», нужно разбираться вручную, так как эти заявки уже были обработаны администратором и закрыты.

Заявки, попавшие в группу «Закрытые (отсутствуют на сервере)», нельзя удалить, потому что администратор уже позвонил по ним и закрыл их.