Загрузка данных


Для разработки клиентской части системы были использованы современные веб-технологии, обеспечивающие удобство работы пользователя и корректное отображение интерфейса на различных устройствах. В качестве основы для создания структуры веб-страниц применялся HTML5, позволяющий формировать семантически правильную разметку. Визуальное оформление интерфейса реализовано с использованием CSS3, который обеспечивает настройку внешнего вида элементов и единый стиль приложения. Для реализации клиентской логики и интерактивного взаимодействия с пользователем использовался язык JavaScript. Адаптивная верстка и готовые элементы пользовательского интерфейса были реализованы с помощью фреймворка Bootstrap 5, что позволило сократить время разработки и обеспечить удобство использования системы на устройствах с различными разрешениями экрана.

Серверная часть приложения разработана на языке программирования Python версии 3.8 и выше. В качестве основного веб-фреймворка использовался FastAPI, предоставляющий инструменты для создания производительных веб-приложений и API. Развертывание приложения осуществляется при помощи ASGI-сервера Uvicorn, который обеспечивает обработку запросов и взаимодействие между клиентской и серверной частями системы. Для организации работы с базой данных применяется библиотека SQLAlchemy, реализующая объектно-реляционное отображение данных и позволяющая работать с объектами Python вместо прямых SQL-запросов.

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

В процессе разработки были использованы дополнительные программные библиотеки, расширяющие функциональные возможности системы. Библиотека Pydantic применяется для проверки корректности данных и их сериализации. Для обработки табличной информации и формирования отчетов используется Pandas. Работа с файлами формата Excel реализована при помощи OpenPyXL. Генерация и обработка HTML-страниц выполняется с использованием шаблонизатора Jinja2, который позволяет динамически формировать содержимое страниц на основе данных, получаемых от сервера.

Для организации совместной разработки и контроля изменений программного кода использовалась распределенная система контроля версий Git. Хранение репозитория проекта и управление версиями осуществлялось на платформе GitHub, что обеспечило удобство коллективной работы над проектом и возможность отслеживания истории изменений.

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

2.2 Организация хранения информации

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

Основная информация о контроллерах и компонентах хранится в реляционной базе данных PostgreSQL. Для хранения данных о программируемых логических контроллерах используется таблица Plcs, содержащая сведения о типе контроллера, его наименовании, производителе, стоимости и количестве доступных входов и выходов различных типов. Для повышения производительности поиска предусмотрены индексы по полям name и manufacturer. Информация о компонентах системы хранится в таблице Components. В ней содержатся данные о наименовании компонента, его стоимости, типе входов и выходов, категории и дополнительном описании. Для обеспечения целостности данных предусмотрены ограничения на допустимые значения типов I/O, включая DI, DO, AI и AO.

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