Сценарии использования
Запуск
При запуске программы на компьютере ищется перечень электронных паспортов пользователей которые ранее авторизировались. Если ни одного не нашло то предлагается создать электронный паспорт, если нашло то предлагает авторизироваться (ввести пароль). Доступ к кнопке создания электронного паспорта должен быть в любом случае, чтоб была возможность всегда завести нового пользователя.
При первичном ("холодном") запуске нужно будет обратиться на публичную точку присоединения или ввести адрес известного и работающего узла. Публичная точка присоединения это обычный узел сети имеющий доменное имя. Таких узлов может быть много. Работающий же узел может быть любым. Скажем друга или свой собственный на другой машине.
При холодном подключении узел должен сообщить подключающему узлу ЭП владельца. И получить тикет "запрос возможно будет обработан через x часов тикет действителен y дней". Придя через x часов узел получит или продление тикета, или информацию для подключения с сертификатом подписанным подключающим узлом. В информации для подключения будет список IP через которые уже можно осуществить горячее подключение.
Не желающие ждать продолжительное время могут сделать запрос на личный узел который будет выполнять только этот один запрос. В случае если ЭП владельца подключаемого узла совпадает с ЭП владельца подключающего узла, то он просто подписывает сертификат и делится списком известных ему адресов.
Информация работы бэкэнда должна логироваться и/или выводится на фронтэнд
По ходу работы программа ищет "соседние" узлы и строит (редактирует) свой список узлов которые нашло, запрашивая адреса соседей у каждого найденного узла. В дальнейшем обмен технической и пользовательской информацией будет вестись через этих соседей, которые будут отранжированы по различным параметрам. Список соседей будет динамический и постоянно обновляемый.
Доп. информация:
Создание электронного паспорта
TODO: Обязательно обсудить вопрос связанный со смертью пользователя, т.е. каким образом "удалять" паспорт пользователя из системы (значит и из всех субъектов голосования где он участвовал). Например подписывать родственниками и друзьями
Авторизация
Основной интерфейс и система меню
Получение доверия
Создание субъекта голосования
Поиск субъектов голосования
Поиск пользователей
Вступление в субъекты голосования
Подписи доверия и недоверия
Распределение (делегирование) голосов в субъекте голосования
Голосования
Открытое
Тайное
Общение пользователей
Инициация голосования в субъекте голосования
Модерирование инициаторов голосования
Основной режим: проставление рейтингов инициаторам голосования.
Дополнительный режим: возможность совместного бана инициаторов "спама" вплоть до исключения из субъекта голосования.