Описание произведения:
Информационная система администратора платформы для проведения электронного голосования на базе технологий распределенных реестров предоставляет функционал управления проводимыми голосованиями для администратора проведения голосований и состоит из следующих элементов:
1. Панель администратора системы
Реализация базового инструментария для взаимодействия пользователя - администратора (секретаря, наблюдателя, члена счетной комиссии) с системой для проведения электронных голосований в виде WEB-ресурса.
a) Механизм авторизации пользователей
Для доступа к панели необходима авторизация пользователя. Реализованная система не предполагает использование единого пути авторизации, предоставляя выбор конечному пользователю. Пользователь может быть авторизован, как локальный пользователь системы или же авторизован, как член организации, использующей в качестве авторизующей единицы систему, реализующую один из поддерживаемых протоколов авторизации. В настоящее время, система может быть настроена для авторизации пользователей, организации которых реализуют протокол Lightweight Directory Access Protocol. Использование технологии passport позволяет совмещать различные стратегии авторизации. (Пример кода: 1.a.Механизм авторизации пользователей)
b) Механизм разграничения доступа к панели администратора.
Реализованная система обеспечивает возможность взаимодействия с панелью администратора трёх типов пользователей: администратор(секретарь), наблюдатель, член счетной комиссии. При попытке авторизации, пользователь в явном виде выбирает в какой роли он хочет зайти в реализованную панель. В качестве наблюдателя или члена счетной комиссии может авторизоваться любой пользователь, если он является владельцем учетной записи, однако, для данного пользователя будут отображены исключительно доступные для него повестки. В качестве администратора может авторизоваться исключительно заранее добавленный в список администраторов пользователь. (Пример кода: 1.b.Механизм разграничения доступа)
c) Механизм групп пользователей для голосования
В целях снижения нагрузки на систему реализован функционал управления группами пользователей, позволяющий их повторное использование в качестве одной из сущностей пользователей, добавленных в голосование. Поиск пользователей, по аналогии с 1.a, может быть произведен локально или же в LDAP. (Пример кода: 1.c.Механизм групп пользователей для голосования)
d) Конструктор создания вопросов, выносимых на голосование
Реализованный инструментарий позволяет создавать гибкие повестки для голосования, характеризующиеся следующими основными характеристиками:
- Название повестки
- Дата и время начала регистрации
- Дата и время окончания регистрации
- Дата и время начала голосования
- Дата и время окончания голосования
- Тип голосования
- Условие принятия решения
- База подсчета голосов
- Возможность отмены регистрации
- Возможность изменения волеизъявления до заданной временной отметки
- Список допущенных к голосованию
- Список наблюдателей
- Список членов счетной комиссии
- Наименование вопроса
- Варианты ответа на заданный вопрос
- Ограничения, накладываемые на бюллетень
- Вспомогательные материалы трёх типов(к повестке в целом, к вопросу, к варианту ответа)
(Пример кода: 1.d.Конструктор создания вопросов, выносимых на голосование)
e) Модуль обновления статистики в режиме реального времени
Реализованная система позволяет в режиме реального времени получать актуальную информацию о текущих событиях и их классификации по заранее известным статусам события, о ходже регистрации и голосования. Модуль является реализацией концепций Publish Subscribe и Long Polling. (Пример кода: 1.e.Модуль обновления статистики в режиме реального времени)
f) Модуль визуализации систастики
На основе библиотеки chart-js реализован функционал для визуализации основной статистики голосований, а также отображения результатов голосования и информации о явке. (Пример кода: 1.f.Модуль визуализации статистики)
g) Модуль экспорта протокола голосования
Для снижения нагрузки на секретаря, в системе реализован функционал, позволяющий автоматизировать формирование протокола подсчета голосов (И его подписания в случае наличия счетной комиссии). Доступен функционал экспорта в формат excel (node-excel-export, express-fileupload) и docx (docxtemplater). Использование docx шаблона позволяет сгенерировать протокол подсчета голосов в соответствии с принятым в организации форматом. (Пример кода: 1.g.Модуль экспорта протокола голосования)
h) Модуль конфигурации панели администратора
Модуль позволяет настроить систему в соответствии с пожеланиями заказчика, снизив визуальную нагрузку на интерфейс пользователя. Отдельные модули системы могут быть отключены, в случае отсутствия потребностей конкретной организации. В частности, функционал возможности отмены регистрации, возможности изменения голоса, перекрытия временных интервалов регистрации и голосования, счетной комиссии может быть полезен для одних организаций, но не востребован другими. Решение базируется на использовании конфигураций и использовании препроцессора pug. (Пример кода: 1.h.Модуль конфигурации панели администратора)
2. Взаимодействие с клиентским приложением пользователя
a) Модуль регистрации пользователя - участника голосования
Модуль обеспечивает возможность участия пользователя в качестве участника сети распределенного реестра. Модуль способен отправить первичный запрос на регистрацию пользователя в соответствующий Certification authority действующей сети. (Пример кода: 2.a.Модуль регистрации пользователя - участника голосования)
b) Модуль авторизации пользователя - участника голосования
Реализованный модуль позволяет авторизовать пользователя, как участника блокчейн - сети, а также создает пользовательскую сессию для взаимодействия с системой. Для хранения сессий, продолжительность которых составляет 60 минут, используется key-value база данных - Redis. (Пример кода: 2.b.Модуль авторизации пользователя - участника голосования)
c) Базовый API пользователя
Модуль отвечает за основное взаимодействие пользователя с системой голосования. Функционал реализует распространенный шаблон построения приложений - MVC (Model-View-Controller). Формат предоставления ответов на запросы пользователя - json. (Пример кода: 2.с.Базовый API пользователя)
Ключевые слова:
блокчейн, голосование, e-voting, распределенный реестр, distributed ledger, blockchain, администратор