# Концепция UI

## 1. Стек UI

- Frontend: Vue 3 + Vite (референсный runtime `../ioot-pro-cabinet`).
- Контуры: tenant UI, master UI, локальный HMI.
- Архитектура экрана: двухколоночный layout (`Sidebar`, `Content`) с popup Infobar.
- Runtime маршрутов: универсальный контейнер экрана (RouteContent-подход).
- Фактический статус runtime: базовые карточные модули и auth/passkey flow реализованы, а shell baseline уже вынесен в отдельные layout/components/composables с viewport-contained scroll surface и явным frontend typing baseline.

## 2. UX-принципы

- Mobile-oriented UI.
- Mobile-first адаптивная сетка.
- Единый UX на телефон/планшет/десктоп.
- Минимизация глубины навигации для операторских сценариев.
- Согласованное поведение UI в модульной карточной модели: карточка/карта.

## 3. Модульная модель UI

- Модули представлены в основном окне приложения, каждый модуль — отдельная карточка.
- Карточка имеет три состояния:
  - свёрнутая (`минимальный виджет`);
  - развернутая (`рабочий виджет`);
  - полноэкранная (`работа в карточке`).
- По объекту карточки открывается инфобар в popup с полным набором инструментов.
- Справочник, настройки и дополнительные элементы скрыты в бургер-меню.
- Отдельные полноэкранные представления (карта, пульт) размещаются кнопками быстрого вызова в верхнем правом углу интерфейса.

## 4. Базовая компоновка

- Базовый layout:
  - навигация;
  - рабочая зона схем/графиков/состояний (карточки модулей).
- Навигация и виджеты управляются конфигурацией (schema-driven, JSON-driven).
- Карты используются для объектов с геопривязкой.
- Infobar реализуется как popup и используется для детального объекта и истории.

## 5. Экранные роли

- Оператор: мониторинг, тревоги, команды.
- Инженер: диагностика, параметры, профили устройств.
- Администратор: подписки, политики, доступы.

## 6. Нефункциональные требования UI

- Работа в деградированном канале связи.
- Предсказуемое поведение при частичной недоступности backend.
- Стабильная работа на 10" HMI и мобильных устройствах.

## 7. Контракты UI -> API

- Глобальный контракт данных UI:
  - `GET /api/v1/<resource>/list`
  - `GET /api/v1/<resource>/scheme`
- Контекст маршрута в заголовках:
  - `X-Route-Path`
  - `X-Route-Module`
  - `X-Route-Filter`
- Версия клиента в заголовках:
  - `X-Client-Version`
  - `X-Client-Build-Time`

## 8. Рантайм навигации

- Состав модулей, папок и меню приходит с backend-каталога.
- Каталог модулей использует параметры:
  - `display_module`
  - `show_filters`
  - `module_view`
- Разрешено расширение каталога новыми параметрами без изменения базового каркаса.

## 9. Контроль качества

- Обязательные проверки перед релизом UI:
  - i18n check;
  - unit/integration tests;
  - production build;
  - smoke основных endpoint-ов.
- i18n-политика:
  - русский как source-locale;
  - синхронизация ключей на поддерживаемые языки.
- PWA:
  - service worker, auto-update, offline-ready режим поддерживаются как базовая опция.
