Files
mono/components/contracts/cpp/capital/docs/meta-projects.dox
T
2025-10-22 19:53:40 +05:00

161 lines
10 KiB
Plaintext

/**
@page Мета-проекты
@defgroup capital_meta_projects Мета-проекты
@ingroup public_capital
Мета-проект - это проект-аккумулятор, который позволяет объединить участников
из нескольких завершенных проектов-компонентов под единым интеллектуальным результатом
для получения членских взносов от его использования.
## Проблема и решение
### Проблема публикации в магазине приложений
Без мета-проектов возникает проблема:
- В магазине приложений пришлось бы публиковать каждый проект-компонент отдельно
- У каждого компонента были бы свои участники
- При выпуске новой версии команды разработчиков остаются изолированными
- Отсутствует преемственность между версиями и компонентами
### Решение через мета-проект
Мета-проект решает эту проблему:
- В магазине публикуется <b>один</b> интеллектуальный результат (мета-проект)
- Все участники из завершенных компонентов объединяются в едином кошельке
- Новые участники присоединяются к существующим, а не заменяют их
- Сохраняется преемственность между версиями и релизами
## Основные принципы
### Мета-проект как аккумулятор
Мета-проект функционирует как <b>проект-аккумулятор</b>:
- Накапливает участников из завершенных проектов-компонентов
- Обеспечивает им получение членских взносов от использования результата
- Позволяет новым участникам присоединиться через новые компоненты
- Создает единое сообщество участников вокруг интеллектуального результата
### Принцип накопления участников
Мета-проект не просто объединяет проекты, а <b>накапливает участников</b>:
1. <b>Первоначальные участники</b>: При завершении первого компонента участники,
выбравшие "сохранение в проекте", переходят в мета-проект
2. <b>Новые участники</b>: При создании новых проектов-компонентов привлекаются
новые участники, которые после завершения тоже присоединяются к мета-проекту
3. <b>Объединение</b>: Все участники оказываются в одном кошельке мета-проекта
и получают членские взносы от использования общего результата
4. <b>Непрерывность</b>: Процесс может продолжаться неограниченно долго
### Создание мета-проекта
Проект становится мета-проектом автоматически, как только:
1. Создается новый проект с указанием данного проекта как родительского
2. В системе появляется хотя бы один проект-компонент, ссылающийся на него
```cpp
// При создании проекта-компонента указывается parent_project_id
createproj({
// ... другие параметры
parent_project_id: "marketplace_app" // хэш мета-проекта
});
```
## Механизм централизованной выгоды
### Конвертация вкладов
Когда проект-компонент завершается и происходит конвертация сегментов:
- Средства участников, выбравших "сохранение в проекте",
автоматически <b>переводятся в кошелек мета-проекта</b>
- Это обеспечивает централизованный сбор долей и распределение выгоды среди всех участников всех компонентов
### Размывание долей
В мета-проекте действует принцип <b>размывания долей</b>:
- Старые вклады постепенно размываются новыми поступлениями
- Участники получают пропорциональную долю от общего потока выгод
- Учет ведется через алгоритм @ref public_capital_crps_algorithm "CRPS"
## Практический пример: Маркетплейс
### Проблема без мета-проекта
Без использования мета-проекта в магазине приложений пришлось бы публиковать:
- "Маркетплейс v1.0" (участники: Алекс, Мария, Иван)
- "Маркетплейс v1.1" (участники: Ольга, Петр)
- "Маркетплейс v2.0" (участники: Николай, Светлана)
- "Мобильное приложение" (участники: Анна, Дмитрий)
Каждый компонент маркетплейса - отдельное приложение с отдельными участниками.
### Решение через мета-проект
С мета-проектом в магазине публикуется:
- <b>"Маркетплейс"</b> (участники: Алекс, Мария, Иван, Ольга, Петр, Николай, Светлана, Анна, Дмитрий)
Все участники объединены в одном кошельке и получают членские взносы от одного приложения.
### Поэтапное накопление участников
1. <b>Первый компонент</b>: Создается "Маркетплейс v1.0" с участниками Алекс, Мария, Иван
2. <b>Формирование мета-проекта</b>: При создании "Маркетплейс v1.1" указывается
родитель - "v1.0" становится мета-проектом
3. <b>Первое накопление</b>: После завершения "v1.1" участники Ольга и Петр
присоединяются к участникам Алекс, Мария, Иван в кошельке мета-проекта
4. <b>Продолжение накопления</b>: При завершении "v2.0" и "Мобильного приложения"
все новые участники тоже присоединяются к общему кошельку
5. <b>Общие членские взносы</b>: Все девять участников получают долю от
членских взносов за использование маркетплейса
### Преимущества мета-проекта
- <b>Преемственность команд</b>: Участники ранних версий остаются частью команды
и при выпуске новых версий
- <b>Накопление экспертизы</b>: Опыт разработки предыдущих версий помогает
в создании новых компонентов
- <b>Совместные членские взносы</b>: Все участники получают долю от общих доходов
от использования всех созданных версий
- <b>Мотивация к качеству</b>: Компоненты должны быть качественными,
чтобы пользователи платили членские взносы
## Жизненный цикл компонентов
### Завершение проектов-компонентов
Проекты-компоненты имеют ограниченный жизненный цикл:
1. <b>Создание и разработка</b>: Обычный проектный цикл
2. <b>Завершение</b>: Приём результата и конвертация вкладов
3. <b>Перенос в мета-проект</b>: Средства участников переходят в мета-проект
4. <b>Удаление</b>: Проект-компонент полностью удаляется из системы
### Сохранение мета-проекта
Мета-проект продолжает существовать даже после завершения всех компонентов:
- Аккумулирует выгоды от использования результатов
- Обеспечивает распределение между участниками
- Служит основой для новых проектов-компонентов
## Технические ограничения
- <b>Глубина иерархии</b>: Максимум 1 уровень (мета-проект → компоненты)
- <b>Автоматическое создание</b>: Мета-проект создается неявно при появлении первого компонента
- <b>Необратимость</b>: Обычный проект нельзя превратить в мета-проект напрямую
- <b>Уникальность идентификатора</b>: Каждый мета-проект имеет уникальный ID
@see @ref public_capital_project_creation_process "Процесс создания проекта"
@see @ref public_capital_conversion_process "Конвертация сегментов"
@see @ref public_capital_crps_algorithm "Алгоритм CRPS"
*/