Контакты:

Отслеживание геолокации пользователей и статистика

Помните мой старый проект для одной Российской компании? Калькулятор НМЦК? Не так давно, меня попросили сделать небольшое веб приложение для обработки его логов и и отображения статистики и отчетов по нему.

Карта клиентов, активных в Январе 2017

Карта клиентов,
активных в Январе 2017

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

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

Статистика по некоторым пользователям (персональные данные скрыты)

Статистика
по некоторым пользователям
(персональные данные скрыты)

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

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

Некоторые пользователи были из довольно больших компаний, с офисами в нескольких городах

Некоторые пользователи были
из довольно больших компаний,
с офисами в нескольких городах

Помимо прочего, отчет содержал: дату и время последней активности пользователя, что он или она искал(а) в реестре контрактов, и список IP адресов, с которых пользователь подключался к приложению.

Более того, список IP адресов был сгруппирован по геолокации (страна, область и город) и содержал информацию об уровне активности из каждой локации (сколько различных действий пользователь предпринимал из данного места в указанный период).

Данные о геолокации также были использованы и для того чтобы создавать маркеры на карте мира. Я использовал Leaflet и OpenStreetMap для этого, т.к. их правила пользования были наиболее удобны и допускали использования в "закрытых", частных проектах.

Это было довольно интересно - и впечатляющее - увидеть, как много пользователей из десятков различных городов пользовались приложением, даже в течении всего одного месяца! Я знал, что этим приложением пользовалось много клиентов, но эта карта наглядно показала, что наши клиенты расположены по всей стране и даже за границей.

Я также создал упрощенную, анонимизированную версию этого приложения в виде виджета для сайта, т.к. клиент хотел показывать потенциальным клиентам карту существующих клиентов. Виджет обновлялся каждые 15 минут, а не при каждой загрузке (чтобы снизить нагрузку на сервер), и показывал карту активных в последний месяц (~30 дней) клиентов и некоторую статистику по ним, не показывая при этом их реальные логины (для скрытия персональных данных).

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

Подобное веб приложение очень просто в создании, но имеет много различных применений.