/**

@defgroup public_capital_commit_creation_process Создание коммита
@ingroup public_capital_processes

Процесс фиксации трудозатрат создателя на проекте через создание коммита с указанием потраченного времени. Коммит инициирует пересчет затрат авторов и расчет будущих взносов всех участников. Процесс включает фиксацию трудозатрат создателем, проверку прав, уникальности коммита, расчет затрат и взносов, создание коммита в статусе ожидания одобрения, и последующее одобрение или отклонение мастером проекта.

@pre Проект находится в активном состоянии
@pre Исполнитель имеет действующий договор УХД
@pre Исполнитель подписал приложение к проекту

## Диаграмма процесса

\htmlonly
<div class="mermaid">
sequenceDiagram
    participant С as Исполнитель
    participant C as Capital Contract
    participant G as Core Generation
    participant М as Мастер проекта
    
    С->>C: 1. Фиксация трудозатрат
    Note over C: Проверка статуса проекта ACTIVE
    Note over C: Валидация прав создателя
    Note over C: Проверка уникальности коммита
    C->>G: 2. Расчет затрат и взносов
    Note over G: Пересчет авторских затрат<br/>Расчет долей участников программы
    G->>C: 3. Создание коммита в статусе ОЖИДАНИЕ
    Note over C: Коммит создан, ожидает одобрения мастера
    М->>C: 4. Одобрение коммита
    alt Мастер одобряет
        Note over C: Обработка коммита и обновление сумм
    else Мастер отклоняет
        М->>C: 4. Отклонение коммита
        Note over C: Удаление коммита с указанием причины
    end
</div>
\endhtmlonly

## Фиксация трудозатрат создателем

Исполнитель инициирует фиксацию трудозатрат после выполнения работы над проектом с указанием количества потраченных часов. Коммит представляет зафиксированные трудозатраты создателя и служит основой для пересчета затрат авторов проекта, расчета будущих взносов участников программы благороста и определения экономических показателей проекта.

## Валидация прав создателя

Система проверяет права создателя на фиксацию трудозатрат через проверку активного договора УХД с кооперативом, наличия подписанного приложения к проекту и активного статуса проекта для создания коммитов. Только создатели с полным комплектом документов могут фиксировать трудозатраты.

## Проверка уникальности коммита

Система валидирует уникальность хеша коммита для предотвращения дублирования трудозатрат. Проверяется также положительность количества часов работы для корректности расчетов.

## Расчет затрат и взносов

Система выполняет автоматический расчет базового вознаграждения создателя, пересчета затрат авторов проекта на основе новых трудозатрат и расчета будущих взносов всех участников программы благороста при их участии в проекте. Расчет учитывает индивидуальную почасовую ставку создателя и автоматически распределяет суммы по категориям участников.

## Создание коммита в ожидании одобрения

Система создает запись коммита с рассчитанными суммами и переводит его в статус ожидания одобрения. Коммит остается в системе с статусом "created" до получения одобрения или отклонения от мастера проекта.

## Создание коммита
@ref capital::createcmmt "Создание коммита"

Исполнитель инициирует фиксацию трудозатрат после выполнения работы над проектом:

@pre <b>Предварительные условия:</b>
- Проект находится в активном состоянии
- Исполнитель имеет действующий договор УХД
- Исполнитель подписал приложение к проекту

<b>Механика создания коммита:</b>
- Выполняется проверка прав создателя
- Проверяется уникальность хеша коммита
- Рассчитываются затраты и будущие взносы

<b>Результат:</b> Коммит создан и ожидает одобрения от мастера проекта. При одобрении происходит пересчет затрат авторов проекта и расчет будущих взносов участников программы благороста.

@post Требуется авторизация создателя
@post Создан коммит с зафиксированными трудозатратами
@post Коммит ожидает одобрения от мастера проекта

## Одобрение коммита мастером проекта
@ref capital::approvecmmt "Одобрение коммита"

Мастер проекта выполняет одобрение коммита после проверки качества выполненной работы создателя. Происходит полная обработка коммита:

@post Подтверждено что одобряющий является мастером проекта
@post Коммит добавлен к проекту с обновлением общих показателей
@post Обновлен сегмент создателя с учетом новых трудозатрат
@post Распределены авторские средства между всеми авторами проекта
@post Коммит удален из таблицы после успешной обработки

## Отклонение коммита мастером проекта
@ref capital::declinecmmt "Отклонение коммита"

Мастер проекта выполняет отклонение коммита при обнаружении несоответствия выполненной работы требованиям проекта с указанием конкретной причины:

@post Подтверждено что отклоняющий является мастером проекта
@post Коммит полностью удален из системы
@post Причина отклонения зафиксирована для обратной связи с создателем

## Связанные процессы

- @ref public_capital_fundproj_process "Регистрация членских взносов в проект"
- @ref public_capital_refresh_project_process "Обновление кошелька проекта"

*/