Разработка инструмента помогающего выявлять ошибки на ранней стадии.
Архитектура приложения
Система состоит из:
- набора системных служб (C#)
- основная служба — контроллирует другие службы
- служба работы с приложениями Autodesk Revit
- служба сбора и анализа Log-файлов Revit
- служба обновления
- служба уведомления пользователя
- служба отправки данных полученны из Log-файлов Revit
- служба взаимодействия с сервером
- плагины для САПР Autodesk Revit (каждый плагин отвечает за сбор конкретных данных, C#)
- сервер принимающий и обрабатывающий данные (Java)
- база данных (Postgres)
- сервера ELK для работы с Log файлами Revit
- UI интерфейса для отображения информации (vue, typescript)
Процесс работы системы выглядит следующим образом:
- Пользователь, работая в Revit, с некоторой периодичностью выполняет синхронизацию BIM модели (до 10-15 раз в сутки, в среднем 3-5 раз в сутки).
- При каждой синхронизации запускается механизм сбора данных: каждый плагин собирает свою часть данных из модели (информацию о типах, материалах, уровнях, осях, стенах, перекрытиях и другую информацию). Собранные данные отправляются в системную службу для отправки на сервер.
- Служба отправки данных пытается установить соединение с сервером и отправить данные. При этом этот процесс уже не «держит» Revit, и даже если пользователь закроет приложение или выключит ПК, данные не потеряются.
- Получив от пользователя данные сервер сохраняет их в базе данных и запускает процесс пересчёта и анализа полученных данных. Например, если пользователь случайно передвинул ось или изменил один из важных параметров, то система сопоставит новые данные с теми, что есть в базе и выполнит оповещение ответственного лица.
Текущий размер базы данных составляет более 600 Гб (работа порядка 30 проектировщиков за 2 года)