Давайте немного отвлечемся от анализа "возможно реализовать/невозможно реализовать", а просто подумаем, какой интерфейс можно предложить обычному рядовому пользователю для делегирования своих голосов. Поговорим о "настроечной матрице делегирований".
Приведу цитаты из главы 14 книги
http://cdem.ru/?Page=15 (Делегирование и экспертные группы)
Цитата:
Представим себе, что весь круг вопросов разбивается условно на 50 тем, и у человека появляется настроечная матрица: по этим вопросам я делегирую свой голос тому, по иным — другому, по каким-то вообще не делегирую голос никому...
Цитата:
Может быть также градация по важности обсуждаемых вопросов. В этом случае определяется список наиважнейших вопросов, например, изменения в Конституции. В этом случае у себя в интерфейсе человек ставит галочку, что он доверяет депутату Иванову по всем вопросам, кроме важнейших. Тогда в 99,5% случаев голосует Иванов, но по самым значимым вопросам человек голосует сам...
Цитата:
Деление возможно еще и по уровням: государственная власть, региональная власть, местное самоуправление (муниципалитеты), территориальное общественное самоуправление (микрорайоны, кварталы, ТСЖ)...
Поясню, в чем проблема. Если тупо нарисовать пользователю трехмерную матрицу, в каждой ячейке которого нужно написать "делегирую Васе" или "делегирую Пете" или "голосую сам", то такая система работать не будет. Никому не хватит сил вручную заполнить, грубо говоря, 50 х 5 х 5 = 1250 ячеек. Не говоря уже о том, что у 70% людей просто съедет крыша при виде трехмерной матрицы.
Кроме того, при добавлении нового слоя в матрицу придется дозаполнить еще кучу ячеек. А если мы введем еще и четвертую градацию, скажем, по длительности принятия решения? В таком случае вообще получается комбинаторный взрыв.
----
Мой вариант: Каскадное делегированиеКаждый вопрос голосования помечается тегами, например, "образование, свердловская-область, важно, срочно".
Это должно как-то контролироваться, чтобы мошенники не могли обмануть делегирующих ботов при принятии решений: теги должны соответствовать действительности. У меня есть несколько мыслей по этому поводу, но не об этом сейчас.Делегирование определяется набором правил вида:
Код:
выражение1: действие1
выражение2: действие2
"Выражение" - это булевое выражение с переменными, соответствующими тегам. Поддерживаются скобки, операторы "не", "и" и "или", тождественно истинная константа "*".
"Действие" - это указание делегата и другие опции, например, уведомления по почте.
Пример:
Код:
очень-важно: уведомить по почте, стоп
важно: уведомить по почте
медицина и свердловская-область: Вася, стоп
медицина и не федерация: Петя, стоп
оборона или дипломатия: Вова
...
*: уведомить по почте с пометкой "неважно"
Далее, при рассмотрении вопроса голосования клиент идет по списку правил и, найдя соответствующее выражение, выполняет это действие. Приоритет определяется порядком. При нахождении действия "стоп" дальнейшие правила не рассматриваются.
Примеры:
Код:
медицина, свердловская-область, очень-важно - я получу уведомление по почте (правило 1)
медицина, свердловская-область, важно - за меня проголосует Вася (3), я получу уведомление по почте (2)
медицина, омская-область, средняя-важность - за меня проголосует Петя (4)
медицина, федерация, средняя-важность - я получу уведомление по почте с пометкой "неважно" (последнее)
оборона, федерация, средняя-важность - за меня проголосует Вова (5) и я получу уведомление по почте с пометкой "неважно" (последнее)
Веб-разработчики могут наблюдать сходство с языком CSS-правил, отсюда и название "Каскадное делегирование".Прошу всех делать замечания, предлагать поправки, предлагать другие варианты решения проблемы, высказываться в поддержку идеи.