# Инвентаризация стека

# 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 |

# PMA & SMA

## PitManagerAndroid

#### Язык, сборка и плагины

| Технология | Версия | Описание |
|------------|--------|----------|
| AGP | 8.5.2 | сборка Android-модулей (app/library) |
| Kotlin | 1.9.24 | основной язык проекта |
| KSP | 1.9.24-1.0.20 | генерация кода (Room, Hilt и др.) вместо kapt |
| Kotlin Serialization Plugin | 1.9.24 | кодоген для kotlinx.serialization |
| Hilt Gradle Plugin | 2.50 | интеграция DI в сборку |
| Safe Args | 2.7.7 | типобезопасная генерация аргументов навигации (gradle plugin + artifacts) |

#### Базовые Android-зависимости

| Библиотека | Версия | Описание |
|------------|--------|----------|
| androidx.core:core-ktx | 1.12.0 | Kotlin-утилиты для Android API |
| androidx.appcompat | 1.6.1 | совместимость и темы |
| androidx.annotation | 1.9.1 | аннотации (nullability и пр.) |
| Material Components | 1.12.0 | UI-компоненты по Material Design |
| ConstraintLayout | 2.1.4 | верстка сложных экранов |
| RecyclerView | 1.3.0 | списки и адаптеры |

#### Архитектура, жизненный цикл, сервисы

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Lifecycle ViewModel KTX | 2.7.0 | ViewModel, корутины |
| androidx.lifecycle:lifecycle-service | 2.8.3 | LifecycleService для сервисов с управляемым жизненным циклом |

#### Навигация

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Navigation Fragment/UI KTX | 2.7.7 | графы, NavController, deep links |
| Hilt Navigation Fragment | 1.2.0 | внедрение зависимостей в фрагменты с навигацией |

#### DI

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Hilt Android | 2.50 | внедрение зависимостей |
| Hilt Android Compiler | 2.50 | кодоген для Hilt |
| androidx.hilt:hilt-compiler | 1.2.0 | доп. кодоген (WorkManager/Nav и пр.) |

#### Данные и хранение

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Room (room-runtime, room-ktx, room-compiler) | 2.6.1 | БД, DAO, транзакции, Flow |
| DataStore Preferences | 1.0.0 | безопасное key-value-хранилище настроек/состояний |

#### Сеть, сериализация, локальный сервер

| Библиотека | Версия | Описание |
|------------|--------|----------|
| OkHttp | 4.12.0 | HTTP-клиент, интерсепторы, TLS |
| Gson | 2.9.0 | JSON-сериализация/парсинг (где нужно) |
| kotlinx-serialization-json | 1.6.3 | современная сериализация под Ktor/модели |
| Ktor Server (ktor-server-core, ktor-server-cio) | 2.3.7 | встраиваемый локальный HTTP-сервер |
| ktor-server-content-negotiation + ktor-serialization-kotlinx-json | 2.3.7 | JSON-ответы |
| ktor-server-cors | 2.3.7 | CORS-политики |
| ktor-server-call-logging | 2.3.7 | логирование запросов |

#### Карты, гео и локация

| Библиотека | Версия | Описание |
|------------|--------|----------|
| osmdroid-android | 6.1.18 | карта, тайлы, оверлеи |
| osmbonuspack | 6.9.0 | маршруты, маркеры, доп. утилиты поверх osmdroid |
| proj4j | 1.1.3 | проекции и преобразование координат |

#### UI-утилиты

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Intuit sdp/ssp | 1.0.6 | масштабируемые dp/sp для адаптивной верстки |

#### Утилиты/инфраструктура

| Библиотека | Версия | Описание |
|------------|--------|----------|
| commons-io | 2.10.0 | файловые утилиты, потоки |
| ckchangelog | 1.2.2 | экран/диалог change log |
| ANR-WatchDog | 1.4.0 | детектор ANR |

#### Тестирование

| Библиотека | Версия | Описание |
|------------|--------|----------|
| JUnit | 4.13.2 | базовые юнит-тесты |
| AndroidX Test Ext JUnit | 1.1.5 | интеграция JUnit для Android |
| AndroidX Test Runner | 1.5.2 | раннер инструментальных тестов |
| kotlinx-coroutines-test | 1.8.1 | тесты корутин/TestDispatcher |

---

## StaffManagerAndroid

#### Язык, сборка и плагины

| Технология | Версия | Описание |
|------------|--------|----------|
| AGP | 8.3.0 | сборка Android-модулей (application/library) |
| Kotlin | 1.9.0 | основной язык проекта |
| KSP | 1.9.0-1.0.13 | генерация кода (Room, Hilt и др.) вместо kapt |
| Hilt Gradle Plugin | 2.50 | DI-интеграция на этапе сборки |
| Safe Args | 2.7.7 | типобезопасная генерация аргументов навигации (gradle plugin + artifacts) |

#### Базовые Android-зависимости

| Библиотека | Версия | Описание |
|------------|--------|----------|
| androidx.core:core-ktx | 1.12.0 | Kotlin-утилиты для Android API |
| androidx.appcompat | 1.6.1 | обратная совместимость и темы |
| ConstraintLayout | 2.1.4 | разметка сложных экранов |
| Material Components (Views) | 1.11.0 | UI-компоненты по Material Design 2 |
| Multidex | 2.0.1 | поддержка проектов с большим числом методов (выход за пределы одного DEX) |

#### Архитектура, жизненный цикл

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Lifecycle ViewModel KTX | 2.7.0 | ViewModel, корутины |
| Lifecycle Service | 2.7.0 | LifecycleService для сервисов с управляемым жизненным циклом |

#### Навигация

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Navigation Fragment/UI KTX | 2.7.7 | NavController, графы, deep links |

#### DI

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Hilt Android | 2.50 | внедрение зависимостей |
| Hilt Android Compiler | 2.50 | кодоген для Hilt |

#### Данные и хранение

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Room (room-runtime, room-ktx, room-compiler) | 2.6.1 | БД, DAO, транзакции, Flow |
| DataStore Preferences | 1.0.0 | безопасное key-value-хранилище настроек/состояний |

#### Сеть и сериализация

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Retrofit | 2.9.0 | декларативные API-интерфейсы |
| converter-gson | 2.9.0 | JSON-конвертер для Retrofit |
| OkHttp | 4.12.0 | HTTP-клиент |
| OkHttp Logging Interceptor | 4.12.0 | детальное логирование запросов/ответов |
| Gson | 2.9.0 | парсинг/сериализация JSON, совместим с Retrofit-конвертером |

#### UI: Compose + классические Views

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Material3 (Compose) | 1.2.1 | современный UI-стек на Compose |
| Glide | 4.16.0 | загрузка и кэширование изображений |
| Compose ui-tooling-preview | 1.6.4 | предпросмотры в IDE |
| Compose ui-tooling | 1.6.4 | инструменты разработчика |

#### Карты, гео и локация

| Библиотека | Версия | Описание |
|------------|--------|----------|
| osmdroid-android | 6.1.18 | карта, тайлы, оверлеи |

#### UI-утилиты

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Intuit sdp-android | 1.0.6 | масштабируемые dp для адаптивной верстки |

#### Утилиты/инфраструктура

| Библиотека | Версия | Описание |
|------------|--------|----------|
| commons-io | 2.10.0 | файловые утилиты, потоки |

#### Тестирование

| Библиотека | Версия | Описание |
|------------|--------|----------|
| JUnit | 4.13.2 | базовые юнит-тесты |
| AndroidX Test Ext JUnit | 1.1.5 | интеграция JUnit для Android |
| AndroidX Test Runner | 1.5.2 | раннер инструментальных тестов |
| kotlinx-coroutines-test | 1.8.1 | тесты корутин/TestDispatcher |

#### Общая информация

| Параметр | Значение |
|----------|----------|
| Язык | Kotlin |
| UI | View и XML |
| Работа с сетью | синхронизация с сервером происходит по TCP через Socket-подключение, для HTTP-запросов используется OkHttpClient и Retrofit |
| Dependency injection | Hilt |
| Локальная база данных | Room |
| Хранение настроек приложения | DataStore |
| Паттерн разработки | MVVM |
| Движок карты | OpenStreetMap |

# DM & DB

## CS

#### Язык и фреймворки

| Технология | Версия |
|------------|--------|
| C# | 9 |
| .NET | 8 |
| .NET Framework | 4.8 |
| ADO.NET | |

#### База данных

| Технология |
|------------|
| MS SQL |
| PostgreSQL |

#### Библиотеки

**Протоколы и коммуникации**

| Библиотека | Описание |
|------------|----------|
| EGTS | протокол ГЛОНАСС для передачи телематических данных |
| SSH.NET | SSH клиент для удаленного доступа |
| FluentFTP | FTP клиент для работы с файловыми серверами |
| RITM | |

**Логирование**

| Библиотека | Описание |
|------------|----------|
| NLog | библиотека логирования |

**Геопространственные данные**

| Библиотека | Описание |
|------------|----------|
| GMap.NET.Core | работа с картами и геоданными |

**Устройства и системы**

| Библиотека |
|------------|
| DASLib |

#### Языки баз данных

| Язык | Описание |
|------|----------|
| T-SQL | язык запросов для MS SQL Server |
| pgSQL | язык запросов для PostgreSQL |

---

## Бортовое ПО

#### Язык и фреймворки

| Технология | Версия |
|------------|--------|
| C# | 9 |
| .NET | 8 |
| .NET Framework | 4.8 |
| ADO.NET | |

#### База данных

| Технология |
|------------|
| Compact |

#### Библиотеки

**Протоколы и коммуникации**

| Библиотека | Описание |
|------------|----------|
| EGTS | протокол ГЛОНАСС для передачи телематических данных |
| SSH.NET | SSH клиент для удаленного доступа |
| FluentFTP | FTP клиент для работы с файловыми серверами |
| RITM | |

**Логирование**

| Библиотека | Описание |
|------------|----------|
| NLog | библиотека логирования |

**Геопространственные данные**

| Библиотека | Описание |
|------------|----------|
| GMap.NET.Core | работа с картами и геоданными |

**Устройства и системы**

| Библиотека |
|------------|
| DASLib |

# WMM

### Backend (Node.js веб-сервер)

#### Язык и фреймворки

| Технология | Версия |
|------------|--------|
| Node.js | 18 |
| JavaScript | |
| TypeScript | |

#### Фреймворки и библиотеки

**Веб-сервер**

| Библиотека | Описание |
|------------|----------|
| Express | веб-фреймворк для Node.js |

**База данных**

| Библиотека | Описание |
|------------|----------|
| TypeORM | ORM для работы с базами данных |

**Сеть и коммуникации**

| Библиотека | Описание |
|------------|----------|
| sockjs | библиотека для WebSocket-подключений |
| http-proxy-middleware | проксирование HTTP-запросов |

**Инструменты разработки**

| Инструмент | Описание |
|------------|----------|
| prettier | форматирование кода |

#### База данных

| Технология |
|------------|
| MS SQL |
| PostgreSQL |

---

### Frontend (Angular)

#### Язык и фреймворки

| Технология | Версия |
|------------|--------|
| Angular | 15+ |
| TypeScript | |
| JavaScript | |

#### UI-библиотеки и компоненты

| Библиотека | Описание |
|------------|----------|
| Angular Material | библиотека Material Design UI-компонентов для Angular |
| angular-gridster2 | создание сеток и панелей с перетаскиванием |
| ngx-datatable | таблицы |
| @perfectmemory/ngx-contextmenu | контекстное меню для Angular |
| @ng-select/ng-select | компонент выпадающего списка |

#### Менеджеры состояния

| Библиотека | Описание |
|------------|----------|
| RxJS | библиотека для реактивного программирования |
| Akita | менеджер состояний |

#### Коммуникации

| Библиотека | Описание |
|------------|----------|
| sockjs-client | клиент для WebSocket-подключений |

#### Интернационализация

| Библиотека | Описание |
|------------|----------|
| @ngx-translate/core | интернационализация и локализация |

#### Карты и визуализация

| Библиотека | Описание |
|------------|----------|
| ol (OpenLayers) | библиотека для работы с веб-картами |
| echarts | библиотека для создания интерактивных диаграмм |

#### Инструменты разработки

| Инструмент | Описание |
|------------|----------|
| prettier | форматирование кода |

# BMLinux

### Backend (бортовое ПО)

#### Язык и фреймворки

| Технология | Версия |
|------------|--------|
| C# | 13.0 |
| .NET | 9.0 |
| ASP.NET Core | 9.0.9 |

#### База данных

| Технология |
|------------|
| SQLite |

#### Библиотеки

**ORM и работа с базой данных**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Microsoft.EntityFrameworkCore | 9.0.9 | ORM для работы с базами данных |
| Microsoft.EntityFrameworkCore.Sqlite | 9.0.9 | провайдер SQLite для EF Core |
| Microsoft.EntityFrameworkCore.Design | 9.0.9 | инструменты дизайна для EF Core |

**Логирование**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Serilog | 4.3.0 | структурированное логирование |
| Serilog.AspNetCore | 9.0.0 | интеграция Serilog с ASP.NET Core |
| Serilog.Sinks.Console | 6.0.0 | вывод логов в консоль |

**Валидация**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| FluentValidation | 12.0.0 | валидация данных с fluent API |
| FluentValidation.DependencyInjectionExtensions | 12.0.0 | расширения для DI |

**Маппинг объектов**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| AutoMapper | 14.0.0 | автоматическое маппинг объектов |

**Медиатор и CQRS**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| MediatR | 12.5.0 | реализация паттерна Mediator |
| MediatR.Contracts | 2.0.1 | контракты для MediatR |

**Сериализация**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| MemoryPack | 1.21.4 | высокопроизводительная сериализация |

**Планирование задач**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Quartz | 3.15.0 | планирование выполнения фоновых задач |
| Quartz.Extensions.DependencyInjection | 3.15.0 | интеграция Quartz с DI |
| Quartz.Extensions.Hosting | 3.14.0 | интеграция Quartz с Hosting |

**Устойчивость и политики**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Polly | 8.6.3 | библиотека для реализации политик устойчивости (retry, circuit breaker) |
| System.Threading.RateLimiting | 9.0.9 | ограничение скорости выполнения операций |

**Геопространственные данные**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| NetTopologySuite | 2.6.0 | библиотека для работы с геометрией и пространственными данными |
| DotSpatial.Projections | 4.0.656 | работа с пространственными проекциями |
| GeoJSON.Net | 1.4.1 | работа с форматом GeoJSON |
| GMap.NET.Core | 2.1.7 | работа с картами и геоданными |

**Протоколы и коммуникации**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| MQTTnet | 4.3.7.1207 | MQTT клиент для обмена сообщениями |
| Microsoft.AspNetCore.SignalR.Client | 9.0.9 | клиент SignalR для real-time коммуникации |
| NModbus | 3.0.81 | протокол Modbus |
| w7rus.SerialPortWrapper | 1.2.0 | работа с последовательным портом |

**Аутентификация и авторизация**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Microsoft.AspNetCore.Authentication.JwtBearer | 9.0.9 | аутентификация через JWT токены |

**Утилиты**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Scrutor | 6.1.0 | сканирование и регистрация сервисов |
| Ardalis.SmartEnum | 8.2.0 | типобезопасные перечисления |
| SharpGIS.NmeaParser | 3.0.0 | парсинг данных NMEA |
| System.IO.Hashing | 9.0.9 | вычисление хешей |

**API документация**

| Библиотека | Версия | Описание |
|------------|--------|----------|
| Swashbuckle.AspNetCore | 9.0.4 | генерация Swagger/OpenAPI документации |

#### Тестирование

| Библиотека | Версия | Описание |
|------------|--------|----------|
| xunit | 2.9.3 | фреймворк для unit тестирования |
| xunit.runner.visualstudio | 3.1.4 | интеграция xUnit с Visual Studio |
| Moq | 4.20.72 | библиотека для создания моков |
| AutoFixture.Xunit | 4.19.0 | автоматическая генерация тестовых данных |
| MockQueryable.Moq | 8.0.0 | моки для IQueryable |
| Microsoft.NET.Test.Sdk | 17.14.1 | SDK для тестирования |
| coverlet.collector | 6.0.4 | сбор данных о покрытии кода тестами |
| EntityFramework | 6.5.1 | для тестирования |

---

### Frontend (бортовое ПО)

#### Фреймворк и основные инструменты

| Технология | Описание |
|------------|----------|
| Angular | |
| Electron | фреймворк для создания десктопных приложений |
| Nx Monorepo | инструмент для управления монорепозиторием |

#### Менеджеры состояния

| Библиотека | Описание |
|------------|----------|
| Ngxs | управление состоянием для Angular приложений |

#### UI-библиотеки и компоненты

| Библиотека | Описание |
|------------|----------|
| Angular Material | библиотека Material Design UI-компонентов для Angular |

#### Карты и визуализация

| Библиотека | Описание |
|------------|----------|
| OpenLayers (ol) | библиотека для работы с веб-картами |

# Применяемые технологии

## 1. Стек для легаси продуктов

### 1.1 Backend

#### Языки и платформы

| Технология       | Версия | Статус | Обоснование |
|------------------|--------|--------|-------------|
| C#               | -      | ✅ Поддерживать | Версия языка определяется используемой версией .NET |
| .NET Framework   | 4.8    | ✅ Поддерживать | Финальная версия платформы с поддержкой до 2028 года |

Обоснование: для легаси продуктов приоритетом является стабильность и минимизация рисков изменений. .NET Framework 4.8 является финальной версией платформы и будет поддерживаться Microsoft до 2028 года.

#### Базы данных

| Технология     | Статус | Обоснование |
|----------------|--------|-------------|
| MS SQL Server  | ⚠️ Мигрировать постепенно | Используется в легаси, при плановом рефакторинге рекомендуется переход на PostgreSQL |
| PostgreSQL     | ✅ Поддерживать | Универсальная production-ready СУБД с активным развитием и широкой поддержкой |
| SQL Compact    | ❗ Мигрировать  | Устаревшая БД, ограниченная функциональность и сильная зависимость от Windows |
| SQLite         | ✅ Поддерживать | Легковесная встраиваемая БД для локального хранения данных |

Обоснование: PostgreSQL рекомендуется как целевая платформа для новых и модернизируемых компонентов. SQL Compact признана устаревшей и требует поэтапной миграции без полного переписывания системы.

#### ORM и работа с БД

| Библиотека       | Версия | Статус | Обоснование |
|------------------|--------|--------|-------------|
| Entity Framework | -      | ✅ Поддерживать | Используется в проектах на .NET Framework, версия определяется поддерживаемой платформой |
| ADO.NET          | -      | ⚠️ Мигрировать постепенно | Прямая работа с БД в легаси системах без изменения архитектуры |

Обоснование: для легаси-систем допускается постепенный отказ от прямого использования ADO.NET в пользу Entity Framework. ADO.NET остается допустимым для сложных SQL-сценариев, bulk-операций и модулей без планового рефакторинга. Полный отказ от ADO.NET не является целью; приоритетом является повышение поддерживаемости кода без увеличения рисков и с сохранением возможности повторного использования наработок при дальнейшей модернизации системы.

#### Логирование

| Библиотека | Статус | Обоснование |
|------------|--------|-------------|
| Serilog    | ✅ Поддерживать | Современная библиотека, поддерживает структурированные логи, гибкие sinks, интеграцию с облачными и аналитическими системами (ELK, Seq, Splunk) |
| NLog       | ⚠️ Мигрировать постепенно | Рабочее решение для легаси, поддерживает различные targets, но уступает Serilog по структурированности и интеграции с современными системами |
| log4net    | ❗ Мигрировать | Устаревшая библиотека, сложно работать с разными типами вывода, не поддерживает современные аналитические стеки (например ELK), рекомендуется мигрировать на Serilog |

Обоснование: Для новых модулей и постепенной миграции рекомендуется Serilog — она обеспечивает структурированные логи, гибкие sinks, поддержку облачных и аналитических систем и упрощает централизованное логирование. Это повышает поддерживаемость и интеграцию кода, при этом не требует срочной полной переписки существующего логирования.

#### Сериализация

| Библиотека       | Статус | Обоснование |
|------------------|--------|-------------|
| Newtonsoft.Json  | ✅ Поддерживать | Замена не критична |
| Google.Protobuf  | ✅ Поддерживать | Эффективная бинарная сериализация |

**Обоснование:** Для легаси-систем Newtonsoft.Json остаётся стандартом сериализации. Замена на System.Text.Json не требуется, если нет критичных требований к производительности.

#### Протоколы и коммуникации

| Библиотека | Статус | Обоснование |
|------------|--------|-------------|
| M2Mqtt     | ⚠️ Рассмотреть обновление | Устаревающая библиотека MQTT, рекомендуется плановая замена на MQTTnet при модернизации системы |
| SSH.NET    | ✅ Поддерживать | Стабильная библиотека для работы по SSH, безопасно использовать в легаси |
| FluentFTP  | ✅ Поддерживать | Активно поддерживается, надежная реализация FTP |
| EGTS       | ✅ Поддерживать | Специфичный протокол для ГЛОНАСС, поддержка критична для существующих модулей |

**Обоснование:** M2Mqtt устаревает и имеет ограниченное развитие, поэтому для новых модулей или при рефакторинге рекомендуется использовать MQTTnet. Для существующих легаси систем текущая библиотека работает стабильно, срочной замены не требуется. Остальные протоколы остаются актуальными и безопасными для использования.

---

## 2. Стек для новых продуктов

### 2.1 Backend

#### Языки и платформы

| Технология    | Версия                        | Обоснование |
|---------------|-------------------------------|-------------|
| .NET          | 10 (LTS)                      | LTS-версия с долгосрочной поддержкой (до 14.10.2028), оптимальна для новых production-проектов |
| C#            | Актуальная (в составе .NET 10) | Синхронизирована с платформой, новые конструкции упрощают код |
| ASP.NET Core  | 10.x                          | Высокопроизводительный веб-фреймворк, стандарт для backend на .NET |

Обоснование: .NET 10 и C# 14 обеспечивают улучшенную производительность, кроссплатформенность, новые языковые конструкции, расширенные стандартные библиотеки и интеграцию с облаком и микросервисами. Долгосрочная поддержка снижает риски техдолга.

#### Базы данных

| Технология | Обоснование |
|------------|-------------|
| PostgreSQL | Универсальное решение |
| SQLite    | Лёгкая встроенная БД для локальных решений |

#### ORM и работа с БД

| Библиотека           | Версия                                 | Обоснование |
|----------------------|----------------------------------------|-------------|
| Entity Framework Core | Актуальная версия для используемой .NET платформы | Поддерживает последние возможности ORM, высокую производительность и совместимость с актуальными инструментами |

#### Логирование

| Библиотека | Версия | Обоснование |
|------------|--------|-------------|
| Serilog    | Актуальная версия для .NET 10 | Современное структурированное логирование, лёгкая интеграция с облачными и аналитическими системами (ELK, Seq, Splunk), поддержка централизованного логирования |

Обоснование: Serilog — стандарт для новых .NET проектов. Поддерживает структурированные логи, гибкие sinks и интеграцию с системами мониторинга, повышая удобство эксплуатации и поддерживаемость кода.

#### Сериализация

| Библиотека        | Обоснование |
|------------------|-------------|
| System.Text.Json  | Встроенная в .NET, высокая производительность |
| MemoryPack        | Для высокопроизводительной бинарной сериализации, оптимально при рефакторинге корпоративного протокола RITM |
| Google.Protobuf   | Эффективная бинарная сериализация, только по согласованию |

Обоснование: Для новых проектов рекомендуется использовать System.Text.Json как стандартную библиотеку сериализации: она встроена в .NET, быстрее Newtonsoft.Json, поддерживает современные конструкции Span/Memory и структурированные JSON-схемы. MemoryPack подходит для высокопроизводительных бинарных сценариев, в том числе при переходе с RITM.

#### Протоколы и коммуникации

| Библиотека | Обоснование                             |
| ---------- | --------------------------------------- |
| MQTTnet    | Современный MQTT клиент (вместо M2Mqtt) |
| SignalR    | Real-time коммуникация                  |
| NModbus    | Протокол Modbus)                        |

### Архитектурные паттерны и инструменты

#### CQRS / Mediator

| Библиотека       | Обоснование |
|-----------------|-------------|
| MediatR          | Реализация паттерна Mediator для разделения команд и запросов |
| ❓ TODO          | Рассмотреть переход в сторону бесплатного и поддерживаемого решения |

#### Валидация

| Библиотека       | Обоснование                                                                          |
| ---------------- | ------------------------------------------------------------------------------------ |
| FluentValidation | Fluent API для проверки сложных условий, повышает читаемость и поддерживаемость кода |
| ❓ TODO           | Рассмотреть библиотеки для реализации Result паттерна                               |

#### Маппинг / DTO

| Библиотека  | Обоснование |
|------------|-------------|
| AutoMapper | Автоматический маппинг объектов, уменьшает ручной код при трансформации DTO и моделей |
| ❓ Mapster | Быстрая и лёгкая альтернатива AutoMapper с source generators и меньшей конфигурацией |

> ❓ TODO: проверить Mapster, подходит ли для проектов, протестировать source generators и сложные сценарии маппинга

#### Устойчивость / Политики

| Библиотека | Обоснование |
|------------|-------------|
| Polly      | Реализация retry, circuit breaker и других политик устойчивости |

#### DI / Инъекция зависимостей

| Библиотека | Обоснование |
|------------|-------------|
| Microsoft.Extensions.DependencyInjection | Стандартный контейнер DI для .NET |
| Scrutor | Расширение для автоматической регистрации сервисов по соглашению, удобно для модульных проектов |

#### Хостинг и фоновые задачи

| Библиотека / Инструмент       | Обоснование |
|-------------------------------|-------------|
| Microsoft.Extensions.Hosting  | Управление жизненным циклом приложений, интеграция с DI и background-сервисами |
| IHostedService / BackgroundService | Простые фоновые задачи внутри приложения, периодичность через Timer/Task.Delay |
| Quartz.Extensions.Hosting     | Планировщик с гибким расписанием и поддержкой критичных задач |

> Обоснование использования:
> - **IHostedService / BackgroundService** — для простых фоновых задач, связанных с приложением.  
> - **Quartz** — для сложного расписания, устойчивости и управления job-ами.

#### Геопространственные данные

| Библиотека                | Обоснование |
|---------------------------|-------------|
| GMap.NET.Core             | Работа с картами и геоданными |
| GeoJSON.Net               | Работа с форматом GeoJSON |
| DotSpatial.Projections    | Работа с пространственными проекциями |
| NetTopologySuite          | Работа с геометрией и пространственными данными |

#### Тестирование

| Библиотека        | Обоснование |
|-------------------|-------------|
| xUnit                          | Фреймворк для unit-тестов |
| Moq                             | Создание моков для зависимостей |
| AutoFixture.Xunit               | Генерация тестовых данных |
| MockQueryable.Moq               | Моки для IQueryable |

---

## Заключение

- Для **легаси систем** главное — стабильность, постепенная миграция и сохранение существующих наработок.
- Для **новых проектов** — использовать современные, поддерживаемые технологии.