Представляем архитектурное описание компонентов нашей Электронной очереди и сводный обзор применяемых технологий.
Архитектурная схема 
  
 1. В системе заводится Головная компания, Территориальные офисы и их Подразделения, с привязкой к локациям и разграниченными правами администрирования.
 2. К каждому Подразделению привязываются Табло и Киоски, расположенные внутри данных офисов и Сотрудники, которые могут регистрироваться и авторизовываться в системе.
 3. Рабочие места операторов являются местом обслуживания клиентов. Когда сотрудник авторизуется на рабочем месте, он выбирает в рамках системы функционал, который он готов выполнять (обслуживание юр. лиц, физ. лиц, общие вопросы и т. д.).
 4. Система электронной очереди, на основе интерфейса Стоек регистрации (киосков) предлагает клиентам получить талон по желаемому направлению (кредиты, депозиты, другие вопросы и т. д.).
 5. В зависимости от рабочего функционала сотрудников (типов заявок, которые умеет/готов обрабатывать тот или иной сотрудник) система электронной очереди направляет заявку к подходящему Рабочему месту оператора.
	 Учитывается загруженность Рабочих мест, поддерживается пересечение заявок между столами, которые могут одинаково обрабатывать различные типы заявок.
	 Когда подходит очередь талона, обновляется информация на Табло и происходит вызов клиента к привязанному системой столу с сотрудником.
Алгоритм распределения заявок 
  
 1. По каждому типу заявок (кредиты, депозиты, другие вопросы и т. д.) система учитывает свободные, занятые и неактивные Рабочие места оператора.
 2. Когда подходит очередь очередного клиента, после исключения занятых и неактивных столов из всех свободных сотрудников выбирается обработавший наименьшее количество заявок за установленный период.
Единый сервер 
  
Технологии 
	 Наше решение разработано с использованием только бесплатных технологий, а значит не требует приобретения сторонних лицензий, в качестве основы может быть использована ОС Linux. Запуск Системы электронной очереди не предполагает никаких дополнительных платежей, кроме приобретения лицензии на саму Электронную очередь и оплату пусконаладочных работ.
  
- СУБД PostgreSQL версии 12 и выше 
- Брокер сообщений ActiveMQ 
- Бэк-офис/Рабочее место оператора — Spring/SpringBoot 
- Rest-сервис для работы стоек регистрации — Spring/SpringBoot 
- Rest-сервис/Веб-приложение для работы электронных табло — Spring/SpringBoot 
- Фоновый системный процесс (демон) — Java 
- Front-end сервер — Nginx
Схема развертывания 
	 В соответствии с данной схемой сервер решения может быть запущен исключительно в рамках внутренней сети организации. Доступ к глобальному Интернету требуется только для сервиса синтеза речи.
  
Безопасность 
- Обеспечивается ролевая политика доступа в рамках бэк- и фронт-офиса, с настройкой по группам, в соответствии с требованиями заказчика 
- Передача данных между сервером и клиентами осуществляется по https протоколу с шифрованием 
- Стойки регистрации и электронные табло для доступа к серверу используют уникальные реквизиты — логин и пароль
Надежность 
	 Для обмена информацией используется WebSocket протокол — каждое подключение рабочего места или электронного табло создает WebSocket соединение. При изменениях на сервере вся информация в режиме реального времени передается на клиентские устройства.
	 WebSocket это не только передовая технология, но и возможность полностью отказаться от метода poll опросов, что значительно снижает нагрузку и позволяет расширять систему — подключать больше клиентских устройств на основе того же количества аппаратных ресурсов. Дополнительно WebSocket позволяет мгновенно реагировать на любые изменения, которые происходят на сервере.
Стойка регистрации 
  
- UI: Приложение для electron (electron v 8.3 и выше) 
- Фоновый процесс — Java 
- Готовый ISO образ для стоек регистрации на базе Linux-дистрибутива Fedora32
Электронное табло 
  
- Firefox последней версии 
- Готовый ISO образ для электронных табло на базе Linux-дистрибутива Fedora32
Особенность готовых ISO образов 
- Полностью обновлена OS 
- Установлены необходимые Runtime Environment (Java 11, electron 8.3) 
- Созданы и сконфигурированы пользователи, под которыми выполняются приложения 
- Произведена настройка sudoers (разрешен запуск некоторых утилит от имени root для полной автоматизации работы. Например, ПО само умеет менять часовой пояс) 
- Добавлены необходимые системные сервисы 
- Полностью заскриптован запуск приложений электронной очереди. При падениях реализован повторный перезапуск 
- Добавлен openvpn 
- Сконфигурирован sshd для усиления безопасности (запрет входа под root, специальный пользователь для удаленного входа только по ключу) 
- Установлен и настроен firewallD 
- Установлен и настроен fail2ban для надежной защиты sshd 
- Доступна замена обоев рабочего стола, логотипов и иконок
	 По требованиям клиентов могут вноситься любые изменения. Сборки могут быть подготовлены индивидуально под конкретного клиента.
	 Мы используем современные технологии, уделяем внимание надежности и безопасности решения. Наша Электронная очередь отвечает всем базовым требованиям к системам подобного класса, при необходимости компоненты могут быть адаптированы под заказчика.