before delete anchors
This commit is contained in:
@@ -8,11 +8,3 @@ alwaysApply: true
|
||||
- core/ - слой корневой бизнес-логики, которая объединяет несколько сущностей. Если бизнес-функция сущности требует для своего исполнения нескольких операций с сущностями или она явно относится к доменному уровню приложения за счет своего применения, то такая функция должна быть вынесена в ядро.
|
||||
|
||||
Мы допускаем последовательное-повторное обновление сущностей по ходу исполнения действия контракта, если это необходимо в пользу ясности. Длинна типа name не должна превышать 12 символов и не должна содержать специальных знаков.
|
||||
|
||||
При документировании контрактов используй следующие группы для doxygen:
|
||||
\ingroup public_contracts - для контрактов
|
||||
\ingroup public_actions - для действий
|
||||
\ingroup public_consts - для действий
|
||||
\ingroup public_tables - для действий
|
||||
И используй следующий тег для указания требуемой аудентификации:
|
||||
* @note Авторизация требуется от аккаунта: @p coopname
|
||||
@@ -1616,7 +1616,7 @@ FORMULA_MACROFILE =
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
USE_MATHJAX = NO
|
||||
USE_MATHJAX = YES
|
||||
|
||||
# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
|
||||
# Note that the different versions of MathJax have different requirements with
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/**
|
||||
* @brief Конвертирует сегмент участника в различные типы кошельков
|
||||
* @anchor capital_convertsegm
|
||||
*
|
||||
* @brief Конвертирует сегмент участника в различные типы кошельков
|
||||
* Конвертирует сегмент участника в кошелек, капитал и кошелек проекта:
|
||||
* - Проверяет статус сегмента (должен быть contributed)
|
||||
* - Валидирует актуальность сегмента
|
||||
@@ -17,7 +19,6 @@
|
||||
* @param convert_statement Заявление о конвертации
|
||||
* @ingroup public_actions
|
||||
* @ingroup public_capital_actions
|
||||
* @anchor capital_convertsegm
|
||||
* @note Авторизация требуется от аккаунта: @p coopname
|
||||
*/
|
||||
void capital::convertsegm(eosio::name coopname, eosio::name username,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* @ingroup public_capital_processes
|
||||
*
|
||||
* Процесс распределения доступных средств участника между тремя направлениями:
|
||||
* в Цифровой Кошелёк, в программу капитализации "Благорост" и в кошелёк проекта
|
||||
* в Цифровой Кошелёк, в программу "Капитализация" и в кошелёк проекта
|
||||
* для получения членских взносов.
|
||||
*
|
||||
* ## Назначение процесса
|
||||
|
||||
@@ -19,6 +19,9 @@ void capital::openproject(name coopname, checksum256 project_hash) {
|
||||
|
||||
// Проверяем, что проект еще не открыт
|
||||
eosio::check(project.is_opened == false, "Проект уже открыт");
|
||||
|
||||
// Проверяем, что проект запланирован
|
||||
eosio::check(project.is_planed == true, "Проект должен быть запланирован перед открытием для инвестиций");
|
||||
|
||||
// Открываем проект
|
||||
Capital::Projects::open_project(coopname, project_hash);
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
* @defgroup public_capital_program_investment_process Процесс программных инвестиций
|
||||
* @ingroup public_capital_processes
|
||||
*
|
||||
* Процесс привлечения глобальных инвестиций в программу капитализации "Благорост"
|
||||
* Процесс привлечения глобальных инвестиций в программу "Капитализация"
|
||||
* с последующей аллокацией средств по конкретным проектам согласно решениям
|
||||
* управляющих органов кооператива.
|
||||
*
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
* @ingroup public_capital_processes
|
||||
*
|
||||
* Процесс принятия имущественных (не денежных и не интеллектуальных) взносов
|
||||
* в программу капитализации "Благорост". Увеличивает паевой фонд кооператива
|
||||
* в программу "Капитализация". Увеличивает паевой фонд кооператива
|
||||
* и обеспечивает участие в долгосрочной капитализации.
|
||||
*
|
||||
* ## Назначение процесса
|
||||
*
|
||||
* Имущественные взносы в программу обеспечивают:
|
||||
* - Увеличение паевого фонда кооператива материальными активами
|
||||
* - Долгосрочное участие в программе капитализации "Благорост"
|
||||
* - Долгосрочное участие в программе "Капитализация"
|
||||
* - Получение доходов от членских взносов через CRPS
|
||||
* - Укрепление материальной базы кооператива
|
||||
*
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* @brief Завершение голосования для конкретного участника по методу Водянова
|
||||
* Рассчитывает полные итоговые суммы участника включая:
|
||||
* - Результаты голосования по Водянову: (сумма голосов + общая сумма распределения) / количество голосующих
|
||||
* - Результаты голосования по Водянову: (сумма голосов + средняя сумма распределения) / количество голосующих
|
||||
* - Фиксированные распределения: 61.8% авторских премий равно между авторами, 61.8% создательских премий прямо создателям
|
||||
* Обновляет сегмент участника с итоговыми суммами раздельно по пулам
|
||||
* @param coopname Наименование кооператива
|
||||
|
||||
+171
@@ -0,0 +1,171 @@
|
||||
/**
|
||||
* @page withdraw_from_program_process Возврат средств из программы "Благорост"
|
||||
* @defgroup public_capital_withdraw_from_program_process Процесс возврата средств из программы "Благорост"
|
||||
* @ingroup public_capital_processes
|
||||
*
|
||||
* Процесс возврата накопленных доходов участникам из программы капитализации "Благорост".
|
||||
* Обеспечивает ликвидность участников и возможность использования накопленных доходов от программы.
|
||||
*
|
||||
* ## Назначение процесса
|
||||
*
|
||||
* Процесс возврата средств из программы "Благорост" обеспечивает:
|
||||
* - Ликвидность участников кооператива
|
||||
* - Возможность использования накопленных доходов от программы капитализации
|
||||
* - Справедливое распределение доходов от инвестиций
|
||||
* - Стимулирование долгосрочного участия в программе
|
||||
*
|
||||
* ## Диаграмма процесса
|
||||
*
|
||||
* \htmlonly
|
||||
* <div class="mermaid">
|
||||
* sequenceDiagram
|
||||
* participant P as Участник
|
||||
* participant C as Capital Contract
|
||||
* participant S as Soviet Contract
|
||||
* participant W as Wallet Contract
|
||||
*
|
||||
* P->>C: 1. createwthd3(заявление на возврат из программы)
|
||||
* Note over C: Списание из capital_available
|
||||
* C->>S: 2. soviet::create_approval
|
||||
*
|
||||
* S->>C: 3. approvewthd3(одобрение)
|
||||
* C->>S: 4. soviet::create_agenda
|
||||
*
|
||||
* alt Авторизация
|
||||
* S->>C: 5. capauthwthd3()
|
||||
* C->>W: 6. _capital_program → _wallet_program
|
||||
* else Отклонение
|
||||
* S->>C: 5. capdeclwthd3()
|
||||
* Note over C: Возврат суммы в capital_available
|
||||
* end
|
||||
* </div>
|
||||
* \endhtmlonly
|
||||
*
|
||||
* ## Создание заявления на возврат из программы
|
||||
* @ref capital::createwthd3 "Создание заявления на возврат из программы"
|
||||
*
|
||||
* Участник подаёт заявление на возврат накопленных доходов из программы капитализации:
|
||||
*
|
||||
* **Входящий документ:** Заявление на возврат из программы "Благорост"
|
||||
*
|
||||
* **Предварительные условия:**
|
||||
* - Участник имеет положительный capital_available
|
||||
* - Запрашиваемая сумма ≤ capital_available
|
||||
* - Участник подписал соглашение об условиях ЦПП
|
||||
*
|
||||
* **Механика возврата:**
|
||||
* - Выполняется refresh_contributor_program_rewards
|
||||
* - Проверяется достаточность capital_available
|
||||
* - process_contributor_program_withdrawal уменьшает capital_available
|
||||
* - Увеличивается state.program_membership_distributed
|
||||
*
|
||||
* **Результат:** Заявление создано, средства зарезервированы для возврата
|
||||
*
|
||||
* ## Авторизация возврата из программы
|
||||
* @ref capital::capauthwthd3 "Авторизация возврата из программы"
|
||||
*
|
||||
* После одобрения председателем и авторизации советом выполняется возврат:
|
||||
*
|
||||
* **Проводки по кошелькам:**
|
||||
* @post Wallet::sub_blocked_funds(_capital_program, amount) - списание из программы "Благорост"
|
||||
* @post Wallet::add_available_funds(_wallet_program, amount) - зачисление в Цифровой Кошелёк
|
||||
*
|
||||
* **Результат:** Средства переведены участнику в Цифровой Кошелёк
|
||||
*
|
||||
* ## Отклонение возврата из программы
|
||||
* @ref capital::capdeclwthd3 "Отклонение возврата из программы"
|
||||
*
|
||||
* При отклонении заявления:
|
||||
* - Сумма возвращается в capital_available участника
|
||||
* - Откатываются изменения в state.program_membership_*
|
||||
* - Заявление удаляется из системы
|
||||
*
|
||||
* ## Стратегии использования возвратов
|
||||
*
|
||||
* ### Полный возврат
|
||||
* - Участник выводит все накопленные доходы из программы
|
||||
* - Максимальная ликвидность
|
||||
* - Потеря будущих доходов от оставшихся долей
|
||||
*
|
||||
* ### Частичный возврат
|
||||
* - Вывод только необходимой суммы
|
||||
* - Сохранение большей части долей
|
||||
* - Баланс между ликвидностью и доходностью
|
||||
*
|
||||
* ### Реинвестирование
|
||||
* - Использование возвращённых средств для новых инвестиций
|
||||
* - Диверсификация портфеля
|
||||
* - Увеличение общих долей в программе
|
||||
*
|
||||
* ## Налоговые аспекты
|
||||
*
|
||||
* ### Характер доходов
|
||||
* - Возвраты могут классифицироваться как доходы
|
||||
* - Требуется соответствующее документооборот
|
||||
* - Возможны налоговые обязательства участника
|
||||
*
|
||||
* ### Документооборот
|
||||
* - Справки о полученных доходах
|
||||
* - Подтверждения для налоговых органов
|
||||
* - Учёт в декларациях участников
|
||||
*
|
||||
* ## Ограничения и контроль
|
||||
*
|
||||
* ### Лимиты на возврат
|
||||
* - Минимальные суммы для возврата
|
||||
* - Комиссии за обработку заявлений
|
||||
* - Временные ограничения на частоту возвратов
|
||||
*
|
||||
* ### Контроль ликвидности
|
||||
* - Мониторинг общих объёмов возвратов
|
||||
* - Обеспечение достаточности средств в программах
|
||||
* - Планирование денежных потоков
|
||||
*
|
||||
* ### Противодействие злоупотреблениям
|
||||
* - Проверка обоснованности заявлений
|
||||
* - Анализ паттернов поведения участников
|
||||
* - Предотвращение вывода средств в ущерб программе
|
||||
*
|
||||
* ## Влияние на CRPS
|
||||
*
|
||||
* ### Сохранение долей
|
||||
* Возврат средств не влияет на доли участника:
|
||||
* - Доли в программе "Благорост" остаются
|
||||
* - Будущие начисления продолжаются
|
||||
*
|
||||
* ### Обновление слепков
|
||||
* - last_program_membership_reward_per_share актуализируется
|
||||
* - Корректный расчёт будущих начислений
|
||||
*
|
||||
* ## Мониторинг и аналитика
|
||||
*
|
||||
* ### Статистика возвратов
|
||||
* - Общие объёмы возвратов по периодам
|
||||
* - Средние суммы возвратов на участника
|
||||
* - Соотношение возвратов к начислениям
|
||||
*
|
||||
* ### Анализ поведения участников
|
||||
* - Предпочтения по типам возвратов
|
||||
* - Частота обращений за возвратами
|
||||
* - Влияние на долгосрочное участие
|
||||
*
|
||||
* ### Планирование ликвидности
|
||||
* - Прогнозирование потребности в возвратах
|
||||
* - Оптимизация структуры активов программ
|
||||
* - Обеспечение стабильности системы
|
||||
*
|
||||
* ## Результат процесса
|
||||
*
|
||||
* Система возврата средств из программы "Благорост" обеспечивает:
|
||||
* 1. Ликвидность участников кооператива
|
||||
* 2. Справедливое распределение накопленных доходов
|
||||
* 3. Стимулирование долгосрочного участия
|
||||
* 4. Контролируемое управление денежными потоками
|
||||
* 5. Прозрачность и подотчётность операций
|
||||
*
|
||||
* ## Связанные процессы
|
||||
*
|
||||
* - @ref public_capital_membership_process "Распределение членских взносов" - создаёт основу для возвратов
|
||||
* - @ref public_capital_conversion_process "Конвертация взносов" - определяет доли для возвратов
|
||||
* - @ref public_capital_program_investment_process "Программные инвестиции" - формируют капитал программы
|
||||
*/
|
||||
+69
-143
@@ -1,30 +1,21 @@
|
||||
/**
|
||||
* @page withdrawal_process Возврат средств участникам
|
||||
* @defgroup public_capital_withdrawal_process Процесс возврата средств участникам
|
||||
* @page withdraw_from_project_process Возврат средств из кошелька проекта
|
||||
* @defgroup public_capital_withdraw_from_project_process Процесс возврата средств из кошелька проекта
|
||||
* @ingroup public_capital_processes
|
||||
*
|
||||
* Общий процесс возврата накопленных средств участникам из различных источников:
|
||||
* кошельков проектов и программы капитализации "Благорост". Обеспечивает
|
||||
* ликвидность участников и возможность использования накопленных доходов.
|
||||
*
|
||||
*
|
||||
* Процесс возврата накопленных членских взносов участникам из кошельков конкретных проектов.
|
||||
* Обеспечивает ликвидность участников и возможность использования накопленных доходов от проектов.
|
||||
*
|
||||
* ## Назначение процесса
|
||||
*
|
||||
* Процесс возврата средств обеспечивает:
|
||||
*
|
||||
* Процесс возврата средств из кошелька проекта обеспечивает:
|
||||
* - Ликвидность участников кооператива
|
||||
* - Возможность использования накопленных доходов
|
||||
* - Возможность использования накопленных доходов от проектов
|
||||
* - Справедливое распределение членских взносов
|
||||
* - Стимулирование долгосрочного участия в программах
|
||||
*
|
||||
* ## Типы возврата средств
|
||||
*
|
||||
* ### 1. Возврат из кошелька проекта
|
||||
* Возврат накопленных членских взносов от конкретного проекта.
|
||||
*
|
||||
* ### 2. Возврат из программы "Благорост"
|
||||
* Возврат накопленных доходов от участия в программе капитализации.
|
||||
*
|
||||
* ## Диаграмма общего процесса
|
||||
*
|
||||
* - Стимулирование долгосрочного участия в проектах
|
||||
*
|
||||
* ## Диаграмма процесса
|
||||
*
|
||||
* \htmlonly
|
||||
* <div class="mermaid">
|
||||
* sequenceDiagram
|
||||
@@ -32,221 +23,156 @@
|
||||
* participant C as Capital Contract
|
||||
* participant S as Soviet Contract
|
||||
* participant W as Wallet Contract
|
||||
*
|
||||
* alt Возврат из проекта
|
||||
* P->>C: 1a. createwthd2(заявление на возврат из проекта)
|
||||
* Note over C: Списание из project.membership.available
|
||||
* C->>S: 2a. soviet::create_approval
|
||||
*
|
||||
* S->>C: 3a. approvewthd2(одобрение)
|
||||
* C->>S: 4a. soviet::create_agenda
|
||||
*
|
||||
* alt Авторизация
|
||||
* S->>C: 5a. capauthwthd2()
|
||||
* C->>W: 6a. _capital_program → _wallet_program
|
||||
* Note over C: Фиксация выплаты в проекте
|
||||
* else Отклонение
|
||||
* S->>C: 5a. capdeclwthd2()
|
||||
* Note over C: Возврат суммы в доступные
|
||||
* end
|
||||
* end
|
||||
*
|
||||
* alt Возврат из программы
|
||||
* P->>C: 1b. createwthd3(заявление на возврат из программы)
|
||||
* Note over C: Списание из capital_available
|
||||
* C->>S: 2b. soviet::create_approval
|
||||
*
|
||||
* S->>C: 3b. approvewthd3(одобрение)
|
||||
* C->>S: 4b. soviet::create_agenda
|
||||
*
|
||||
* alt Авторизация
|
||||
* S->>C: 5b. capauthwthd3()
|
||||
* C->>W: 6b. _capital_program → _wallet_program
|
||||
* else Отклонение
|
||||
* S->>C: 5b. capdeclwthd3()
|
||||
* Note over C: Возврат суммы в capital_available
|
||||
* end
|
||||
*
|
||||
* P->>C: 1. createwthd2(заявление на возврат из проекта)
|
||||
* Note over C: Списание из project.membership.available
|
||||
* C->>S: 2. soviet::create_approval
|
||||
*
|
||||
* S->>C: 3. approvewthd2(одобрение)
|
||||
* C->>S: 4. soviet::create_agenda
|
||||
*
|
||||
* alt Авторизация
|
||||
* S->>C: 5. capauthwthd2()
|
||||
* C->>W: 6. _capital_program → _wallet_program
|
||||
* Note over C: Фиксация выплаты в проекте
|
||||
* else Отклонение
|
||||
* S->>C: 5. capdeclwthd2()
|
||||
* Note over C: Возврат суммы в доступные
|
||||
* end
|
||||
* </div>
|
||||
* \endhtmlonly
|
||||
*
|
||||
* ## Возврат из кошелька проекта
|
||||
*
|
||||
* ### Создание заявления на возврат из проекта
|
||||
*
|
||||
* ## Создание заявления на возврат из проекта
|
||||
* @ref capital::createwthd2 "Создание заявления на возврат из проекта"
|
||||
*
|
||||
*
|
||||
* Участник подаёт заявление на возврат накопленных средств из кошелька конкретного проекта:
|
||||
*
|
||||
*
|
||||
* **Входящий документ:** Заявление на возврат членских начислений из проекта
|
||||
*
|
||||
*
|
||||
* **Предварительные условия:**
|
||||
* - Участник имеет кошелёк проекта с положительными начислениями
|
||||
* - membership_available > 0 в кошельке проекта
|
||||
* - Запрашиваемая сумма ≤ доступной сумме
|
||||
*
|
||||
*
|
||||
* **Механика возврата:**
|
||||
* - Выполняется refresh_project_wallet_membership_rewards
|
||||
* - Проверяется достаточность project.membership.available
|
||||
* - Сумма списывается из доступных средств проекта
|
||||
*
|
||||
*
|
||||
* **Результат:** Заявление создано, средства зарезервированы для возврата
|
||||
*
|
||||
* ### Авторизация возврата из проекта
|
||||
*
|
||||
* ## Авторизация возврата из проекта
|
||||
* @ref capital::capauthwthd2 "Авторизация возврата из проекта"
|
||||
*
|
||||
*
|
||||
* После одобрения председателем и авторизации советом выполняется возврат:
|
||||
*
|
||||
*
|
||||
* **Проводки по кошелькам:**
|
||||
* @post Wallet::sub_blocked_funds(_capital_program, amount) - списание из программы "Благорост"
|
||||
* @post Wallet::add_available_funds(_wallet_program, amount) - зачисление в Цифровой Кошелёк
|
||||
*
|
||||
*
|
||||
* **Обновления проекта:**
|
||||
* @post Projects::distribute_membership_funds(+amount) - фиксация как выплаченных
|
||||
* @post project.membership.distributed += amount
|
||||
*
|
||||
*
|
||||
* **Обновления кошелька проекта:**
|
||||
* - Списание суммы из membership_available участника
|
||||
*
|
||||
*
|
||||
* **Результат:** Средства переведены участнику в Цифровой Кошелёк
|
||||
*
|
||||
* ### Отклонение возврата из проекта
|
||||
*
|
||||
* ## Отклонение возврата из проекта
|
||||
* @ref capital::capdeclwthd2 "Отклонение возврата из проекта"
|
||||
*
|
||||
*
|
||||
* При отклонении заявления:
|
||||
* - Сумма возвращается в project.membership.available
|
||||
* - Заявление удаляется из системы
|
||||
* - Участник может подать новое заявление
|
||||
*
|
||||
* ## Возврат из программы "Благорост"
|
||||
*
|
||||
* ### Создание заявления на возврат из программы
|
||||
* @ref capital::createwthd3 "Создание заявления на возврат из программы"
|
||||
*
|
||||
* Участник подаёт заявление на возврат накопленных доходов из программы капитализации:
|
||||
*
|
||||
* **Входящий документ:** Заявление на возврат из программы "Благорост"
|
||||
*
|
||||
* **Предварительные условия:**
|
||||
* - Участник имеет положительный capital_available
|
||||
* - Запрашиваемая сумма ≤ capital_available
|
||||
* - Участник подписал соглашение об условиях ЦПП
|
||||
*
|
||||
* **Механика возврата:**
|
||||
* - Выполняется refresh_contributor_program_rewards
|
||||
* - Проверяется достаточность capital_available
|
||||
* - process_contributor_program_withdrawal уменьшает capital_available
|
||||
* - Увеличивается state.program_membership_distributed
|
||||
*
|
||||
* **Результат:** Заявление создано, средства зарезервированы для возврата
|
||||
*
|
||||
* ### Авторизация возврата из программы
|
||||
* @ref capital::capauthwthd3 "Авторизация возврата из программы"
|
||||
*
|
||||
* После одобрения председателем и авторизации советом выполняется возврат:
|
||||
*
|
||||
* **Проводки по кошелькам:**
|
||||
* @post Wallet::sub_blocked_funds(_capital_program, amount) - списание из программы "Благорост"
|
||||
* @post Wallet::add_available_funds(_wallet_program, amount) - зачисление в Цифровой Кошелёк
|
||||
*
|
||||
* **Результат:** Средства переведены участнику в Цифровой Кошелёк
|
||||
*
|
||||
* ### Отклонение возврата из программы
|
||||
* @ref capital::capdeclwthd3 "Отклонение возврата из программы"
|
||||
*
|
||||
* При отклонении заявления:
|
||||
* - Сумма возвращается в capital_available участника
|
||||
* - Откатываются изменения в state.program_membership_*
|
||||
* - Заявление удаляется из системы
|
||||
*
|
||||
*
|
||||
* ## Стратегии использования возвратов
|
||||
*
|
||||
*
|
||||
* ### Полный возврат
|
||||
* - Участник выводит все накопленные средства
|
||||
* - Участник выводит все накопленные средства из проекта
|
||||
* - Максимальная ликвидность
|
||||
* - Потеря будущих доходов от оставшихся долей
|
||||
*
|
||||
*
|
||||
* ### Частичный возврат
|
||||
* - Вывод только необходимой суммы
|
||||
* - Сохранение большей части долей
|
||||
* - Баланс между ликвидностью и доходностью
|
||||
*
|
||||
*
|
||||
* ### Реинвестирование
|
||||
* - Использование возвращённых средств для новых инвестиций
|
||||
* - Диверсификация портфеля
|
||||
* - Увеличение общих долей в программе
|
||||
*
|
||||
*
|
||||
* ## Налоговые аспекты
|
||||
*
|
||||
*
|
||||
* ### Характер доходов
|
||||
* - Возвраты могут классифицироваться как доходы
|
||||
* - Требуется соответствующее документооборот
|
||||
* - Возможны налоговые обязательства участника
|
||||
*
|
||||
*
|
||||
* ### Документооборот
|
||||
* - Справки о полученных доходах
|
||||
* - Подтверждения для налоговых органов
|
||||
* - Учёт в декларациях участников
|
||||
*
|
||||
*
|
||||
* ## Ограничения и контроль
|
||||
*
|
||||
*
|
||||
* ### Лимиты на возврат
|
||||
* - Минимальные суммы для возврата
|
||||
* - Комиссии за обработку заявлений
|
||||
* - Временные ограничения на частоту возвратов
|
||||
*
|
||||
*
|
||||
* ### Контроль ликвидности
|
||||
* - Мониторинг общих объёмов возвратов
|
||||
* - Обеспечение достаточности средств в программах
|
||||
* - Планирование денежных потоков
|
||||
*
|
||||
*
|
||||
* ### Противодействие злоупотреблениям
|
||||
* - Проверка обоснованности заявлений
|
||||
* - Анализ паттернов поведения участников
|
||||
* - Предотвращение вывода средств в ущерб программе
|
||||
*
|
||||
*
|
||||
* ## Влияние на CRPS
|
||||
*
|
||||
*
|
||||
* ### Сохранение долей
|
||||
* Возврат средств не влияет на доли участника:
|
||||
* - Доли в проектах сохраняются
|
||||
* - Доли в программе "Благорост" остаются
|
||||
* - Будущие начисления продолжаются
|
||||
*
|
||||
*
|
||||
* ### Обновление слепков
|
||||
* - last_membership_reward_per_share обновляется
|
||||
* - last_program_membership_reward_per_share актуализируется
|
||||
* - Корректный расчёт будущих начислений
|
||||
*
|
||||
*
|
||||
* ## Мониторинг и аналитика
|
||||
*
|
||||
*
|
||||
* ### Статистика возвратов
|
||||
* - Общие объёмы возвратов по периодам
|
||||
* - Средние суммы возвратов на участника
|
||||
* - Соотношение возвратов к начислениям
|
||||
*
|
||||
*
|
||||
* ### Анализ поведения участников
|
||||
* - Предпочтения по типам возвратов
|
||||
* - Частота обращений за возвратами
|
||||
* - Влияние на долгосрочное участие
|
||||
*
|
||||
*
|
||||
* ### Планирование ликвидности
|
||||
* - Прогнозирование потребности в возвратах
|
||||
* - Оптимизация структуры активов программ
|
||||
* - Обеспечение стабильности системы
|
||||
*
|
||||
*
|
||||
* ## Результат процесса
|
||||
*
|
||||
* Система возврата средств обеспечивает:
|
||||
*
|
||||
* Система возврата средств из проекта обеспечивает:
|
||||
* 1. Ликвидность участников кооператива
|
||||
* 2. Справедливое распределение накопленных доходов
|
||||
* 3. Стимулирование долгосрочного участия
|
||||
* 4. Контролируемое управление денежными потоками
|
||||
* 5. Прозрачность и подотчётность операций
|
||||
*
|
||||
*
|
||||
* ## Связанные процессы
|
||||
*
|
||||
*
|
||||
* - @ref public_capital_membership_process "Распределение членских взносов" - создаёт основу для возвратов
|
||||
* - @ref public_capital_conversion_process "Конвертация взносов" - определяет доли для возвратов
|
||||
* - @ref public_capital_lifecycle_process "Жизненный цикл проекта" - влияет на доступность средств
|
||||
* - @ref public_capital_program_investment_process "Программные инвестиции" - формируют капитал программы
|
||||
*/
|
||||
@@ -19,20 +19,202 @@
|
||||
* - Капитализацию результатов через цифровую целевую потребительскую программу "Капитализация"
|
||||
* - Управление членскими взносами и их распределением среди вкладчиков
|
||||
*
|
||||
* ## Основание
|
||||
* В основе математической модели контракта лежит принцип распределения справедливой выгоды между вкладчиками согласно Идеократии: https://blog.coopenomics.world/2025/04/08/идеократия/
|
||||
*
|
||||
* ## Роли участников
|
||||
*
|
||||
* - **Вкладчик** - пайщик, принимающий участие в генерации результата интеллектуальной деятельности по договору УХД и проектным приложениям к нему
|
||||
* - **Автор** - вкладчик авторских прав на результат интеллектуальной деятельности
|
||||
* - **Создатель** - вкладчик, вносящий время на создание результата интеллектуальной деятельности
|
||||
* - **Координатор** - вкладчик инвестиционного плана проекта
|
||||
* - **Инвестор** - вкладчик денежных средств в проект
|
||||
* - **Пропертор** - вкладчик имущественных (не денежных и не временных) взносов в проект
|
||||
* - **Инвестор** - вкладчик денежных средств в программу или проект
|
||||
* - **Собственник** - вкладчик имущества (не денежного) в программу или проект
|
||||
* - **Мастер** - вкладчик, ответственный за управление проектом и его результат
|
||||
*
|
||||
* ## Основной процесс
|
||||
* ## Обоснование
|
||||
*
|
||||
* ### Концепция общественно-полезного времени
|
||||
*
|
||||
* В основе математической модели контракта лежит принцип распределения справедливой выгоды между вкладчиками
|
||||
* согласно Идеократии и концепции "общественно-полезного времени", разработанной в рамках теорий Падиска-Кузнецова
|
||||
* и связанной с проектом Общегосударственной автоматизированной системы учета и обработки информации (ОГАС) академика Глушкова.
|
||||
*
|
||||
* **Общественно-полезное время** - это способ измерения экономической эффективности, при котором стоимость любого
|
||||
* продукта или услуги оценивается в совокупных затратах рабочего времени всего общества. Эта величина всегда
|
||||
* оказывается больше прямых затрат на изготовление, так как аккумулирует в себе труд тысяч людей по всей цепочке
|
||||
* создания ценности - от добычи сырья и производства оборудования до логистики и управления.
|
||||
*
|
||||
* ### Два основных процесса модели
|
||||
*
|
||||
* Математическая модель контракта разделена на два взаимосвязанных процесса: **Генерацию** результата интеллектуальной деятельности и **Капитализацию** объекта интеллектуальной собственности.
|
||||
*
|
||||
* #### 1. Процесс Генерации
|
||||
*
|
||||
* **Цель**: Преобразование затраченного времени создателей в объективную стоимость результата интеллектуальной деятельности.
|
||||
*
|
||||
* **Основной принцип**: Каждый коммит создателя содержит не только видимое индивидуальное время, но и "невидимое"
|
||||
* общественное время - совокупность трудозатрат всего общества, вложенных в образование, инфраструктуру,
|
||||
* научные исследования и другие факторы, сделавшие возможным этот конкретный вклад.
|
||||
*
|
||||
* **Математические формулы генерации**:
|
||||
*
|
||||
* Для каждого коммита создателя:
|
||||
* \f[
|
||||
* Base_{creator} = Rate_{hour} \times Hours_{creator}
|
||||
* \f]
|
||||
*
|
||||
* Себестоимость авторов (по принципу золотого сечения):
|
||||
* \f[
|
||||
* Base_{author} = Base_{creator} \times 0.618
|
||||
* \f]
|
||||
*
|
||||
* Премии создателей:
|
||||
* \f[
|
||||
* Bonus_{creator} = Base_{creator} \times 1.0
|
||||
* \f]
|
||||
*
|
||||
* Премии авторов:
|
||||
* \f[
|
||||
* Bonus_{author} = Base_{author} \times 1.0
|
||||
* \f]
|
||||
*
|
||||
* Общая сумма генерации:
|
||||
* \f[
|
||||
* Total_{generation} = Base_{creator} + Base_{author} + Bonus_{creator} + Bonus_{author}
|
||||
* \f]
|
||||
*
|
||||
* **Экономическое обоснование генерации**:
|
||||
* - **Время как базовая единица стоимости**: Время - наиболее объективный и универсальный измеритель вклада,
|
||||
* не подверженный инфляции и манипуляциям.
|
||||
* - **Золотое сечение (0.618)**: Обеспечивает гармоничное распределение между создателями и авторами,
|
||||
* отражает естественные пропорции в распределении ценности вкладов.
|
||||
* - **100% премии**: Компенсирует невидимое общественное время, вложенное в результат создателем и автором,
|
||||
* признает их общественную значимость.
|
||||
*
|
||||
* ##### Распределение премий между авторами и создателями на этапе генерации результата
|
||||
*
|
||||
* После расчета премий происходит их распределение между участниками проекта:
|
||||
*
|
||||
* ###### Первичное распределение премий
|
||||
*
|
||||
* Общая премиальная сумма проекта формируется из премий создателей и авторов в пропорции 1:0.618:
|
||||
*
|
||||
* - **61.8%** от премий** направляется создателям проекта (Bonus_creator = Base_creator × 1.0)
|
||||
* - **38.2%** от премий** направляется авторам проекта (Bonus_author = Base_author × 1.0)
|
||||
*
|
||||
* \htmlonly
|
||||
* <div class="mermaid">
|
||||
* pie title
|
||||
* "Создатели (61.8%)" : 61.8
|
||||
* "Авторы (38.2%)" : 38.2
|
||||
* </div>
|
||||
* \endhtmlonly
|
||||
*
|
||||
* ###### Распределение премий создателей
|
||||
*
|
||||
* Из премии создателей (61.8% от общей):
|
||||
* - **61.8%** выплачиваются напрямую создателю, совершившему конкретный коммит (по вкладу времени)
|
||||
* - **38.2%** поступают в общий пул для голосования методом Водянова
|
||||
*
|
||||
* \htmlonly
|
||||
* <div class="mermaid">
|
||||
* pie title
|
||||
* "Прямые выплаты (61.8%)" : 61.8
|
||||
* "Пул для голосования (38.2%)" : 38.2
|
||||
* </div>
|
||||
* \endhtmlonly
|
||||
*
|
||||
* ###### Распределение авторских премий
|
||||
*
|
||||
* Из авторской премии (38.2% от общей):
|
||||
* - **61.8%** распределяются поровну между всеми соавторами проекта (равные доли)
|
||||
* - **38.2%** поступают в общий пул для голосования методом Водянова
|
||||
*
|
||||
* \htmlonly
|
||||
* <div class="mermaid">
|
||||
* pie title
|
||||
* "Равные доли соавторов (61.8%)" : 61.8
|
||||
* "Пул для голосования (38.2%)" : 38.2
|
||||
* </div>
|
||||
* \endhtmlonly
|
||||
*
|
||||
* ###### Метод Водянова
|
||||
*
|
||||
* Авторы и создатели проекта совместно участвуют в распределении общего пула премий (38.2% от их долей)
|
||||
* через метод Водянова, который обеспечивает субъективно-справедливое распределение голосующей суммы.
|
||||
*
|
||||
* **Принцип метода:**
|
||||
* 1. Из общего пула премий расчитываются голосующая сумма для распределения, которую
|
||||
* каждый участник должен распределить среди других участников, не оставляя ничего себе.
|
||||
* Активная голосующая сумма рассчитывается на основании общего пула премий и количества участников следующим образом:
|
||||
*
|
||||
* \f[
|
||||
* Active_{voting} = Total_{voting} \times \frac{Total_{voters} - 1}{Total_{voters}}
|
||||
* \f]
|
||||
*
|
||||
* 4. Равная доля для каждого участника (если бы распределение было равномерным):
|
||||
*
|
||||
* \f[
|
||||
* Equal_{amount} = \frac{Total_{voting}}{Total_{voters}}
|
||||
* \f]
|
||||
*
|
||||
* 5. Итоговый результат голосования для каждого участника:
|
||||
*
|
||||
* \f[
|
||||
* Voting_{result} = \frac{\sum votes_{for\ participant} + Equal_{amount}}{Total_{voters}}
|
||||
* \f]
|
||||
*
|
||||
* где:
|
||||
* - \f$\sum votes_{for\ participant}\f$ - сумма голосов, полученных участником от других
|
||||
* - \f$Equal_{amount}\f$ - равная доля, гарантирующая минимум каждому участнику
|
||||
* - \f$Total_{voters}\f$ - общее количество участников голосования
|
||||
*
|
||||
* **Итоговый результат распределения премий для участника (автора или создателя):**
|
||||
*
|
||||
* \f[
|
||||
* Final_{result} = Direct_{portion} + Voting_{result}
|
||||
* \f]
|
||||
*
|
||||
* где:
|
||||
* - \f$Direct_{portion}\f$ - фиксированная доля (61.8% для авторов и создателей)
|
||||
* - \f$Voting_{result}\f$ - результат голосования по методу Водянова
|
||||
*
|
||||
* #### 2. Процесс Капитализации
|
||||
*
|
||||
* **Цель**: Трансформация сгенерированной стоимости в капитализируемые активы, обеспечивающие
|
||||
* долгосрочный рост и справедливое распределение выгоды среди вкладчиков.
|
||||
*
|
||||
* **Основной принцип**: Капитализация обеспечивает рост стоимости через механизм
|
||||
* золотого сечения, где каждый новый **интеллектуальный** вклад добавляет ценность предыдущим вложениям.
|
||||
*
|
||||
* **Математические формулы капитализации**:
|
||||
*
|
||||
* Премии всех вкладчиков (капитализация):
|
||||
* \f[
|
||||
* Bonus_{contributors} = Total_{generation} \times 1.618
|
||||
* \f]
|
||||
*
|
||||
* Общая капитализированная стоимость:
|
||||
* \f[
|
||||
* Total_{capitalization} = Total_{generation} + Bonus_{contributors}
|
||||
* \f]
|
||||
*
|
||||
* **Экономическое обоснование капитализации**:
|
||||
* - **Коэффициент 1.618**: Обеспечивает рост стоимости, моделируя естественные законы.
|
||||
* - **Волновой эффект**: Каждый новый вклад усиливает стоимость предыдущих, создавая
|
||||
* положительную обратную связь и стимулируя дальнейший рост ценности.
|
||||
*
|
||||
* \htmlonly
|
||||
* <div class="mermaid">
|
||||
* pie title
|
||||
* "Базовая генерация (38.2%)" : 38.2
|
||||
* "Капитализация (61.8%)" : 61.8
|
||||
* </div>
|
||||
* \endhtmlonly
|
||||
*
|
||||
* Капитализация распределяется между всеми вкладчиками пропорционально их доле в целевой потребительской программе "Капитализация".
|
||||
*
|
||||
* Дополнительная информация о Идеократии: https://blog.coopenomics.world/2025/04/08/идеократия/
|
||||
*
|
||||
* ## Основной процесс жизненного цикла проекта
|
||||
*
|
||||
* Процесс управления жизненным циклом проекта от создания до закрытия.
|
||||
* Определяет статусы проекта и контролирует, какие операции разрешены на каждом этапе.
|
||||
@@ -84,121 +266,156 @@
|
||||
* \endhtmlonly
|
||||
*
|
||||
* ### Пошаговое описание
|
||||
*
|
||||
*
|
||||
* Ниже описан полный жизненный цикл проекта от идеи до завершения.
|
||||
* Каждый шаг имеет своё назначение и определяет, какие действия доступны участникам.
|
||||
*
|
||||
* #### Шаг 1: Создание проекта
|
||||
* Действие: @ref capital::createproj "Создание проекта"
|
||||
*
|
||||
* Создается новый проект со следующими параметрами:
|
||||
* - Уникальный хэш проекта (project_hash)
|
||||
* - Хэш родительского проекта (parent_hash) - для иерархических проектов
|
||||
* - Название и описание проекта
|
||||
* - Метаданные проекта
|
||||
*
|
||||
* Проект создается в статусе `pending` с флагом `is_opened = false`.
|
||||
* На этом этапе возможно только планирование для открытия приёма инвестиций или запуск приёма коммитов без плана.
|
||||
* Созданный проект предоставляет информацию для фабрики документов,
|
||||
* которая использует её при подготовке персональных приложений к договорам УХД пайщиков.
|
||||
* Содержание идеи проекта и её детальное описание хранится за пределами контракта.
|
||||
* **Действие:** @ref capital::createproj "Создание проекта" \\
|
||||
* **Таблица:** @ref Capital::project "Проекты"
|
||||
*
|
||||
* Инициатор (обычно председатель кооператива) создаёт новый проект в системе, который регистрируется в блокчейне с базовой информацией. На этом этапе проект существует только как "заявка" - он готов к планированию, и возможно только планирование проекта и добавление соавторов. При создании проекта в таблице блокчейна создаётся запись, которая содержит краткую информацию о проекте, которая необходима для генерации персональных приложений к договорам УХД пайщиков.
|
||||
|
||||
* **Технические детали:**
|
||||
* @note Проект на момент создания хранится во внешней базе данных, идентификация между системами производится по хэшу проекта.
|
||||
* **Статус проекта:** `pending` с флагами `is_opened = false` и `is_planed = false`
|
||||
*
|
||||
*
|
||||
* #### Шаг 2: Планирование проекта (опционально)
|
||||
* Действие: @ref capital::setplan "Планирование проекта"
|
||||
*
|
||||
* Планирование проекта позволяет открыть приём инвестиций. Проект без плана инвестиции не принимает.
|
||||
* Планирование проекта обеспечивается мастером и соавторами проекта, которых мастер добавляет к проекту.
|
||||
* Планирование проекта состоит в создании плана проекта и назначении мастера.
|
||||
* План проекта содержит информацию о затратах на проект и о том, какие работы должны быть выполнены для достижения результата проекта.
|
||||
* Шаг может быть пропущен, если проекту не требуется денежных или имущественных инвестиций, или нет планов на их привлечение.
|
||||
* @pre Предварительные условия:
|
||||
* **Действие:** @ref capital::setplan "Планирование проекта"
|
||||
*
|
||||
* Мастер проекта совместно с соавторами разрабатывает детальный план работ,
|
||||
* где определяются необходимые ресурсы, бюджет и сроки.
|
||||
* Без плана проект не может привлекать инвестиции - он обеспечивает прозрачность и контроль выполнения работ, определяя, сколько средств нужно собрать и на что они будут потрачены.
|
||||
* Шаг можно пропустить, если проект не нуждается в денежных или имущественных инвестициях.
|
||||
*
|
||||
* **Технические детали:**
|
||||
* @pre
|
||||
* - Проект должен быть создан
|
||||
* - Проект должен быть в статусе `pending` или `active`
|
||||
*
|
||||
* @post Проект получает флаг `is_opened = true`, что предоставляет инвесторам возможность инвестировать в проект.
|
||||
*
|
||||
* @post Проект получает флаг `is_planed = true`, что указывает на наличие установленного плана проекта.
|
||||
*
|
||||
*
|
||||
* #### Шаг 3: Открытие проекта для инвестиций (опционально)
|
||||
* Действие: @ref capital::openproject "Открытие проекта для инвестиций"
|
||||
*
|
||||
* Открывает проект для приёма инвестиций:
|
||||
* **Действие:** @ref capital::openproject "Открытие проекта для инвестиций"
|
||||
*
|
||||
* Проект становится доступен для привлечения средств от инвесторов, и участники кооператива могут вкладывать деньги в проект. Это позволяет собрать необходимые средства для выполнения работ, создаёт финансовую базу для проекта и привлекает пайщиков, заинтересованных в результате.
|
||||
*
|
||||
* **Технические детали:**
|
||||
* @pre
|
||||
* - Проект должен иметь план (установленный через setplan, `is_planed = true`)
|
||||
* - Должен быть назначен мастер проекта
|
||||
* - Устанавливает флаг `is_opened = true`
|
||||
* - Копирует `plan.target_expense_pool` в `fact.target_expense_pool`
|
||||
* - Разрешает операции инвестирования
|
||||
*
|
||||
* @pre Предварительные условия:
|
||||
* - Проект должен иметь план (установленный через setplan)
|
||||
* - Должен быть назначен мастер проекта
|
||||
*
|
||||
* #### Шаг 4: Запуск активного исполнения
|
||||
* Действие: @ref capital::startproject "Запуск проекта"
|
||||
*
|
||||
* Переводит проект в статус `active`:
|
||||
* - Разрешает создание коммитов создателями
|
||||
* - Разрешает выдачу ссуд участникам
|
||||
* - Разрешает операции с расходами
|
||||
*
|
||||
* @pre Предварительные условия:
|
||||
*
|
||||
* #### Шаг 4: Запуск генерации результата
|
||||
* **Действие:** @ref capital::startproject "Запуск проекта"
|
||||
*
|
||||
* Проект переходит в активную фазу выполнения, где участники вносят коммиты - приращения будущего результата проекта, которые фиксируются в системе учёта по продолжительности потраченного времени создателем.
|
||||
* Запуск переводит проект из подготовительной стадии в активную, и разрешает все основные операции по созданию результата.
|
||||
* Проект может быть переведен в активную фазу без плана привлечения инвестиций, что открывает возможность совершать коммиты на этапе планирования.
|
||||
*
|
||||
* **Технические детали:**
|
||||
* @pre
|
||||
* - Проект должен быть открыт для инвестиций
|
||||
* - Должны быть привлечены минимальные инвестиции
|
||||
*
|
||||
* #### Шаг 5: Начало голосования
|
||||
* Действие: @ref capital::startvoting "Начало голосования"
|
||||
*
|
||||
* Переводит проект в статус `voting`:
|
||||
* - Переводит проект в статус `active`
|
||||
* - Разрешает создание коммитов создателями
|
||||
* - Разрешает выдачу ссуд авторам/создателями/координаторам
|
||||
|
||||
* #### Шаг 5: Открытие голосования по результату
|
||||
* **Действие:** @ref capital::startvoting "Открыть голосование"
|
||||
*
|
||||
* Все запланированные работы выполнены, результат проекта готовится к взносу в кооператив. Теперь авторы и создатели могут проголосовать за качество и ценность вклада каждого.
|
||||
* Система рассчитывает вознаграждения по методу Водянова и устанавливает срок для голосования (7 дней по умолчанию, изменямо кооперативом).
|
||||
* Голосование определяет объем части премий для авторов и создателей.
|
||||
*
|
||||
* **Технические детали:**
|
||||
* @pre
|
||||
* - Проект в статусе `active`
|
||||
* - Все запланированные работы выполнены
|
||||
* @post
|
||||
* - Переводит проект в статус `voting`
|
||||
* - Инициализирует параметры голосования из конфига
|
||||
* - Рассчитывает суммы для распределения по методу Водянова
|
||||
* - Устанавливает дедлайн голосования
|
||||
* - Прекращает приём новых коммитов
|
||||
*
|
||||
* @pre Предварительные условия:
|
||||
* - Проект в статусе `active`
|
||||
* - Все запланированные работы выполнены
|
||||
*
|
||||
* @post Расчёт сумм для голосования:
|
||||
* - authors_equal_spread - равное распределение для авторов
|
||||
* - authors_bonuses_on_voting - авторские премии на голосование
|
||||
* - creators_direct_spread - прямое распределение создателям
|
||||
* - creators_bonuses_on_voting - премии создателей на голосование
|
||||
* - total_voting_pool - общий пул для голосования
|
||||
*
|
||||
*
|
||||
* **Расчёт сумм для голосования:**
|
||||
* - `authors_equal_spread` - равное распределение для авторов
|
||||
* - `authors_bonuses_on_voting` - авторские премии на голосование
|
||||
* - `creators_direct_spread` - прямое распределение создателям
|
||||
* - `creators_bonuses_on_voting` - премии создателей на голосование
|
||||
* - `total_voting_pool` - общий пул для голосования
|
||||
*
|
||||
* #### Шаг 6: Завершение голосования
|
||||
* Действие: @ref capital::cmpltvoting "Завершение голосования"
|
||||
*
|
||||
* Переводит проект в статус `completed`:
|
||||
* **Действие:** @ref capital::cmpltvoting "Закрыть голосование"
|
||||
* @pre
|
||||
* - Истек дедлайн голосования ИЛИ проголосовали все участники
|
||||
* Голосование завершено (истек срок или проголосовали все),
|
||||
* результаты голосования зафиксированы в блокчейне,
|
||||
* участники могут сдавать свои результаты работы, а дальнейшие изменения в проект запрещены.
|
||||
* Это фиксирует окончательные результаты оценки, переводит проект в стадию подведения итогов и подготавливает систему к распределению вознаграждений.
|
||||
* @post
|
||||
* - Переводит проект в статус `completed`
|
||||
* - Фиксирует результаты голосования
|
||||
* - Разрешает сдачу результатов участниками
|
||||
* - Запрещает дальнейшие изменения в проекте
|
||||
*
|
||||
* @pre Предварительные условия:
|
||||
* - Истек дедлайн голосования ИЛИ проголосовали все участники
|
||||
*
|
||||
*
|
||||
* #### Шаг 7: Закрытие проекта
|
||||
* Действие: @ref capital::closeproject "Закрытие проекта"
|
||||
*
|
||||
* Переводит проект в финальный статус `closed`:
|
||||
* **Действие:** @ref capital::closeproject "Закрытие проекта"
|
||||
* @pre
|
||||
* - Истекло время на взнос результатов
|
||||
|
||||
* Все результаты сданы участниками, все финансовые операции завершены,
|
||||
* неиспользованные инвестиции возвращаются вкладчикам, сегменты участников конвертируются в паи кооператива,
|
||||
* и проект получает финальный статус.
|
||||
* Это завершает жизненный цикл проекта, возвращает неизрасходованные средства,
|
||||
* фиксирует окончательные результаты и доли участников, а также подготавливает результат для внесения в кооператив.
|
||||
* @post
|
||||
* - Переводит проект в финальный статус `closed`
|
||||
* - Разрешает возврат неиспользованных инвестиций
|
||||
* - Разрешает конвертацию сегментов участников
|
||||
* - Фиксирует финальные результаты проекта
|
||||
*
|
||||
* @pre Предварительные условия:
|
||||
* - Все участники сдали результаты
|
||||
* - Завершены все финансовые операции
|
||||
*
|
||||
*
|
||||
* #### Шаг 8: Удаление проекта (опционально)
|
||||
* Действие: @ref capital::delproject "Удаление проекта"
|
||||
*
|
||||
* Полное удаление проекта из системы:
|
||||
* - Удаляет все связанные данные
|
||||
* - Требует аккуратных проверок целостности
|
||||
* - Используется в исключительных случаях
|
||||
* **Действие:** @ref capital::delproject "Удаление проекта"
|
||||
* @pre Все вклады должны быть сконвертированы в программу "Капитализация", "Цифровой Кошелек" или переданы в мета-проект.
|
||||
* Удаляются все связанные данные и записи проекта из блокчейна.
|
||||
* Используется в том случае, когда хранение данных о проекте в таблице блокчейна более не целесообразно, а сам проект изначально не предполагал получение членских взносов из него и не допускал конвертацию вкладов в проект.
|
||||
*
|
||||
* @post Удаляет все связанные данные из таблиц блокчейна
|
||||
* @note Мета-проект - это проект, который состоит из нескольких проектов. Все вклады в дочерние проекты при конвертациях в проект - передаются в мета-проект. Пример: проект - это этап, мета-проект - это разрабываемое приложение, которое состоит из нескольких этапов.
|
||||
|
||||
* ### Процесс конвертации вкладов после взноса результата
|
||||
|
||||
* После успешного взноса результата в кооператив через действие @ref capital::pushrslt "pushrslt"
|
||||
* каждый участник проекта должен произвести конвертацию своих вкладов в одном из доступных направлений.
|
||||
|
||||
* У участника есть три варианта куда направить свои средства из кошелька приложения к договору УХД, куда они попадают после того, как результат принят в кооператив.
|
||||
|
||||
* **Первый вариант** - направить средства в свой цифровой кошелек. Это значит, что участник получит прямой доступ к вознаграждениям
|
||||
* и сможет распоряжаться ими как хочет. Этот вариант доступен для авторских, создательских и координаторских взносов.
|
||||
* Имущественные взносы в кошелек направить нельзя.
|
||||
|
||||
* **Второй вариант** - направить средства в программу "Капитализация". Средства передаются в кошелек программы пайщика, где они будут капитализироваться новыми интеллектуальными вкладами и обеспечиваться для возврата механизмом сеньоража
|
||||
* @note Сеньораж - это механизм извлечения выгоды от расширения платформы "Кооперативной Экономики", которое измеряется на основе количества членских взносов кооперативов за использование платформы электронного документооборота. Когда экономика расширяется, то пайщики получают финансовую выгоду от этого расширения в членских взносах кооперативов, которые обеспечивают возврат паевых взносов из программы "Капитализация". Сеньораж связан с механизмом эмиссии и подробно описан в @ref public_system "Системном Контракте".
|
||||
|
||||
* **Третий вариант** - оставить средства в проекте. Участник сохраняет свою долю в проекте и будет получать членские взносы,
|
||||
* пропорционально этой доле. Если проект является частью большого мета-проекта (например, отдельный этап в большом приложении),
|
||||
* то средства перейдут в родительский мета-проект, в котором у пайщика должен быть подписанное приложение к договору УХД.
|
||||
|
||||
* ### Состояния проекта и разрешенные операции
|
||||
*
|
||||
* | Статус | Разрешенные операции |
|
||||
* |--------|---------------------|
|
||||
* | `pending` | Назначение мастера, добавление соавторов, планирование |
|
||||
* | `pending` + `is_opened` | + Инвестиции, аллокации |
|
||||
* | `active` | + Коммиты, ссуды, расходы, имущественные взносы |
|
||||
* | `voting` | + Голосование |
|
||||
* | `completed` | + Подсчёт голосов, Приём результатов |
|
||||
* | `closed` | + Возврат неиспользованных средств, конвертация |
|
||||
*
|
||||
* | Статус | Флаги | Разрешенные операции |
|
||||
* |--------|-------|---------------------|
|
||||
* | `pending` | `is_planed = false` | Назначение мастера, добавление соавторов, планирование |
|
||||
* | `pending` | `is_planed = true` | + Открытие проекта для инвестиций |
|
||||
* | `pending` + `is_opened` | `is_planed = true` | + Инвестиции, аллокации |
|
||||
* | `active` | | + Коммиты, ссуды, расходы, имущественные взносы |
|
||||
* | `voting` | | + Голосование |
|
||||
* | `completed` | | + Подсчёт голосов, Приём результатов |
|
||||
* | `closed` | | + Возврат неиспользованных средств, конвертация |
|
||||
*
|
||||
* ### Результат процесса
|
||||
*
|
||||
|
||||
@@ -45,8 +45,9 @@ struct [[eosio::table, eosio::contract(CAPITAL)]] project {
|
||||
checksum256 parent_hash; ///< Хэш родительского проекта (если есть)
|
||||
|
||||
eosio::name status; ///< Статус проекта
|
||||
|
||||
|
||||
bool is_opened; ///< Открыт ли проект для инвестиций
|
||||
bool is_planed; ///< Запланирован ли проект (установлен план)
|
||||
|
||||
// Мастер проекта
|
||||
name master; ///< Мастер проекта
|
||||
@@ -148,7 +149,7 @@ namespace Capital::Projects {
|
||||
project_index projects(_capital, coopname.value);
|
||||
|
||||
projects.emplace(coopname, [&](auto& row) {
|
||||
row.id = get_global_id_in_scope(_capital, coopname, "projects"_n);
|
||||
row.id = get_global_id_in_scope(_capital, coopname, "projects"_n);
|
||||
row.status = Capital::Projects::Status::PENDING;
|
||||
row.project_hash = project_hash;
|
||||
row.parent_hash = parent_hash;
|
||||
@@ -156,6 +157,7 @@ namespace Capital::Projects {
|
||||
row.title = title;
|
||||
row.description = description;
|
||||
row.meta = meta;
|
||||
row.is_planed = false; // Изначально проект не запланирован
|
||||
});
|
||||
}
|
||||
|
||||
@@ -272,6 +274,7 @@ namespace Capital::Projects {
|
||||
|
||||
projects.modify(project, coopname, [&](auto &p) {
|
||||
p.plan = calculated_plan;
|
||||
p.is_planed = true; // Проект теперь запланирован
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
\defgroup public_system Контракт SYSTEM
|
||||
* @anchor public_system
|
||||
* Системный смарт-контракт EOSIO, который определяет структуры и действия, необходимые для основной функциональности блокчейна.
|
||||
* Системный смарт-контракт, который определяет структуры и действия, необходимые для основной функциональности блокчейна.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
||||
@@ -32,4 +32,34 @@
|
||||
#nav-tree .item.selected {
|
||||
background-color: #d8e8f8;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1.1em;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.15em;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.2em;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.25em;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.3em;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 1.4em;
|
||||
padding-top: 10px;
|
||||
}
|
||||
@@ -30,8 +30,21 @@
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
if (window.mermaid) {
|
||||
mermaid.initialize({ startOnLoad: true, theme: 'neutral' });
|
||||
console.log('success mermaid init')
|
||||
try {
|
||||
// Initialize mermaid with auto theme based on current dark mode state
|
||||
const isDarkMode = document.documentElement.classList.contains('dark-mode');
|
||||
const theme = isDarkMode ? 'dark' : 'neutral';
|
||||
mermaid.initialize({
|
||||
startOnLoad: true,
|
||||
theme: theme,
|
||||
securityLevel: 'loose',
|
||||
fontFamily: 'arial',
|
||||
fontSize: 14
|
||||
});
|
||||
console.log('success mermaid init with theme:', theme);
|
||||
} catch (error) {
|
||||
console.warn('Mermaid initialization error:', error);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -96,6 +96,13 @@ class DoxygenAwesomeDarkModeToggle extends HTMLElement {
|
||||
document.documentElement.classList.remove("dark-mode")
|
||||
document.documentElement.classList.add("light-mode")
|
||||
}
|
||||
DoxygenAwesomeDarkModeToggle.updateMermaidTheme(enable)
|
||||
}
|
||||
|
||||
static updateMermaidTheme(isDarkMode) {
|
||||
if (window.mermaid) {
|
||||
window.location.reload();
|
||||
}
|
||||
}
|
||||
|
||||
static onSystemPreferenceChanged() {
|
||||
|
||||
Reference in New Issue
Block a user