🎮 Управление устройствами

Чтобы упростить подключение веб-приложения к Entrance Observer, IoT-датчикам улья, роботизированному улью и сторонним источникам телеметрии, нужен отдельный экран управления устройствами.

Сейчас устройства напрямую используют API-токены. Из-за этого позже сложно понять, используется ли токен, каким устройством он используется и когда устройство последний раз взаимодействовало с Gratheon.

Ещё одна проблема - если Gratheon начнёт поставлять собственные устройства, понадобится аналитика, отладка и версионирование по каждому устройству. Для этого нужна отдельная модель данных устройств.

Предлагаемое решение

В репозитории web-app:

  • Добавить новый пункт верхнего меню Устройства.
  • Добавить список устройств:
    • список должен получать данные через GraphQL-запрос.
  • Добавить кнопку создания нового устройства и отдельный экран создания, похожий на создание нового улья:
    • тип устройства: IoT-датчики улья, Entrance Observer, роботизированный улей или сторонняя интеграция;
    • номер модели строкой, чтобы понимать, какое ПО работает на устройстве и какой набор функций доступен при серийном производстве;
    • выбор улья с отправкой hiveId на backend;
      • опциональный выбор секции с отправкой boxId на backend;
    • генерация нового API-токена в user-cycle для этого устройства;
      • в user-cycle нужно добавить колонку deviceId и сохранять её вместе с токеном;
    • lastUsed - дата и время последнего использования;
      • поле должно обновляться при API-вызовах, если прошло больше 1 минуты;
    • статус устройства:
      • если lastUsed меньше 1 минуты назад, показывать зелёный статус онлайн;
      • если lastUsed больше 5 минут назад, показывать жёлтый статус ожидание;
      • если lastUsed больше 1 часа назад, показывать красный статус офлайн.
  • Добавить экран редактирования устройства:
  • Кнопка удаления устройства должна выполнять soft-delete:
    • перед удалением нужно отозвать API-токен.
  • В аккаунте, в списке токенов, показывать, используется ли API-токен устройством. Вместо удаления такого токена нужно вести пользователя на экран устройства.