<!--
  Copyright (c) 2024-2025 Тарабанов Александр Викторович
  All rights reserved.
  
  This software is proprietary and confidential.
  Unauthorized copying, modification, or distribution is prohibited.
  
  For licensing inquiries: info@hb3-accelerator.com
  Website: https://hb3-accelerator.com
  GitHub: https://github.com/HB3-ACCELERATOR
-->

# Детальный план задач: Управление Digital Legal Entity (DLE)

## Общие принципы разработки

### Архитектурные требования
- **Single-Chain Governance**: Голосование происходит только в одной выбранной сети
- **Кворум голосов токен‑холдеров**: Все операции требуют достижения кворума голосующей силы по снапшотам
- **Настраиваемые таймлоки**: Инициатор устанавливает задержку для каждого предложения
- **Cross-chain исполнение**: Решения выполняются во всех целевых сетях
- **Без админских ролей**: Только коллективное управление через токен-холдеров

### Технический стек
- **Frontend**: Vue.js 3 + Composition API
- **Web3**: ethers.js или web3.js
- **Контракты**: Solidity + OpenZeppelin (ERC‑4337 опционально для кошельков/UX)
- **Стили**: Scoped CSS с переменными

---

## Обновления (DLE v2)

- Деплой:
  - Мультисетевой деплой одной кнопкой: backend вызывает `deploy-multichain.js`.
  - Предсказанные адреса DLE отображаются автоматически (endpoint `/api/dle-v2/predict-addresses`).
  - INIT_CODE_HASH вычисляется автоматически на backend, не вводится вручную.
- Предложения (UI):
  - Порядок секций: Базовая информация → Timelock → Governance‑сеть → Целевые сети → Тип операции и параметры → Предпросмотр.
  - Поля: `timelockHours`, `targetChains`, `governanceChainId`.
- Аналитика:
  - Использовать новые view‑функции: `getProposalSummary`, `getProposalState`, `getProposalVotes`, `getQuorumAt`, `getVotingPowerAt`, `listSupportedChains`, `getGovernanceParams`.

## 1. БЛОК "ПРЕДЛОЖЕНИЯ" (`/management/proposals`)

### Задача 1.1: Создание предложений
**Описание**: Пользователь создает предложение для выполнения операции в DLE

**Что нужно сделать**:
- [ ] Добавить форму создания предложения с полями:
  - Тип операции (управление токенами, казна, модули, настройки)
  - Описание операции (текстовое поле)
  - Выбор governance-сети (выпадающий список)
  - Выбор целевых сетей для исполнения (мультиселект)
  - Таймлок задержка в часах (числовое поле)
- [ ] Подключить к контракту метод `createProposal(operation, targetChains, timelockDelay)`
- [ ] Добавить валидацию: только токен-холдеры могут создавать предложения
- [ ] Показывать предварительный расчет газа для создания предложения

**Время**: 8-12 часов

### Задача 1.2: Подписание предложений
**Описание**: Токен-холдеры подписывают предложения для достижения кворума

**Что нужно сделать**:
- [ ] Отображать список активных предложений с прогрессом подписей
- [ ] Показывать для каждого предложения:
  - Текущее количество подписей / требуемый кворум
  - Список подписавших с их балансами токенов
  - Время до истечения таймлока
- [ ] Добавить кнопку "Подписать" для токен-холдеров
- [ ] Подключить к контракту метод `signProposal(proposalId)`
- [ ] Проверять баланс токенов при подписании
- [ ] Обновлять UI в реальном времени при новых подписях

**Время**: 10-14 часов

### Задача 1.3: Исполнение предложений
**Описание**: Выполнение предложений после достижения кворума и истечения таймлока

**Что нужно сделать**:
- [ ] Отображать статус предложений: "Ожидание", "Кворум достигнут", "Готово к исполнению", "Исполнено"
- [ ] Добавить кнопку "Исполнить" для предложений готовых к исполнению
- [ ] Подключить к контракту метод `executeProposal(proposalId)`
- [ ] Показывать прогресс исполнения в целевых сетях
- [ ] Обрабатывать ошибки исполнения и показывать fallback статусы
- [ ] Добавить возможность отмены предложений до истечения таймлока

**Время**: 8-12 часов

### Задача 1.4: История и фильтрация
**Описание**: Просмотр истории предложений с возможностью фильтрации

**Что нужно сделать**:
- [ ] Добавить фильтры по:
  - Статусу предложения
  - Типу операции
  - Governance-сети
  - Периоду времени
- [ ] Реализовать поиск по описанию предложения
- [ ] Добавить пагинацию для больших списков
- [ ] Показывать детали каждого предложения в модальном окне
- [ ] Добавить ссылки на блокчейн-эксплореры для транзакций

**Время**: 6-8 часов

---

## 2. БЛОК "ТОКЕНЫ DLE" (`/management/tokens`)

### Задача 2.1: Информация о токенах
**Описание**: Отображение основной информации о токенах DLE

**Что нужно сделать**:
- [ ] Показывать общий supply токенов
- [ ] Отображать баланс текущего пользователя
- [ ] Показывать процент кворума для голосования
- [ ] Отображать текущую рыночную стоимость токена (если доступна)
- [ ] Подключить к контракту методы `totalSupply()`, `balanceOf(address)`
- [ ] Обновлять данные в реальном времени при изменениях

**Время**: 4-6 часов

### Задача 2.2: Передача токенов
**Описание**: Перевод токенов между участниками через кворум

**Что нужно сделать**:
- [ ] Создать форму перевода с полями:
  - Адрес получателя
  - Количество токенов
  - Описание перевода
- [ ] Создавать предложение для перевода токенов
- [ ] Показывать статус предложения перевода
- [ ] Валидировать баланс отправителя
- [ ] Подключать к контракту через систему предложений

**Время**: 6-8 часов

### Задача 2.3: Распределение токенов
**Описание**: Массовое распределение токенов новым участникам

**Что нужно сделать**:
- [ ] Создать форму распределения с возможностью добавления множественных получателей
- [ ] Поля для каждого получателя: адрес, количество токенов
- [ ] Кнопки "Добавить получателя" и "Удалить получателя"
- [ ] Создавать предложение для распределения
- [ ] Показывать общую сумму распределения
- [ ] Валидировать общий supply и права на минтинг

**Время**: 8-10 часов

### Задача 2.4: Список держателей токенов
**Описание**: Отображение всех держателей токенов с их балансами

**Что нужно сделать**:
- [ ] Получать список всех держателей токенов
- [ ] Отображать для каждого держателя:
  - Адрес кошелька
  - Количество токенов
  - Процент от общего supply
  - Дата последней активности
- [ ] Добавить сортировку по балансу, активности, адресу
- [ ] Реализовать поиск по адресу
- [ ] Показывать топ-10 держателей отдельно

**Время**: 6-8 часов

---

## 3. БЛОК "КВОРУМ" (`/management/quorum`)

### Задача 3.1: Текущие настройки кворума
**Описание**: Отображение текущих параметров кворума

**Что нужно сделать**:
- [ ] Показывать текущий процент кворума для голосования
- [ ] Отображать минимальную задержку голосования
- [ ] Показывать период голосования
- [ ] Отображать порог для создания предложений
- [ ] Подключать к контракту для получения актуальных значений
- [ ] Показывать когда были изменены последние настройки

**Время**: 4-6 часов

### Задача 3.2: Изменение настроек кворума
**Описание**: Создание предложения для изменения параметров кворума

**Что нужно сделать**:
- [ ] Создать форму изменения настроек с полями:
  - Новый процент кворума (1-100%)
  - Новая задержка голосования (в часах)
  - Новый период голосования (в днях)
  - Новый порог для предложений (в токенах)
  - Причина изменения
- [ ] Валидировать значения (кворум не менее 51%, разумные периоды)
- [ ] Создавать предложение для изменения настроек
- [ ] Показывать предварительный расчет влияния изменений
- [ ] Добавить подтверждение критических изменений

**Время**: 8-10 часов

### Задача 3.3: История изменений кворума
**Описание**: Просмотр истории изменений параметров кворума

**Что нужно сделать**:
- [ ] Отображать список всех изменений кворума
- [ ] Показывать для каждого изменения:
  - Старые и новые значения
  - Кто инициировал изменение
  - Когда было предложено и когда принято
  - Причину изменения
- [ ] Добавить фильтрацию по периоду и типу изменений
- [ ] Показывать статистику изменений (частота, тренды)

**Время**: 6-8 часов

---

## 4. БЛОК "МОДУЛИ DLE" (`/management/modules`)

### Задача 4.1: Список установленных модулей
**Описание**: Отображение всех установленных модулей DLE

**Что нужно сделать**:
- [ ] Получать список всех модулей из контракта
- [ ] Отображать для каждого модуля:
  - Название и описание
  - Адрес контракта модуля
  - Версию модуля
  - Статус (активен/неактивен)
  - Дата установки
- [ ] Показывать общую статистику модулей
- [ ] Добавить поиск и фильтрацию по модулям

**Время**: 6-8 часов

### Задача 4.2: Установка новых модулей
**Описание**: Добавление новых модулей через голосование

**Что нужно сделать**:
- [ ] Создать форму установки модуля с полями:
  - Название модуля
  - Адрес контракта модуля
  - Описание функциональности
  - Параметры инициализации
  - Причина установки
- [ ] Валидировать адрес контракта и совместимость
- [ ] Создавать предложение для установки модуля
- [ ] Показывать предварительную проверку модуля
- [ ] Добавить возможность тестирования модуля перед установкой

**Время**: 10-12 часов

### Задача 4.3: Управление модулями
**Описание**: Активация, деактивация и удаление модулей

**Что нужно сделать**:
- [ ] Добавить кнопки управления для каждого модуля:
  - Активировать/деактивировать
  - Обновить версию
  - Удалить модуль
- [ ] Создавать предложения для каждого действия
- [ ] Показывать зависимости между модулями
- [ ] Предупреждать о критических операциях
- [ ] Добавить возможность отката изменений

**Время**: 8-10 часов

### Задача 4.4: Интерфейсы модулей
**Описание**: Встраивание интерфейсов управления модулями

**Что нужно сделать**:
- [ ] Создать систему встраивания интерфейсов модулей
- [ ] Каждый модуль может предоставлять свой UI
- [ ] Безопасное взаимодействие между основным приложением и модулями
- [ ] Единообразный стиль для всех модулей
- [ ] Добавить документацию для разработчиков модулей

**Время**: 12-16 часов

---

## 5. БЛОК "DLE" (Интеграция с другими DLE) (`/management/dle`)

### Задача 5.1: Список подключенных DLE
**Описание**: Отображение DLE, с которыми установлена интеграция

**Что нужно сделать**:
- [ ] Показывать карточки всех подключенных DLE
- [ ] Для каждого DLE отображать:
  - Название и описание
  - Адрес контракта
  - Количество токенов этого DLE в нашем балансе
  - Процент голосов, который мы можем использовать
  - Статус подключения
- [ ] Добавить возможность удаления DLE из списка
- [ ] Показывать общую статистику интеграций

**Время**: 6-8 часов

### Задача 5.2: Добавление новых DLE
**Описание**: Подключение новых DLE для участия в их голосованиях

**Что нужно сделать**:
- [ ] Создать форму добавления DLE с полями:
  - Название DLE
  - Адрес контракта DLE
  - Описание и назначение
  - Причина подключения
- [ ] Валидировать адрес и проверять существование контракта
- [ ] Проверять баланс токенов этого DLE
- [ ] Создавать предложение для добавления DLE
- [ ] Показывать предварительную информацию о DLE

**Время**: 8-10 часов

### Задача 5.3: Участие в голосованиях других DLE
**Описание**: Голосование в предложениях других DLE через наш кворум

**Что нужно сделать**:
- [ ] Отображать активные предложения других DLE
- [ ] Показывать для каждого предложения:
  - Описание и тип операции
  - Наш возможный вес голоса
  - Текущий статус голосования
  - Время до истечения
- [ ] Создавать внутренние предложения для голосования в других DLE
- [ ] Собирать кворум подписей для внешнего голосования
- [ ] Отправлять голос в целевое DLE после достижения кворума

**Время**: 12-16 часов

### Задача 5.4: Встраивание интерфейсов управления
**Описание**: Управление другими DLE через встроенные интерфейсы

**Что нужно сделать**:
- [ ] Создать систему встраивания интерфейсов других DLE
- [ ] Безопасное отображение внешних интерфейсов в iframe
- [ ] Передача контекста аутентификации
- [ ] Обработка событий и обновлений
- [ ] Единообразный стиль и навигация
- [ ] Добавить возможность открытия в новой вкладке

**Время**: 16-20 часов

---

## 6. БЛОК "КАЗНА" (`/management/treasury`)

### Задача 6.1: Баланс казны
**Описание**: Отображение всех активов казны DLE

**Что нужно сделать**:
- [ ] Показывать балансы всех токенов в казне:
  - Нативные токены (ETH, MATIC, BNB и т.д.)
  - ERC-20 токены
  - NFT и другие активы
- [ ] Отображать общую стоимость в USD
- [ ] Показывать историю изменений баланса
- [ ] Добавить графики движения средств
- [ ] Подключать к контракту для получения актуальных данных

**Время**: 8-10 часов

### Задача 6.2: Операции с казной
**Описание**: Выполнение финансовых операций через кворум

**Что нужно сделать**:
- [ ] Создать формы для различных операций:
  - Отправка средств (нативные токены, ERC-20)
  - Получение средств
  - Обмен токенов
  - Инвестиции в DeFi протоколы
- [ ] Создавать предложения для каждой операции
- [ ] Валидировать балансы и права доступа
- [ ] Показывать предварительный расчет газа и комиссий
- [ ] Добавить подтверждение критических операций

**Время**: 12-16 часов

### Задача 6.3: Распределение дивидендов
**Описание**: Выплата дивидендов токен-холдерам

**Что нужно сделать**:
- [ ] Создать форму распределения дивидендов:
  - Выбор токена для выплаты
  - Общая сумма дивидендов
  - Пропорциональное распределение по балансам
- [ ] Показывать предварительный расчет выплат каждому держателю
- [ ] Создавать предложение для выплаты дивидендов
- [ ] Отслеживать статус выплат
- [ ] Показывать историю дивидендных выплат

**Время**: 10-12 часов

### Задача 6.4: Бюджетирование и отчеты
**Описание**: Планирование и контроль расходов казны

**Что нужно сделать**:
- [ ] Создать систему бюджетирования:
  - Установка лимитов расходов
  - Категоризация операций
  - Планирование расходов
- [ ] Генерировать отчеты:
  - Месячные/квартальные отчеты
  - Анализ доходов и расходов
  - Прогнозы движения средств
- [ ] Добавить уведомления о превышении лимитов
- [ ] Экспорт отчетов в PDF/CSV

**Время**: 12-16 часов

---

## 7. БЛОК "АНАЛИТИКА" (`/management/analytics`)

### Задача 7.1: Ключевые метрики
**Описание**: Отображение основных показателей DLE

**Что нужно сделать**:
- [ ] Показывать ключевые метрики:
  - Общая стоимость активов (TVL)
  - Количество активных участников
  - Количество предложений за период
  - Средняя доходность
- [ ] Добавить сравнение с предыдущими периодами
- [ ] Показывать тренды и изменения
- [ ] Подключать реальные данные из контрактов

**Время**: 8-10 часов

### Задача 7.2: Графики и визуализация
**Описание**: Создание интерактивных графиков и диаграмм

**Что нужно сделать**:
- [ ] Интегрировать библиотеку для графиков (Chart.js, D3.js)
- [ ] Создать графики:
  - Стоимость токенов во времени
  - Активность участников по дням/неделям
  - Распределение токенов между держателями
  - Движение средств в казне
- [ ] Добавить интерактивность (зум, фильтры, детализация)
- [ ] Реализовать экспорт графиков

**Время**: 12-16 часов

### Задача 7.3: Статистика и отчеты
**Описание**: Детальная аналитика и отчетность

**Что нужно сделать**:
- [ ] Создать разделы статистики:
  - Топ держателей токенов
  - Самые активные участники
  - История предложений и голосований
  - Финансовая статистика
- [ ] Добавить фильтры по периодам
- [ ] Создать настраиваемые дашборды
- [ ] Реализовать автоматическую генерацию отчетов

**Время**: 10-14 часов

### Задача 7.4: Прогнозирование и тренды
**Описание**: Анализ трендов и прогнозирование

**Что нужно сделать**:
- [ ] Анализировать исторические данные для выявления трендов
- [ ] Создавать прогнозы:
  - Движение стоимости токенов
  - Активность участников
  - Финансовые показатели
- [ ] Показывать аномалии и важные события
- [ ] Добавить уведомления о значимых изменениях

**Время**: 14-18 часов

---

## 8. БЛОК "ИСТОРИЯ" (`/management/history`)

### Задача 8.1: Лог всех операций
**Описание**: Отображение полной истории операций DLE

**Что нужно сделать**:
- [ ] Собирать и отображать все типы операций:
  - Создание и исполнение предложений
  - Операции с токенами
  - Казначейские операции
  - Изменения настроек
  - Модульные операции
- [ ] Для каждой операции показывать:
  - Тип и описание
  - Время выполнения
  - Участники
  - Статус выполнения
  - Ссылки на транзакции

**Время**: 10-12 часов

### Задача 8.2: Фильтрация и поиск
**Описание**: Удобный поиск и фильтрация истории

**Что нужно сделать**:
- [ ] Добавить фильтры по:
  - Типу операции
  - Периоду времени
  - Участникам
  - Статусу
  - Сетям
- [ ] Реализовать полнотекстовый поиск
- [ ] Добавить сохранение фильтров
- [ ] Создать быстрые фильтры (сегодня, неделя, месяц)

**Время**: 8-10 часов

### Задача 8.3: Детали операций
**Описание**: Подробная информация о каждой операции

**Что нужно сделать**:
- [ ] Создать модальные окна с деталями операций
- [ ] Показывать полную информацию:
  - Параметры операции
  - Участники и их роли
  - Результат выполнения
  - Ошибки и предупреждения
- [ ] Добавить ссылки на блокчейн-эксплореры
- [ ] Показывать связанные операции

**Время**: 8-10 часов

### Задача 8.4: Экспорт и отчеты
**Описание**: Экспорт истории в различные форматы

**Что нужно сделать**:
- [ ] Реализовать экспорт в форматы:
  - CSV для анализа в Excel
  - PDF для отчетов
  - JSON для интеграции
- [ ] Добавить настройки экспорта (период, типы операций)
- [ ] Создать шаблоны отчетов
- [ ] Добавить автоматическую отправку отчетов

**Время**: 6-8 часов

---

## 9. БЛОК "НАСТРОЙКИ" (`/management/settings`)

### Задача 9.1: Основные настройки DLE
**Описание**: Управление основной информацией о DLE

**Что нужно сделать**:
- [ ] Создать форму основных настроек:
  - Название DLE
  - Символ токена
  - Описание и назначение
  - Местонахождение
  - Веб-сайт
- [ ] Подключать к контракту для сохранения изменений
- [ ] Валидировать данные перед сохранением
- [ ] Показывать историю изменений

**Время**: 6-8 часов

### Задача 9.2: Настройки безопасности
**Описание**: Управление параметрами безопасности

**Что нужно сделать**:
- [ ] Создать форму настроек безопасности:
  - Минимальный кворум для голосования
  - Максимальная длительность предложений
  - Порог для экстренных действий
  - Задержка таймлока по умолчанию
  - Дополнительные настройки (делегирование, KYC)
- [ ] Добавить предупреждения о критических изменениях
- [ ] Создавать предложения для изменения настроек
- [ ] Показывать влияние изменений на безопасность

**Время**: 10-12 часов

### Задача 9.3: Настройки сети
**Описание**: Управление сетевыми параметрами

**Что нужно сделать**:
- [ ] Создать форму настроек сети:
  - Выбор поддерживаемых сетей
  - Сеть по умолчанию для governance
  - RPC endpoints для каждой сети
  - Настройки синхронизации
- [ ] Тестировать подключение к сетям
- [ ] Показывать статус каждой сети
- [ ] Добавить возможность добавления новых сетей

**Время**: 8-10 часов

### Задача 9.4: Резервное копирование
**Описание**: Экспорт и импорт настроек

**Что нужно сделать**:
- [ ] Реализовать экспорт всех настроек в JSON
- [ ] Создать импорт настроек из файла
- [ ] Валидировать импортируемые данные
- [ ] Добавить предварительный просмотр изменений
- [ ] Создать автоматическое резервное копирование

**Время**: 6-8 часов

### Задача 9.5: Опасная зона
**Описание**: Критические операции с DLE

**Что нужно сделать**:
- [ ] Создать раздел опасных операций:
  - Сброс настроек к значениям по умолчанию
  - Полное удаление DLE
  - Экстренная остановка операций
- [ ] Добавить множественные подтверждения
- [ ] Показывать последствия каждой операции
- [ ] Создать логирование критических действий

**Время**: 8-10 часов

---

## ОБЩИЕ ЗАДАЧИ ДЛЯ ВСЕХ БЛОКОВ

### Задача 0.1: Подготовка инфраструктуры
**Описание**: Настройка базовой инфраструктуры для всех блоков

**Что нужно сделать**:
- [ ] Настроить web3-провайдеры для всех поддерживаемых сетей
- [ ] Создать абстракции для работы с контрактами
- [ ] Настроить обработку ошибок и уведомления
- [ ] Создать систему кэширования данных
- [ ] Настроить мониторинг состояния сетей

**Время**: 16-20 часов

### Задача 0.2: Интеграция с контрактами
**Описание**: Подключение всех блоков к смарт-контрактам

**Что нужно сделать**:
- [ ] Создать интерфейсы для всех методов контрактов
- [ ] Реализовать обработку событий контрактов
- [ ] Настроить подписки на изменения состояния
- [ ] Добавить обработку ошибок транзакций
- [ ] Реализовать retry механизмы для неудачных транзакций

**Время**: 20-24 часа

### Задача 0.3: Тестирование и отладка
**Описание**: Комплексное тестирование всех функций

**Что нужно сделать**:
- [ ] Создать unit-тесты для всех компонентов
- [ ] Написать e2e тесты для основных сценариев
- [ ] Протестировать работу в разных сетях
- [ ] Провести нагрузочное тестирование
- [ ] Исправить найденные ошибки

**Время**: 24-32 часа

### Задача 0.4: Оптимизация и производительность
**Описание**: Улучшение производительности и пользовательского опыта

**Что нужно сделать**:
- [ ] Оптимизировать загрузку данных
- [ ] Добавить lazy loading для больших списков
- [ ] Реализовать кэширование на клиенте
- [ ] Оптимизировать размер бандла
- [ ] Добавить прогресс-индикаторы для длительных операций

**Время**: 16-20 часов

---

## ПРИОРИТЕТЫ РАЗРАБОТКИ

### Высокий приоритет (MVP)
1. Предложения - базовая функциональность
2. Токены DLE - основные операции
3. Кворум - текущие настройки
4. Настройки - основные параметры

### Средний приоритет
1. Казна - базовые операции
2. История - лог операций
3. Аналитика - ключевые метрики
4. Модули - список и управление

### Низкий приоритет
1. DLE - интеграция с другими DLE
2. Расширенная аналитика
3. Сложные отчеты
4. Встраивание интерфейсов

---

## ОЦЕНКА ВРЕМЕНИ

### Общее время разработки: 280-380 часов

**Разбивка по блокам:**
- Предложения: 32-46 часов
- Токены DLE: 24-32 часа
- Кворум: 18-24 часа
- Модули DLE: 36-46 часов
- DLE (интеграция): 42-54 часа
- Казна: 42-54 часа
- Аналитика: 44-58 часа
- История: 32-40 часов
- Настройки: 38-48 часов
- Общие задачи: 76-96 часов

**Рекомендации:**
- Начать с MVP (высокий приоритет)
- Разрабатывать параллельно несколько блоков
- Использовать готовые компоненты где возможно
- Регулярно тестировать интеграцию с контрактами 