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

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

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

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

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

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

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

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

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

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

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

Данные могут возвращаться с ошибками. Ошибки могут быть двух видов — значение вообще не пришло или пришло, но некорректное.  

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

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

Так как «Ожидание» (1) обязательное поле, его нельзя оставить пустым, неправильное значение меняем на 0. При ошибке в поле «Длительность» значение в нем вообще не сохраняем (2).

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

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

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

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

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

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

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

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

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