Привет, Хабр! Меня зовут Денис, и я занимаюсь интеграциями систем ЦОД и учетом оборудования клиентов. Сегодня я хочу рассказать, как мы автоматизировали выдачу пропусков в наши ЦОДы с помощью нейронных сетей. Расскажу немного о самой системе, из чего она состоит и как работает, а также о том, какую выгоду получили наши клиенты.

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

Дано:

  • 3 дата-центра в общей сумме на 1000 стойко-мест

  • Все они практически полностью укомплектованы, работа с запросами клиентов кипит 365 дней в году.

  • Большое количество разных обращений, из которых примерно 30% - заявки на посещение ЦОД клиентом.

  • Все обращения обрабатываются дежурным инженером ЦОД в почте, и на каждый запрос уходит 10-15 минут.

Из-за того что изначально вся работа с обращениями клиентов велась в почте, а дежурные инженеры сильно нагружены, происходили случаи «Потеряшек» (прим. «Потеряшки» - это такие письма, содержащие обращение от клиента о работах в ЦОД, которые потерялись/были пропущены и т.д. из-за человеческого фактора). Например, могли теряться заявки на пропуска в ЦОД, что оставляло негативные впечатления. Клиенты ожидали у входа в здание, пока дежурный инженер найдет их заявку и закажет пропуск, который прошлая смена «просмотрела». Мы подумали, а что если автоматизировать этот процесс?

Нейронка нам в помощь

В итоге мы решились разработать нейронную сеть, которая будет делать все сама от обработки обращения до заказа самого пропуска. Тем самым мы хотели исключить человеческий фактор с нашей стороны и увеличить «полезное» время работы наших инженеров (а это, кстати, 10-15% от рабочего времени смены, около 2-2.5 часов в день).

В ходе разработки мы сталкивались с различными трудностями и проблемами, начиная от поиска подрядчика, заканчивая переобучением системы перед ее релизом. Последняя откатила старт продукта еще на несколько месяцев. Но это все оказалось мелочами.

И вот мы начинаем заново обучать систему, заново собирать письма за прошедший год с обращениями на посещение ЦОДа (2,5 – 3 тысячи писем, с которыми нам помогли наши доблестные воины из HelpDesk, воскрешая мертвых путем божественного вмешательства и темной некромантии), как перед нами встает новая задача – ВЛОЖЕНИЯ!

Клиенты начали использовать шаблонные формы в различных форматах (Word, PDF, Exel, картинки), что несомненно отразилось на работе системы, которая на данный момент умеет работать только с текстом.

Честно признаемся, что новую задачку мы еще не решили (пока стараемся довести нейросеть до уровня бога при работе с текстом), но обязуемся не останавливаться на полпути и довести дело до конца! 

Хотите узнать из чего состоит система?

Поехали дальше! 

Так выглядит регистрация всех обращений, ID - ссылка на форму с данными клиента, почта автора, время, статус и решение по нему (заказан пропуск или нет). 

Сама система состоит из следующих компонентов:

  1. Модуль обработки писем

  2. Веб-интерфейс для доступа к данным

  3. Классификатор

  4. Сервисы извлечения данных:

  • NER-модель для извлечения данных заявки на пропуск

  • NER-модель для извлечения данных о подписи в письме

  • NER-модель для морфологической разметки текста

Модуль обработки писем представляет собой приложение на базе фреймворка Django. И есть некоторые особенности его работы:

  1. Модуль обработки писем запускается по расписанию раз в минуту,

  2. Принимает почту с корпоративного почтового сервера,

  3. Обрабатывает содержимое письма с помощью вызова классификатора и сервисов извлечения данных

  4. Формирует заявку на пропуск в виде JSON

  5. Отправляет заявку на пропуск в нашу систему заказа пропусков

Веб-интерфейс для доступа к данным представляет собой Django-приложение предназначенное для:

  1. Управления данным Представителей

  2. Управления данными Организаций

  3. Просмотра Заявок на пропуск

P.S. Организация - компания клиента; Представитель - представитель организации; Автор - человек/рассылка, с адреса которого поступило обращение. 

Классификатор представляет собой веб-приложение, основанное на фреймворке Deeppavlov, использующее модель машинного обучения на базе нейросети для классификации писем на являющиеся заявками на пропуск, запущенное на порту локального сетевого интерфейса.

Пример запроса к Классификатору:

curl -d '{"x":["Добрый день! Закажите мне пропуск на 28 января. С уважением, Сергей"]}' -H "Content-Type: application/json" -X POST http://localhost:5002/model

Пример ответа Классификатора:

[["1"]]

где 1 означает, что письмо является заявкой на пропуск, а 0 - что не является.

NER-модели, как и классификатор, являются веб-приложениями, основанными на фреймворке Deeppavlov. С их помощью система понимает кто к нам обратился, есть ли у автора обращения полномочия на заказ пропуска, на какую дату, на кого (включая автомобиль) и куда требуется заказать пропуска.

Процесс оформления заявки

При поступлении обращения в почту, система узнает из письма все данные с помощью NER-моделей и создает объект в админке (Django). Далее система старается найти представителя по email, если же такого пользователя нет, то система берет почтовый домен и ищет организацию по нему.

После того, как мы узнали, кто к нам обращается, куда и на кого нужны пропуска - система создает страничку-форму для заполнения информации о посетителях.

Пример формы:

Затем отправляет заявку на подтверждение уполномоченным лицам из этой организации.

Из минусов можно отметить то, что для этой системы на данный момент требуется отдельная БД с данными о клиентах, т.к. наш “справочник” еще не дошел до эталонной стадии. Но к середине-концу лета мы уже планируем интеграцию нейросети, что существенно упросит ее обслуживание, т.к. сейчас все контакты и полномочия изменяются в ручном режиме. 

Система справляется со своей задачей отлично и регистрирует все запросы, но пока не все еще научились с ней работать.

Выгода клиенту

Для клиента, использующего почту как основной вид связи с нашим ЦОД, польза заключается в быстром заказе пропуска без участия ДИ. т.е. на скорость процесса оформления пропуска будет влиять только ваша медь или оптоволокно).

Если хочешь к нам в ЦОД на экскурсию - можешь писать нам на портал, наша нейросеть свяжется с тобой и оформит тебе пропуск!*

*Если ты уже клиент нашего ЦОД

Комментарии (2)


  1. Germanjon
    07.10.2022 08:52

    Может быть было бы проще вывести форму на скрытую страницу и собирать структурированные поля? Заодно можно было бы разруливать потенциально конфликтные ситуации сразу при подаче заявки (чтобы народ не шёл массово в одно время, чтобы народ не приходил в дни и часы регламентных работ)


    1. dnsvrchkv Автор
      07.10.2022 14:02

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

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