Решение представляет собой клиент-серверное приложение с трехуровневой архитектурой.
Трёхуровневая архитектура позволяет разрабатывать и размещать каждый уровень отдельно от остальных. Это делает приложение более масштабируемым, поскольку каждый уровень развивается и функционирует относительно независимо от других.
- Уровень представления (Presentation Tier) содержит пользовательский интерфейс (UI). Соответствует фронтенд (Qt5 C++).
- Уровень приложения (Application Tier) содержит бизнес-логику приложения. Соответствует бэкенду (C# + Python).
- Уровень данных (Data Tier) включает в себя базу данных (PostgreSQL) и доступ к данным.
Уровни общаются между собой при помощи API-запросов.
- Пользователь загружает изображение и заполняет расчетные параметры. Данные в формате двух API-запросов передаются на сервер.
- Пользователь получает обратно обработанное изображение, площадь и стоимость покраски.
- Изображения передаётся обученной модели (Python-скрипт) для обнаружения частей машин и вычисления площадей.
- Сервер получает обратно массив деталей с их вычисленными параметрами.
- Сервер сохраняет в БД изображения пользователей.
- Ранее загруженные изображения могут использоваться пользователями.