# Программный стек

## Метаданные

- Документ ID: `REG-TECH-001`
- Версия: `0.1.1`
- Ответственный: `ООО "Аросса"`
- Статус: `Готово`

## 1. Назначение и границы

- Целевые задачи системы: `сбор и нормализация телеметрии, супервизорное управление процессом, маршрутизация команд и уставок, хранение и аналитика данных, синхронизация local/tenant/master контуров`.
- Основные функции: `REST API (Swagger/OpenAPI), MQTT обмен событиями и командами, direct CANopen SDO/PDO, UI для оператора и инженера, аудит и журналирование`.
- Граница для контура ПО: сервер/интерфейс и Linux-embedded сборка контроллера.
- Граница для контура ПАК: программный стек, Linux-embedded сборка камеры, embedded-прошивки и аппаратная часть.

## 2. Состав программных модулей и сборок

- Backend: `Go` (runtime API + control-scripts).
- Frontend: `Vue 3 + Vite` (reference runtime), карточный интерфейс модулей с тремя состояниями:
  - свёрнутое (минифицированный виджет),
  - развернутое (расширенный виджет),
  - полноэкранное (работа в карточке).
- База данных: `PostgreSQL` (телеметрия, события, конфигурации, аудит).
- Полевые и транспортные компоненты: `CANopen, MQTT, RS485`.
- Linux-embedded сборка контроллера: `GR-CTRL-LX`
  - `edge-runtime` на `iT-2110-015700`,
  - локальный MQTT-брокер,
  - сервис синхронизации и синхронных правил.
- Linux-embedded сборка камеры: `GR-CAM-LX`
  - runtime AI (фаза роста, ANPR, индекс растений),
  - публикация результатов в MQTT/API.
- Embedded-прошивки IOOT PRO:
  - `AT32`: realtime-контур и поле CANopen (`PDO/SDO`) для устройств и акторов;
  - `ESP32`: транспортный bridge (UART/MQTT), локальный gateway-профиль;
  - `ASR6601`: LoRa-подсистема (при необходимости оборудования).

## 3. Интеграционный контур

- Модульный shell UI строится по backend-driven модели (через `modules/scheme` и `modules/list`);
- Интерактивная работа по объекту выполняется через `Infobar` popup;
- Карточный интерфейс использует единый профиль действий:
  - базовая навигация в `Sidebar/Content`,
  - всплывающие настройки/доп.инструменты в popup,
  - быстрые fullscreen-вью (`карта`, `пульт`) в верхнем правом углу приложения.

## 4. Краткий словарь терминов

| Термин | Что означает в документации |
|---|---|
| `local` | Локальный контур на объекте: контроллер, локальный брокер, работа даже при потере облака |
| `tenant` | Контур отдельного заказчика или площадки с собственными данными и правилами доступа |
| `master` | Верхний облачный уровень для межобъектной аналитики, подписок и централизованной политики |
| `reference runtime` | Актуальная реализация backend/frontend стенда, с которой синхронизируются регистрационные документы |
| `modules/scheme` | API, которое описывает, какие модули и элементы интерфейса должен показать клиент |
| `modules/list` | API со списком доступных модулей и их текущим состоянием |
| `catalog_enrichment` | Дополнительные данные от backend, которыми обогащается каталог модулей в UI |
| `Infobar popup` | Всплывающая область интерфейса для быстрых действий и просмотра деталей по объекту |
| `role/scope/capability guards` | Набор проверок, который ограничивает действия по роли пользователя, контуру доступа и включенным возможностям |

## 5. Технологические требования

- Требования к ОС и окружению: `Linux для local/cloud/embedded контуров, поддержка CAN и RS485 на объектном контроллере, контейнерный или сервисный запуск backend и MQTT-брокера`.
- Требования к СУБД: `PostgreSQL как основное хранилище телеметрии, событий, конфигураций и справочников; версия и схема фиксируются релизом`.
- Требования к сетевому контуру: `Связность MQTT и REST между local/tenant/master уровнями, поддержка офлайн-буферизации и досинхронизации после восстановления канала`.

## 6. Технические зависимости

- Embedded-компоненты обновляются через `ioot-pro-embedded`, при этом матрица релизов синхронизируется в `build-matrix`.
- Для сборки embedded-блоков обязательны:
  - `make` / `ARM_GCC_PATH` для `AT32F415`;
  - `idf.py` и `ESP-IDF` для `ESP32-S3`;
  - `dfu-util` для обновления `AT32F415` по USB DFU.

## 7. Ссылки на действующие разделы

- [Архитектура](../../architecture)
- [Требования](../../requirements)
- [Модель данных](../../data-model)
- [Модель продуктов](../dual-registration-scope)
- [Матрица сборок и компонентов](../build-matrix)
