COOPENOMICS  v1
Кооперативная Экономика
Обновление энергии участника

Процесс обновления энергии участника с учетом естественного снижения (decay) в системе геймификации "Уровень и Энергия".

Назначение процесса

Энергия участника естественным образом снижается со временем, стимулируя регулярную активность в кооперативе. Данный процесс обновляет текущее значение энергии участника на основе:

Процесс не добавляет энергию - прирост энергии происходит автоматически при внесении вкладов через другие операции контракта.

sequenceDiagram participant Кооператив participant Capital_Contract participant Contributor_Table Кооператив->>Capital_Contract: 1. Запрос обновления энергии Note over Capital_Contract: Проверка авторизации Capital_Contract->>Contributor_Table: 2. Получение данных участника Capital_Contract->>Capital_Contract: 3. Расчет decay Note right of Capital_Contract: days_passed = (current_time - last_update) / 86400
decay = days_passed × decay_rate_per_day Capital_Contract->>Contributor_Table: 4. Обновление энергии Note right of Contributor_Table: energy = max(0, energy - decay)
last_energy_update = current_time Capital_Contract-->>Кооператив: Энергия обновлена

Пошаговое описание процесса

Шаг 1: Авторизация кооператива

Действие: Проверка авторизации от имени кооператива

Только кооператив может обновлять энергию участников. Это централизованная операция обслуживания системы геймификации.

Шаг 2: Получение данных участника

Действие: Обновление энергии участника

Система загружает текущее состояние участника из таблицы contributors, включая:

Шаг 3: Расчет естественного снижения (decay)

Формула расчета:

  1. Рассчитывается количество прошедших дней:

    \[ days\_passed = \frac{current\_time - last\_energy\_update}{86400} \]

  2. Применяется decay на основе настроенной скорости:

    \[ decay = days\_passed \times energy\_decay\_rate\_per\_day \]

  3. Обновляется энергия:

    \[ new\_energy = max(0.0, current\_energy - decay) \]

Шаг 4: Сохранение обновленного состояния

Действие: Запись в таблицу Capital::contributor

Система сохраняет:

Параметры геймификации

Процесс использует следующие параметры из конфигурации:

Параметр По умолчанию Описание
energy_decay_rate_per_day 1.11% Скорость снижения энергии в день

Примеры настройки:

Взаимосвязь с другими процессами

Прирост энергии: Энергия увеличивается автоматически при:

В этих процессах после обновления рейтингов вызывается Capital::Contributors::update_gamification_from_segment, который рассчитывает прирост энергии от вкладов.

Переход на новый уровень: Когда энергия достигает 100%, участник автоматически переходит на следующий уровень и получает уведомление через действие lvlnotify.

Примечания по использованию

  1. Регулярность обновления: Рекомендуется вызывать это действие периодически (например, раз в день) для всех активных участников.
  2. Автоматизация: Может быть реализовано через планировщик задач на стороне контроллера.
  3. Оптимизация: Обновление не требуется, если участник недавно вносил вклады - в этом случае энергия уже актуальна.
Постусловие
  • Энергия участника обновлена с учетом прошедшего времени
  • Время последнего обновления установлено в текущее время
  • Энергия не может быть меньше 0