Разработать систему удаленного мониторинга и управления
Веб-сервис с возможностью дистанционного мониторинга и управления устройствами , а также десктопное приложения под платформу Windows, позволяющее выполнять различные команды передаваемые удаленно
Система должна иметь следующие функциональные блоки:
В первичные блоки входит реализация Frontend/Backend
В порядке приоритета выполнения:
- Отображение информации подключенных устройств
- Создание профиля администратора (регистрация/вход)
- Конфигурирование устройств (запрос режима сна, перезагрузки, выключения)
- Запрос блокировки устройства
- Отображение устройств на карте
- Отображение графа состояния всех устройств
- Возможность создания групп и подключения к ним через идентификатор и пароль
Во второстепенные блоки входит реализация Dekstop
В порядке приоритета выполнения:
- Установка связи с сервером через идентификатор и пароль
- Принятие и выполнение консольных команд PowerShell c сервера
- Отправка личных конфигураций на сервер при необходимости
В системе имеется два типа пользователей: администратор и управляемое устройство Администратор имеет доступ к web-сервису и права на запрос выполнения основных задач серверу. Управляемое устройство имеет доступ к связи с сервером для выполнения сообщённых задач, а также имеет возможность сообщать серверу свои конфигурации
Пользователю сервиса предоставляется возможность зарегистрироваться на сервисе указав следующие входные данные:
- логин профиля - обязательное поле
- email профиля - обязательное поле
- пароль профиля - обязательное поле
Регистрация проходит в форме, которая всплывает при неавторизованном открытии сервиса После регистрации у пользователя появляется возможность создавать группы и подключаться к ним При успешном входе, в идеале, хранить куки или другую информацию для последующего автоматического входа на сервис
Администратор имеет возможность создавать новую группу через web-сервис, а также подключаться к другим группам используя следующие входные данные:
- логин группы - обязательное поле
- пароль для группы - обязательное поле
- ключ доступа к управлению (в случае создания группы) - обязательное поле
Управляемое устройство имеет возможность подключаться к группам используя следующие входные данные:
- идентификатор (формата GUID) - обязательное поле
- пароль - обязательное поле
После создания группы на сервере регистрируется новый идентификатор (формата GUID), который будет использоваться управляемым устройством для дальнейшего подключения. Данный идентификатор должен отображаться у администратора в веб-сервисе, если тот подключен к созданной группе
Администратор после аутентификации (ввода логина и пароля) получает доступ к следующему функционалу в системе:
- Просмотр конфигураций устройств
- Выполнение запросов на выключение, перезагрузку, сон устройства
- Просмотр местоположения устройств на карте
- Просмотр состояний (сон/подключен/отключен) устройств на момент последнего обновления данных
- Запрос на блокировку использования конкретного устройства
- Удаление, переименование группы
- Отключение устройств от группы
- Выход из группы
Администратор после аутентификации (ввода идентификатора и пароля) получает доступ к следующему функционалу в системе:
- Отправка личных характеристик по запросу
- Отправка текущего состояния по запросу
- Принятие и выполнение консольных команд с сервера
- Отключение от группы
В левой части интерфейса web-приложения растянутым по всей высоте (вычитая длину шапки) и занимающим около четверти (1/4-1/5) длины экрана должен быть расположен список подключенных устройств. Каждый элемент отображает название устройства и значок его состояния (вкл/выкл/сон/заблокирован), дату последней связи устройства с сервером. Также в списке должно отображаться количество элементов. При отсутствии подключенных устройств отображать соответствующий текст с малозаметным текстом (серый на белом фоне, к примеру). Список устройств должен подгружаться лениво
При выборе элемента в списке подключенных устройств, оставшееся по длине пространство экрана занимает панель управления устройством, в котором требуется расположить характеристики устройства, панель конфигураций, кнопку отключения устройства от группы (при нажатии требовать подтверждения действия)
Если ни один элемент из списка подключенных устройств не выбран, то требуется отображать общую статистику по всем устройствам (граф подключенных/отключенных и т.д., по возможности полный список логирования выполненных действий в системе)
В шапке должен находиться логотип системы и идентификатор группы (с возможность выделения и копирования текста, в идеале копирование происходит по клику без выделения текста). В правой части шапки расположить кнопку выхода из режима администрирования группы (при нажатии требовать подтверждения действия)
При нажатии на значок земли (расположение значка еще не определено), вместо панели общей информации или информации конкретного устройства отображать карту (Yandex maps) со всеми подключенными устройствами, при нажатии на метку устройства показывать его характеристики
Простенький интерфейс с полем ввода идентификатором и паролем группы, ниже отображается поле логирование требуемых задач, которые отправил сервер. Также присутствует кнопка отключения от группы
Для реализации системы предлагается следующий стек технологий:
-
Backend:
- Язык C#
- Фреймворк ASP.NET
- БД PostgreSQL
-
Frontend:
- Angular
- TypeScript
- JQuery
- YandexMaps API
- SCSS
Минимализм, акцент на белые тона в сочетании с каким-либо цветом