Процесс распределения голосующей суммы вкладчиком между другими вкладчиками проекта по методу Водянова и сохранения результатов голосования в системе.
Назначение процесса
Подача голоса по методу Водянова обеспечивает:
- Распределение голосующей суммы вкладчика между другими вкладчиками проекта
- Валидацию корректности распределения голосов
- Сохранение голосов в системе для последующего подсчета
- Учет голоса в общем количестве полученных голосов вкладчиками
sequenceDiagram
participant У as Вкладчик
participant ПК as Контракт Capital
participant П as Проект
У->>ПК: 1. Подача голоса по методу Водянова
Note over ПК: Проверка статуса проекта
ПК->>П: 2. Проверка статуса и срока голосования
alt Проект в статусе голосования
П->>ПК: 3. Подтверждение статуса
ПК->>ПК: 4. Валидация вкладчика голосования
ПК->>ПК: 5. Проверка корректности голосов
ПК->>ПК: 6. Сохранение голосов
ПК->>П: 7. Обновление счетчика голосов
else Проект не в статусе голосования
ПК->>У: Ошибка: проект не в статусе голосования
end
Пошаговое описание процесса
Шаг 1: Инициация подачи голоса
Действие: Подача голоса по методу Водянова
Вкладчик распределяет свою голосующую сумму между другими вкладчиками проекта в рамках голосования по методу Водянова.
- Постусловие
- Проверка авторизации кооператива
Шаг 2: Проверка статуса проекта и срока голосования
Действие: Валидация состояния проекта
Система проверяет, что:
- Проект находится в статусе голосования
- Срок голосования еще не истек
- Постусловие
- Подтвержден статус проекта как "голосование"
-
Подтверждено, что срок голосования не истек
Шаг 3: Валидация вкладчика голосования
Действие: Проверка прав вкладчика
Система проверяет, что:
- Вкладчик является вкладчиком голосования по проекту (автор или создатель)
- Вкладчик еще не голосовал по данному проекту
- Постусловие
- Подтверждено участие пользователя в голосовании
-
Подтверждено, что пользователь еще не голосовал
Шаг 4: Проверка корректности голосов
Действие: Валидация распределения голосов
Система проверяет корректность распределения голосов:
- Вкладчик не голосует за себя
- Все получатели голосов являются вкладчиками голосования
- Нет повторяющихся получателей голосов
- Все суммы голосов положительные
- Количество получателей равно общему количеству вкладчиков минус один (сам вкладчик)
- Общая сумма голосов равна активной голосующей сумме
- Сумма голосов плюс равная не голосующая сумма равна общей сумме на распределении
- Постусловие
- Проверка корректности всех параметров голосования
Шаг 5: Сохранение голосов
Действие: Фиксация голосов в системе
Система сохраняет каждый голос в таблице голосов, связывая голосующего с получателем голоса и суммой голоса.
- Постусловие
- Голоса сохранены в системе
Шаг 6: Обновление счетчика полученных голосов
Действие: Учет голоса в статистике
Система обновляет счетчик полученных голосов для проекта, увеличивая его на единицу для отслеживания завершения голосования.
- Постусловие
- Счетчик полученных голосов увеличен
Условия для подачи голоса
Обязательные требования:
- Проект должен быть в статусе голосования
- Срок голосования не должен быть истекшим
- Вкладчик должен быть вкладчиком голосования
- Вкладчик еще не голосовал по данному проекту
- Распределение голосов должно соответствовать правилам метода Водянова
Результат процесса
post"
1. Голоса вкладчика сохранены в системе
2. Счетчик полученных голосов обновлен
3. Вкладчик больше не может голосовать по данному проекту
@subsection autotoc_md297 Связанные процессы
- @ref public_capital_voting_start_process "Начало голосования" - предшествующий этап
- @ref public_capital_calculate_votes_process "Подсчет голосов" - следующий этап
- @ref public_capital_voting_completion_process "Завершение голосования" - завершающий этап