Система для управления производством: кейс разработки на Python

Известный производитель продуктов питания решил заменить зарубежную систему управления складами и производством на отечественное решение. Было решено не брать готовую программу, а разработать ее под потребности компании. Наш python-разработчик Константин Т. присоединился к команде и помог создать базу данных для новой системы.
  • Заказчик
    разработчик сайтов и приложений, ИТ-интегратор
    Модель сотрудничества:
    • субподряд
    Проект:
    • решение для планирование производства
    Стек разработки:
    • Python, фреймворк Django, Django REST

О заказчике

Наш разработчик временно присоединился к команде российской ИТ компании, разработчику сайтов и приложений, интегратору digital-решений. Конечный заказчик — крупный производитель продуктов питания, хорошо известный на рынке.

О проекте

Проект: система для планирования производства, распределения продукции на складах и управления поставками.

Стек бэкенд: Django (высокоуровневый веб-фреймворк на Python).

Команда и организация процессов

Команда: четыре бэкэндера, два фронтендера, два тестировщика, два-три аналитика.

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

Запрос и задачи

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

Запрос заказчика: Нужно было создать систему, которая автоматизирует распределение продуктов на складе и поможет организовать своевременное и достаточное пополнение складов с учетом запланированного производства и сроков годности товара. Для расчета потребности в товарах использовали вычисления, сделанные нейросетью.

Задачи: у команды было несколько задач на проекте.

Задача №1

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

Команда разработчиков под руководством тимлида спроектировала схему базы данных, а затем создала модели для всех типов данных, указанных в спецификации. Модель в Django — это класс, на основе которого создается таблица в базе данных.

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

В процессе работы параллельно создавали модели Django, Vue-модели, API и так далее. Команда использовала сериализаторы, которые позволяют преобразовывать сложные данные в удобный для хранения формат, и десериализаторы. С их помощью входные данные из таблиц Excel преобразовывались в данные для хранения в базе и наоборот.

Задача № 2

Другая задача — валидация (проверка) данных. На проекте была сложная многоуровневая нейросистема валидации.

Команда разработала интерфейс для взаимодействия с API, который позволил загружать исходные данные в подходящем виде для планирования. Помимо загрузки использовался механизм автоматического получения исходных данных из других компонентов системы, например, от модуля ИИ.

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

Сложности:

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

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

МОЖЕМ ПОМОЧЬ

Если у вас есть проекты на Python — свяжитесь с нами и мы поможем подобрать временных специалистов для разработки.