/**
 * @defgroup public_capital_finalization_process Финализация проекта
 * @ingroup public_capital_processes
 * @brief Процесс финализации проекта после завершения всех конвертаций участников
 * 
 * Процесс финализирует проект после того, как все участники завершили конвертацию своих сегментов,
 * возвращает неиспользованные инвестиции в глобальный пул программы и устанавливает финальный статус проекта.
 * 
 * ## Назначение процесса
 * 
 * После завершения проекта и конвертации всех сегментов участников необходимо:
 * - Зафиксировать факт завершения всех конвертаций
 * - Рассчитать неиспользованную дельту инвестиций
 * - Вернуть неиспользованные средства в глобальный пул программы
 * - Установить финальный статус проекта FINALIZED
 * 
 * ## Диаграмма процесса
 * 
 * \htmlonly
 * <div class="mermaid">
 * sequenceDiagram
 *     participant К as Кооператив
 *     participant C as Capital Contract
 *     participant P as Проект
 *     participant GP as Глобальный Пул
 *     
 *     К->>C: finalizeproj(project_hash)
 *     Note over C: Проверка статуса RESULT
 *     
 *     C->>P: Проверка счётчика конвертаций
 *     Note over P: total_converted_segments == total_unique_participants
 *     
 *     C->>C: Расчёт неиспользованной дельты
 *     Note over C: unused = total_received - total_used - expenses_used
 *     
 *     alt Есть неиспользованные средства
 *         C->>C: returntopool (inline action)
 *         C->>GP: Возврат средств в пул
 *         Note over GP: Средства доступны для новых аллокаций
 *     end
 *     
 *     C->>P: Установка статуса FINALIZED
 *     Note over P: Проект финализирован
 * </div>
 * \endhtmlonly
 * 
 * ## Пошаговое описание процесса
 * 
 * ### Шаг 1: Вызов финализации проекта
 * <b>Действие:</b> @ref capital::finalizeproj "финализация проекта"
 * 
 * Кооператив вызывает действие финализации после того, как все участники завершили
 * конвертацию своих сегментов.
 * 
 * <b>Проверки:</b>
 * - Проект находится в статусе RESULT
 * - Счётчик сконвертированных сегментов равен количеству уникальных участников
 * - В таблице сегментов не осталось записей
 * 
 * ### Шаг 2: Расчёт неиспользованной дельты
 * 
 * Система рассчитывает неиспользованную дельту инвестиций по формуле:
 * 
 * \f[
 * unused_{delta} = total_{received} - total_{used\_for\_compensation} - used_{expense\_pool}
 * \f]
 * 
 * где:
 * - \f$total_{received}\f$ - общая сумма полученных инвестиций (включая часть на расходы)
 * - \f$total_{used\_for\_compensation}\f$ - фактически выплачено участникам (конвертация в wallet + ссуды)
 * - \f$used_{expense\_pool}\f$ - фактически потрачено на расходы проекта
 * 
 * <b>Что включает неиспользованная дельта:</b>
 * 1. Инвестиции, не использованные для компенсации участникам (если участники направили средства в программу/проект)
 * 2. Зарезервированные на расходы, но не потраченные средства (accumulated_expense_pool - used_expense_pool)
 * 
 * ### Шаг 3: Возврат средств в глобальный пул
 * <b>Действие:</b> @ref capital::returntopool "возврат средств в пул" (inline action)
 * 
 * Если неиспользованная дельта > 0, система:
 * - Вызывает трекинговое действие returntopool через inline action
 * - Фиксирует сумму возврата и проект для трекинга
 * - Добавляет средства в global_available_invest_pool
 * 
 * <b>Преимущества inline action:</b>
 * - Возврат фиксируется как отдельное действие в истории блокчейна
 * - Можно отследить все возвраты с указанием суммы и проекта
 * - Удобно для аналитики и аудита
 * 
 * ### Шаг 4: Установка финального статуса
 * 
 * Система устанавливает статус проекта на FINALIZED:
 * - Проект больше не может быть изменён
 * - Все финансовые операции завершены
 * - Проект можно удалить (опционально)
 * 
 * ## Отслеживание конвертаций
 * 
 * Для отслеживания завершения конвертаций всеми участниками используются счётчики:
 * 
 * - **total_unique_participants** - общее количество уникальных участников проекта
 * - **total_converted_segments** - количество сконвертированных сегментов
 * 
 * При каждом вызове convertsegm счётчик total_converted_segments инкрементируется.
 * Финализация возможна только когда total_converted_segments >= total_unique_participants.
 * 
 * ## Результат процесса
 * 
 * После успешной финализации:
 * 1. Все участники завершили конвертацию своих сегментов
 * 2. Неиспользованные инвестиции возвращены в глобальный пул
 * 3. Проект находится в финальном статусе FINALIZED
 * 4. Средства доступны для аллокации в новые проекты
 * 
 * @see capital::finalizeproj
 * @see capital::returntopool
 * @see capital::convertsegm
 */

