# Heavy Equipment Manager

### Backend (бортовое ПО)

#### Язык и фреймворки

| Технология | Версия |
|------------|--------|
| C# | 12 |
| .NET | 8 |
| ASP.NET Core | |
| EF Core | 8 |

#### База данных

| Технология |
|------------|
| SQLite |

#### Библиотеки

**Логирование**

| Библиотека | Описание |
|------------|----------|
| Serilog | структурированное логирование |
| NLog | библиотека логирования |

**Работа с базой данных**

| Библиотека | Описание |
|------------|----------|
| EFCore.BulkExtensions | массовые операции с базой данных |

**Сериализация данных**

| Библиотека | Описание |
|------------|----------|
| Newtonsoft.Json | сериализация и десериализация JSON |

**Утилиты и инфраструктура**

| Библиотека | Описание |
|------------|----------|
| DI | dependency injection (внедрение зависимостей) |
| DebounceThrottle | дебаунс и троттлинг для управления частотой вызовов |
| Quartz | планирование выполнения фоновых задач |

**Работа с файлами**

| Библиотека | Описание |
|------------|----------|
| IxMilia | работа с CAD файлами (DXF, DWG) |

**Геопространственные данные**

| Библиотека | Описание |
|------------|----------|
| GMap.NET.Core | работа с картами и геоданными |

#### Тестирование

| Библиотека |
|------------|
| Moq |
| xUnit |

#### Библиотеки, разработанные компанией

**Оборудование и протоколы**

| Библиотека | Описание |
|------------|----------|
| CanIXLib [rep](http://172.19.10.19/libs/CanIXLib) | Библиотека высокоуровневого взаимодействия с энкодерами IXARC |
| McuCanClient [rep](http://172.19.10.19/libs/McuCanLib) | |
| SocketCANProxy [rep](http://172.19.10.19/libs/socketcan) | |
| HppCore | используется для непосредственного парсинга данных с антенны по протоколу NMEA. Неизвестно где репозиторий и исходники. |

**Устройства и системы**

| Библиотека |
|------------|
| DAS5 |
| Das2000 [rep](http://172.19.10.19/libs/das2000lib) |
| MSenseIsLib [rep](http://172.19.10.19/libs/msense-is-lib) |

**Вычисления и статистика**

| Библиотека |
|------------|
| HemStatisticCalculation [rep](http://172.19.10.19/libs/hemstatisticcalculation) |
| SectorsCalculationLib [rep](http://172.19.10.19/libs/HemSectorsCalculation) |

**Парсинг и конвертация данных**

| Библиотека |
|------------|
| PlanParse [rep](http://172.19.10.19/libs/ShM_plan_parser) |
| Tridb.Parser [rep](http://172.19.10.19/hem/tridb.parser) |
| RstConverter [rep](http://172.19.10.19/libs/rst-transform-dotnet) |

**Базовые библиотеки**

| Библиотека |
|------------|
| MMLib.Core [rep](http://172.19.10.19/hem/mmlib.core) |

**Сервисы**

| Библиотека |
|------------|
| RtkBaseStationService [rep](http://172.19.10.19/libs/rtkbasestationservice-linux) |

#### Протоколы

**Сетевые**

| Протокол |
|----------|
| HTTP |
| WebSocket |
| SignalR |

**Аппаратные и специализированные**

| Протокол | Описание |
|----------|----------|
| CAN 2.0 | |
| J1939 | |
| SocketCAN | |
| NMEA | протокол для работы с антенной |

**Устройства и системы**

| Устройство |
|------------|
| Ritm |
| Msense [docs](https://dokuwiki.rit-it.com/doku.php/rusintech:rit_service_center:mobilteck_devices) |
| RionHda [docs](https://redmine.rit-it.com/attachments/73102) [case](https://redmine.rit-it.com/issues/52606) |
| SST810 [docs](https://redmine.rit-it.com/attachments/73258) [case](https://redmine.rit-it.com/issues/53351) |
| DAS [docs](https://dokuwiki.rit-it.com/doku.php/rusintech:rit_service_center:mobilteck_devices) |

---

## CS

#### Язык и фреймворки

| Технология | Версия |
|------------|--------|
| C# | 9 |
| .NET | 6 |

#### База данных

| Технология |
|------------|
| MS SQL |

#### Библиотеки

**Логирование**

| Библиотека | Описание |
|------------|----------|
| NLog | библиотека логирования |
| log4net | библиотека логирования |

**Протоколы и коммуникации**

| Библиотека | Описание |
|------------|----------|
| EGTS | протокол ГЛОНАСС для передачи телематических данных |
| M2Mqtt | MQTT клиент для обмена сообщениями |
| SSH.NET | SSH клиент для удаленного доступа |
| FluentFTP | FTP клиент для работы с файловыми серверами |

**Сериализация данных**

| Библиотека | Описание |
|------------|----------|
| Google.Protobuf | Protocol Buffers для сериализации структурированных данных |
| Newtonsoft.Json | сериализация и десериализация JSON |

**Работа с файлами**

| Библиотека | Описание |
|------------|----------|
| SharpZipLib | работа с ZIP архивами |
| netDxf | работа с файлами DXF (AutoCAD) |
| HttpMultipartParser | парсинг multipart/form-data запросов |

**Геопространственные данные**

| Библиотека | Описание |
|------------|----------|
| Proj.NET | библиотека для работы с картографическими проекциями |
| DotSpatial.Projections | работа с пространственными проекциями |
| GMap.NET.Core | работа с картами и геоданными |
| NetTopologySuite | библиотека для работы с геометрией и пространственными данными |

**Устойчивость и мониторинг**

| Библиотека | Описание |
|------------|----------|
| Polly | библиотека для реализации политик устойчивости (retry, circuit breaker) |
| prometheus-net | экспорт метрик для Prometheus |

**Валидация**

| Библиотека | Описание |
|------------|----------|
| FluentValidation | валидация данных с fluent API |

**Утилиты**

| Библиотека | Описание |
|------------|----------|
| Ulid | генерация уникальных идентификаторов (ULID) |
| Timestamps | |
| Hardware.Info | получение информации об аппаратном обеспечении |

**UI фреймворк**

| Библиотека | Описание |
|------------|----------|
| Stylet | MVVM фреймворк для WPF приложений |

**Внешние API**

| Библиотека | Описание |
|------------|----------|
| redmine-api | клиент для работы с API Redmine |

**Прочее**

| Библиотека |
|------------|
| NetLibrary |
| Watson |
| NReco |

#### Библиотеки, разработанные компанией

**Вычисления и статистика**

| Библиотека |
|------------|
| HemStatisticCalculation [rep](http://172.19.10.19/libs/hemstatisticcalculation) |
| SectorsCalculationLib [rep](http://172.19.10.19/libs/HemSectorsCalculation) |

**Парсинг и конвертация данных**

| Библиотека |
|------------|
| PlanParse [rep](http://172.19.10.19/libs/ShM_plan_parser) |
| Tridb.Parser [rep](http://172.19.10.19/hem/tridb.parser) |
| RstConverter [rep](http://172.19.10.19/libs/rst-transform-dotnet) |

#### Протоколы

| Протокол |
|----------|
| HTTP |
| WebSocket |
| TCP (RITM) |

#### Тестирование

| Библиотека |
|------------|
| xUnit |

---

## Front (бортовое ПО, Electron)

#### Фреймворк и основные инструменты

| Технология | Версия |
|------------|--------|
| Angular | 18.2.13 |
| Angular CLI | 18.2.12 |
| TypeScript | 5.4.5 |
| Node.js | 20.11.1 |

#### Менеджеры состояния

| Библиотека | Версия | Описание |
|------------|--------|----------|
| RxJS | ~7.5.2 | реактивное программирование с Observable |
| @ngrx/store | 18.0.1 | управление состоянием приложения |
| @ngrx/effects | 18.0.1 | обработка побочных эффектов |
| @ngrx/operators | 18.0.0 | операторы для работы со store |
| @ngrx/store-devtools | 18.0.1 | инструменты разработчика для отладки |
| @reduxjs/toolkit | 1.9.7 | управление состоянием на основе Redux |

#### UI-библиотеки и компоненты

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Angular Material | 18.0.5 | библиотека Material Design компонентов |
| Angular CDK | 18.0.5 | набор инструментов для создания UI компонентов |
| ngx-color | 9.0.0 | компонент выбора цвета |
| ngx-toastr | 19.0.0 | уведомления и toast сообщения |
| OpenLayers (ol) | 10.2.1 | библиотека для работы с картами |

#### Анимация и взаимодействие

| Библиотека | Версия | Описание |
|------------|--------|----------|
| @angular/animations | 18.2.13 | анимации для Angular приложений |
| Color | 4.2.3 | работа с цветами и их преобразованиями |

#### Формы

| Библиотека | Версия | Описание |
|------------|--------|----------|
| @angular/forms | 18.2.13 | Reactive Forms |

#### API и коммуникации

| Библиотека | Версия | Описание |
|------------|--------|----------|
| @microsoft/signalr | 6.0.1 | клиент SignalR для real-time коммуникации |
| @ngx-translate/core | 14.0.0 | интернационализация и локализация |
| @ngx-translate/http-loader | 7.0.0 | загрузка переводов через HTTP |

#### Electron

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Electron | 29.2.0 | фреймворк для создания десктопных приложений |
| electron-builder | 24.9.1 | сборка и упаковка Electron приложений |
| electron-log | 5.1.1 | логирование для Electron приложений |
| auto-launch | 5.0.6 | автозапуск приложения при старте системы |

#### Тестирование

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Karma | ~6.3.13 | test runner для JavaScript |
| Jasmine | ~4.0.0 | фреймворк для unit тестирования |
| karma-jasmine | ~4.0.1 | адаптер Jasmine для Karma |
| karma-coverage | 2.2.1 | генерация отчетов о покрытии кода тестами |
| karma-chrome-launcher | ~3.1.0 | запуск тестов в Chrome |
| karma-jasmine-html-reporter | 1.7 | HTML отчеты для Jasmine тестов |
| karma-mocha-reporter | 2.2.5 | репортер для Karma с поддержкой Mocha стиля |

#### Вспомогательные библиотеки

**Утилиты**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Lodash | 4.17.21 | утилиты для работы с массивами, объектами и функциями |
| semver | 7.6.0 | работа с семантическими версиями |

**Математика и вычисления**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| ml-matrix | 6.11.0 | работа с матрицами и линейной алгеброй |

**Геопространственные данные**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| proj4 | 2.7.5 | преобразование координат между различными системами координат |

**Валидация**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| zod | 3.22.4 | валидация схем TypeScript |

**Специализированные библиотеки**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| @libs/rst-transform | | трансформация RST данных |
| @libs/ngx-vk | 2.1.2 | компоненты для работы с VK API |

#### Инструменты разработки

| Инструмент | Версия | Описание |
|------------|--------|----------|
| ESLint | 8.57.0 | линтер для JavaScript и TypeScript |
| Prettier | 3.2 | форматирование кода |
| Husky | 7.0.4 | Git hooks для автоматизации задач |
| Lint-staged | 12.3.2 | запуск линтера только для измененных файлов |
| Concurrently | 7.4.0 | параллельное выполнение команд |
| Custom Webpack | | кастомизация конфигурации Webpack |
| @angular-builders/custom-webpack:browser | 18.0.0 | кастомный builder для Angular с Webpack |

---

## WEB (клиентская часть)

#### Angular и инструменты

| Технология | Версия | Описание |
|------------|--------|----------|
| Angular | 15.2.9 | |
| Angular CLI | 15.2.8 | |
| Angular CDK | 15.2.9 | |
| Angular Elements | 15.2.9 | |
| Angular Router | | |
| Angular Forms | | ReactiveFormsModule и FormsModule |
| Angular Language Service | 15.2.9 | |
| Angular Compiler CLI | 15.2.9 | |
| TypeScript | 4.8.4 | |

#### Менеджеры состояния

| Библиотека | Версия | Описание |
|------------|--------|----------|
| RxJS | 7.5.7 | библиотека для реактивного программирования |
| RxJS-compat | 6.5.4 | обеспечение обратной совместимости с RxJS v6 |
| Akita (@datorama/akita) | 7.1.1 | менеджер состояний |
| @datorama/akita-ngdevtools | 6.0.1 | инструменты разработчика для Akita |

#### UI и компоненты

**Базовые UI библиотеки**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Angular Material | 15.2.9 | библиотека Material Design UI-компонентов для Angular |
| @ngx-translate/core | 14.0.0 | интернационализация |
| @ngx-translate/http-loader | 7.0.0 | интернационализация |

**Формы и ввод данных**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| @ng-select/ng-select | 10.0.4 | компонент выпадающего списка с расширенной функциональностью |
| ngx-mask | 15.1.5 | директива для маскирования ввода (ограничение формата вводимых данных) |

**Таблицы и списки**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| @swimlane/ngx-datatable | 20.1.0 | таблицы |
| ngx-pagination | 6.0.3 | компонент для постраничной навигации |

**Визуализация данных**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| ngx-echarts | 8.0.0 | Angular-обертка для библиотеки диаграмм ECharts |

**Календари и события**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| @fullcalendar/angular | 6.1.7 | календарь |
| @fullcalendar/interaction | 6.1.7 | для интерактивности календаря |

**Медиа**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| ng-gallery | 5.0.0 | компонент галереи изображений |

**Интерактивность**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| angular-gridster2 | 15.0.4 | создание сеток и панелей с перетаскиванием |
| angular-resizable-element | 7.0.2 | утилиты для изменения размера элементов |
| @perfectmemory/ngx-contextmenu | 15.1.1 | контекстное меню для Angular |

#### Средства анимации и взаимодействия

| Библиотека | Версия | Описание |
|------------|--------|----------|
| @angular/animations | | библиотека для создания анимаций в Angular |

#### Инструменты работы с формами

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Angular Forms | | модули для работы с реактивными и шаблонными формами (ReactiveFormsModule, FormsModule) |

#### API-клиенты и работа с HTTP

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Angular HttpClient | | модуль для выполнения HTTP-запросов из @angular/common/http |
| sockjs-client | 1.5.0 | для работы с WebSocket |

#### Инструменты тестирования

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Jasmine | 5.1.0 | фреймворк для модульного тестирования |
| jasmine-core | 5.1.1 | фреймворк для модульного тестирования |
| Karma | 6.4.2 | тест-раннер |
| karma-chrome-launcher | 3.2.0 | запуск тестов в Chrome |
| karma-coverage-istanbul-reporter | 3.0.3 | отчеты о покрытии кода тестами |
| karma-jasmine | 5.1.0 | интеграция Jasmine с Karma |
| karma-jasmine-html-reporter | 2.1.0 | HTML-отчеты о результатах тестов |
| Protractor | 7.0.0 | для e2e-тестов |

#### Карты и визуализация

**Карты**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| ol | 7.5.1 | библиотека для работы с веб-картами |
| ol-ext | 4.0.23 | расширения для OpenLayers |
| turf | | анализ и обработка геоданных |

**Графики и диаграммы**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| echarts | 5.5.0 | библиотека для создания интерактивных диаграмм |

**3D визуализация**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| three.js | 0.167.1 | библиотека для работы с 3D-графикой в браузере |
| three-addons | 1.2.0 | дополнительные инструменты для three.js |

#### Работа с файлами и данными

**Работа с файлами**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| file-saver | 2.5.0 | сохранение файлов на клиентской стороне |
| jszip | 3.10.1 | создание и чтение ZIP-архивов |

**Excel**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| exceljs | 4.2.1 | работа с Excel-файлами |
| xlsx | 0.18.5 | чтение и запись Excel-файлов |

**PDF**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| pdfmake | 0.2.4 | генерация PDF-документов |
| html2pdf.js | 0.10.1 | преобразование HTML в PDF |

**Изображения**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| html2canvas | 1.4.1 | преобразование HTML в canvas |
| html-to-image | 1.10.8 | преобразование HTML в изображения |

**Утилиты для данных**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| moment | 2.29.1 | утилиты для работы с датами и временем |
| lodash | 4.17.21 | утилиты для работы с данными |

#### Прочее

**Утилиты**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| tslib | 2.0.0 | вспомогательные функции для TypeScript |
| ts-md5 | 1.2.7 | реализация MD5-хеширования для TypeScript |

**Парсинг данных**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| fast-xml-parser | 3.19.0 | XML-парсер |

**Геопространственные данные**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| proj4 | 2.7.5 | библиотека для преобразования координат |

**Работа с файлами**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| dxf-parser | 1.9.0 | чтение и запись DXF-файлов |
| dxf-writer | 1.9.0 | чтение и запись DXF-файлов |

**Инструменты разработки**

| Инструмент | Версия | Описание |
|------------|--------|----------|
| tslint | 6.1.0 | проверка качества кода TypeScript |
| patch-package | 8.0.0 | применение патчей к пакетам npm |