Система визуализации данных из системы «Честный Знак»

top logo
Заказчик:
Производитель лекарственных препаратов
Задача:
Разработка системы визуализации данных, загружаемых из Честного Знака, для более глубокого и удобного анализа оных.

Немного про честный знак

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

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

Система визуализации данных

Отчеты выгружаются в формате csv, что не очень то и способствует удобному анализу большого количества данных. Особенно сильно это относится к отчёту по движениям. Как в excel из таблицы отследить путь движения партии товара? Можно помучаться и наложить фильтры, сортировку, но даже такой вариант будет далёк от идеала. Тут нам на помощь и приходит отдельная система визуализации данных. Мы можем взять эти данные из csv, и отобразить их так, чтобы процесс их анализа был максимально удобным и продуктивным.

Помимо формата отчётов есть ещё одна проблема — время загрузки. Отчёты могут формироваться долго, хоть целый час. Зачем ждать, если можно автоматически грузить отчёты заранее? Так мы сделали — отчеты загружаются автоматически в начале дня, поэтому ждать не придётся, можно заходить и анализировать.

Предпроектное обследование

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

Кроме исследования UI и UX, нам необходимо было разобраться и API, которое предоставляет Честный знак МДЛП. На этом этапе так же возникло не мало сложностей. Об этом мы писали в отдельной статье Интеграция с API Честный знак. По результатам обследования удалось выявить ключевые точки автоматизации, технические нюансы их реализации и составить техническое задание.

Решение

В нашей системе реализовано три вида отчётов: остатки, движения и выбытия продукции. Для каждого отчёта доступно множество фильтров, при этом для некоторых фильтров доступны опции. К примеру для поля множественного выбора значения из выпадающего списка есть две опции — В списке/не в списке. Заказчик уже стабильно пользуется этим функционалом. Например, в поле выбора контрагента он исключает из списка свою организацию.

 

Используемый стек при решении задачи: Python 3.10, Docker, Django 4


Система визуализации данных из Честного Знака 1

Также настройки фильтров можно сохранять, чтобы каждый раз при использовании отчёта не приходилось вручную настраивать их заново.

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

Система визуализации данных из Честного Знака 2

Отчёт по движениям

Примерно так выглядит исходный отчёт по движениям в формате csv, который присылает Честный знак (данные отредактированы):

Система визуализации данных из Честного Знака 3

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

Из этого наш клиент получает вот такую красоту:

Система визуализации данных из Честного Знака 4

Каждая карточка – это конечный пункт какой-то партии товара. По нажатию карточка разворачивается и показывает весь путь партии и через какие аптечные сети и дистрибьюторов она прошла:

Система визуализации данных из Честного Знака 5

Отчёты по остаткам и выбытиям

Исходный вариант этих отчётов примерно такой же, как и в движениях. В системе это отображается в виде таблиц, при этом автоматически добавляется суммирование всех остатков, в случае отчёта по остаткам, либо суммирование всех выбытий, в случае отчёта по выбытиям. И это всё с учётом фильтрации, так что, к примеру, узнать сколько выбытий было у конкретного контрагента в конкретную дату (или диапазон дат) — дело пары секунд.

Система визуализации данных из Честного Знака 6

Помимо фильтров есть ещё группировка. Изначально данные сгруппированы по Субъектам, но есть вариант сгруппировать по контрагентам.

Система визуализации данных из Честного Знака 7

Экспорт в Excel

Для отчётов по выбытиям и остаткам доступна выгрузка данных в Excel. В этом случае фильтры тоже учитываются, так что можно, например, сохранить себе данные об остатках в конкретном городе, или у конкретного контрагента, и т.п. Группировка в excel, кстати, тоже присутствует:

Процент выбытия

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

Аптечные сети

Анализировать данные по отдельным аптекам не всегда нужно, и не всегда удобно. Многие аптеки состоят в аптечных сетях, поэтому мы сделали возможность импортировать реестр аптечных сетей, и объединять аптеки в нашей системе:

Система визуализации данных из Честного Знака 8

 

Результат

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

Блог

Еще статьи и кейсы

Форма

Рассчитать стоимость проекта в течение дня

    Форма
    Хочешь
    присоединиться к нам?
    Мы готовы предложить лучшие
    условия на рынке
    Откликнуться

        Начать сотрудничество

          Отправить резюме

            Оставить заявку

            Ваша заявка принята!
            Перезвоним вам в ближайшее время
            Резюме успешно отправлено!
            Перезвоним вам в ближайшее время