ваше сообщение коммита

This commit is contained in:
2025-08-07 20:27:24 +03:00
parent cde35ac576
commit 0a72902c37
44 changed files with 3594 additions and 1447 deletions

108
docs/MODULE_ARCHITECTURE.md Normal file
View File

@@ -0,0 +1,108 @@
# Архитектура модулей DLE
## Обзор
DLE использует модульную архитектуру, где каждый модуль может иметь свои правила доступа и функциональность.
## Типы модулей
### 1. Простые модули (Вариант 1)
Модули сами проверяют права доступа токен-холдеров.
```solidity
contract SimpleModule {
address public dleContract;
modifier onlyDLEHolders() {
require(IERC20(dleContract).balanceOf(msg.sender) > 0, "Must hold DLE tokens");
_;
}
function someFunction() external onlyDLEHolders {
// Логика функции
}
}
```
### 2. Сложные модули (Вариант 3)
Модули работают через основной контракт DLE.
```solidity
contract ComplexModule {
address public dleContract;
function executeOperation(address caller, bytes calldata operation) external {
require(msg.sender == dleContract, "Only DLE can call");
require(IERC20(dleContract).balanceOf(caller) > 0, "Must hold tokens");
// Выполняем операцию
_executeOperation(caller, operation);
}
}
```
## Рекомендации по выбору
### Используйте Вариант 1 для:
- ✅ Простых операций (чтение данных)
- ✅ Модулей с минимальной логикой
- ✅ Быстрых операций
### Используйте Вариант 3 для:
- ✅ Сложных финансовых операций
- ✅ Модулей с критической логикой
- ✅ Операций, требующих аудита
## Примеры модулей
### TreasuryModule (Казна)
```solidity
contract TreasuryModule {
address public dleContract;
mapping(address => bool) public supportedTokens;
modifier onlyDLEHolders() {
require(IERC20(dleContract).balanceOf(msg.sender) > 0, "Must hold DLE tokens");
_;
}
function depositToken(address token, uint256 amount) external onlyDLEHolders {
require(supportedTokens[token], "Token not supported");
IERC20(token).transferFrom(msg.sender, address(this), amount);
}
function withdrawToken(address token, uint256 amount) external onlyDLEHolders {
require(supportedTokens[token], "Token not supported");
IERC20(token).transfer(msg.sender, amount);
}
}
```
### GovernanceModule (Управление)
```solidity
contract GovernanceModule {
address public dleContract;
function executeOperation(address caller, bytes calldata operation) external {
require(msg.sender == dleContract, "Only DLE can call");
require(IERC20(dleContract).balanceOf(caller) > 0, "Must hold tokens");
// Выполняем операцию управления
_executeGovernanceOperation(caller, operation);
}
}
```
## Безопасность
### Общие принципы:
1. **Всегда проверяйте** баланс токенов DLE
2. **Валидируйте входные данные** в модулях
3. **Используйте ReentrancyGuard** для финансовых операций
4. **Логируйте важные операции** через события
### Аудит модулей:
- Проверяйте права доступа
- Тестируйте граничные случаи
- Валидируйте входные параметры
- Проверяйте обработку ошибок

View File

@@ -50,6 +50,176 @@
---
## Многоагентная архитектура AI-ассистента
### 🎯 Главный AI-координатор
- **Роль:** Анализирует входящие сообщения и координирует работу специализированных агентов
- **Функции:**
- Определяет какие агенты нужны для обработки сообщения
- Собирает результаты от всех агентов
- Генерирует финальный персонализированный ответ
- Управляет контекстом беседы
### 🤖 Специализированные агенты
#### 1. Агент "Персонализация пользователя"
- **Задача:** Извлечение и управление персональными данными
- **Функции:**
- Извлекает имя из сообщений ("меня зовут Саша")
- Анализирует профиль пользователя (компания, должность, предпочтения)
- Отслеживает историю взаимодействий
- Определяет стадию в воронке продаж
- **Результат:** Персонализированный контекст для ответа
#### 2. Агент "Анализ запроса"
- **Задача:** Классификация и понимание сути обращения
- **Функции:**
- Определяет тип вопроса (техническая проблема, вопрос о цене, жалоба)
- Анализирует эмоциональное состояние клиента
- Выявляет скрытые потребности
- Определяет приоритетность запроса
- **Результат:** Структурированный анализ запроса
#### 3. Агент "RAG поиск"
- **Задача:** Поиск релевантной информации в базе знаний
- **Функции:**
- Векторный поиск по RAG базе
- Фильтрация по тегам пользователя
- Поиск похожих случаев и решений
- Извлечение контекстной информации
- **Результат:** Релевантные ответы и шаблоны
#### 4. Агент "Контекст беседы"
- **Задача:** Анализ истории взаимодействий
- **Функции:**
- Изучает предыдущие сообщения в беседе
- Анализирует все предыдущие обращения пользователя
- Определяет повторяющиеся темы и проблемы
- Отслеживает прогресс в решении задач
- **Результат:** Контекстная картина взаимодействия
#### 5. Агент "Детализация"
- **Задача:** Выяснение недостающей информации
- **Функции:**
- Формулирует уточняющие вопросы
- Определяет какие детали нужны для решения
- Адаптирует вопросы под контекст беседы
- Отслеживает ответы на уточняющие вопросы
- **Результат:** Структурированные уточняющие вопросы
#### 6. Агент "Персонализация ответа"
- **Задача:** Адаптация ответа под конкретного пользователя
- **Функции:**
- Учитывает стиль общения пользователя
- Адаптирует тон (формальный/неформальный)
- Использует имя и персональные данные
- Ссылается на предыдущие взаимодействия
- **Результат:** Персонализированный ответ
#### 7. Агент "Мультиязычность"
- **Задача:** Обработка многоязычных запросов
- **Функции:**
- Определяет язык входящего сообщения
- Ищет ответы на соответствующем языке
- Генерирует ответы на языке пользователя
- Адаптирует культурные особенности
- **Результат:** Локализованный ответ
#### 8. Агент "Мультимодальность"
- **Задача:** Обработка различных типов контента
- **Функции:**
- Анализ изображений, аудио, видео
- Извлечение текста из медиафайлов
- Поиск похожих медиа в базе знаний
- Генерация мультимодальных ответов
- **Результат:** Контекст из медиафайлов
### ⚙️ Логика работы многоагентной системы
#### Шаг 1: Получение сообщения
- Координатор получает входящее сообщение
- Анализирует базовый контекст
- Определяет необходимых агентов
#### Шаг 2: Параллельный запуск агентов
- Агент "Персонализация" → извлекает данные пользователя
- Агент "Анализ запроса" → классифицирует обращение
- Агент "RAG поиск" → ищет релевантную информацию
- Агент "Контекст" → анализирует историю
- Агент "Мультиязычность" → определяет язык
- Агент "Мультимодальность" → обрабатывает медиа
#### Шаг 3: Сбор и анализ результатов
- Координатор собирает данные от всех агентов
- Анализирует полноту информации
- Определяет необходимость дополнительных уточнений
#### Шаг 4: Генерация ответа
- Если информации достаточно → генерирует персонализированный ответ
- Если нужно уточнить → запускает агента "Детализация"
- Если требуется дополнительный контекст → запрашивает у других агентов
#### Шаг 5: Сохранение контекста
- Обновляет профиль пользователя
- Сохраняет контекст беседы
- Логирует использованные знания
### 🎨 Преимущества многоагентной архитектуры
1. **Модульность:** Каждый агент решает свою специализированную задачу
2. **Масштабируемость:** Легко добавлять новых агентов
3. **Эффективность:** Параллельная обработка разных аспектов
4. **Гибкость:** Разные комбинации агентов для разных ситуаций
5. **Персонализация:** Глубокое понимание каждого пользователя
6. **Качество:** Специализированная обработка каждого аспекта
---
## Персонализация на уровне аккаунта пользователя
### 👤 Профиль пользователя
- **Базовые данные:** Имя, компания, должность, контактная информация
- **История взаимодействий:** Все предыдущие обращения и решения
- **Предпочтения:** Стиль общения, технический уровень, приоритеты
- **Статус:** Стадия в воронке продаж, статус клиента
- **Теги:** Категории, сегменты, специализации
### 📊 Контекстная картина
- **Текущая беседа:** Сообщения в рамках одной сессии
- **История обращений:** Все предыдущие взаимодействия
- **Решенные проблемы:** Успешно закрытые задачи
- **Открытые вопросы:** Незавершенные обращения
- **Эмоциональное состояние:** Тон и настроение клиента
### 🎯 Алгоритм персонализации
#### 1. Анализ входящего сообщения
- Определение типа обращения
- Извлечение ключевой информации
- Анализ эмоционального контекста
#### 2. Загрузка профиля пользователя
- Получение персональных данных
- Анализ истории взаимодействий
- Определение текущего статуса
#### 3. Поиск в RAG базе
- Фильтрация по тегам пользователя
- Поиск релевантных решений
- Анализ похожих случаев
#### 4. Формирование контекста
- Объединение данных профиля и истории
- Анализ текущей ситуации
- Определение оптимального подхода
#### 5. Генерация персонализированного ответа
- Учет персональных данных
- Адаптация под стиль общения
- Ссылки на предыдущие взаимодействия
---
## Этап 1. Проектирование и подготовка инфраструктуры
1. **Проектирование схемы хранения знаний (RAG):**
- Описать структуру таблицы `knowledge_documents` (миграция).
@@ -69,7 +239,26 @@
---
## Этап 3. Интеграция RAG в pipeline ассистента
## Этап 3. Разработка многоагентной архитектуры
1. **Создание базовой структуры агентов:**
- Реализовать главный AI-координатор
- Создать базовые классы для специализированных агентов
- Настроить систему координации между агентами
2. **Разработка специализированных агентов:**
- Агент "Персонализация пользователя"
- Агент "Анализ запроса"
- Агент "RAG поиск"
- Агент "Контекст беседы"
- Агент "Детализация"
- Агент "Персонализация ответа"
3. **Интеграция с существующей системой:**
- Подключение агентов к текущему pipeline
- Настройка логирования и мониторинга
- Тестирование взаимодействия агентов
---
## Этап 4. Интеграция RAG в pipeline ассистента
1. **Модификация логики ответа ассистента:**
- При получении сообщения пользователя — искать релевантные знания и включать их в prompt LLM.
- Обеспечить мультиязычность поиска и генерации ответа.
@@ -78,7 +267,7 @@
---
## Этап 4. Интерфейс для админа
## Этап 5. Интерфейс для админа
1. **UI для управления знаниями:**
- Добавить на фронте раздел для просмотра, добавления, редактирования и удаления знаний.
2. **UI для модерации ответов ассистента:**
@@ -87,7 +276,7 @@
---
## Этап 5. Поддержка мультимодальности и мультиязычности
## Этап 6. Поддержка мультимодальности и мультиязычности
1. **Обработка вложений (аудио, видео, картинки):**
- Решить, как хранить и индексировать такие данные (например, хранить ссылки и метаданные, а не сами файлы).
2. **Мультиязычный поиск и генерация:**
@@ -95,7 +284,7 @@
---
## Этап 6. Тестирование и оптимизация
## Этап 7. Тестирование и оптимизация
1. **Покрытие тестами ключевых сценариев (unit, интеграционные).**
2. **Оптимизация скорости поиска и генерации.**
3. **Документация для команды.**

View File

@@ -25,7 +25,8 @@ DLE.sol (Один контракт)
├── Система голосования (проверка баланса токенов)
├── Мультиподпись (через токен-холдеров)
├── Модули (добавляемые через голосование)
── Мультичейн синхронизация
── Мультичейн синхронизация
└── Полное управление данными DLE через кворум
```
### Требования
@@ -42,7 +43,7 @@ DLE.sol (Один контракт)
- **Описание**: Процент от общего количества токенов для принятия решений
- **Функции**:
- Настройка кворума при создании DLE
- Изменение кворума через голосование
- **Изменение кворума через голосование** ✅
- Расчет кворума: `(totalSupply * quorumPercentage) / 100`
- Проверка достижения кворума для каждого решения
@@ -55,7 +56,21 @@ DLE.sol (Один контракт)
- Выполнение предложений после достижения кворума
- **НЕТ админских ролей - только коллективное управление**
#### 4. Мультиподпись через токен-холдеров
#### 4. Полное управление данными DLE через кворум ✅
- **Описание**: Все данные DLE можно изменить через систему голосования
- **Функции**:
- **Изменение названия DLE** через кворум
- **Изменение символа токена** через кворум
- **Изменение местонахождения** через кворум
- **Изменение координат** через кворум
- **Изменение юрисдикции** через кворум
- **Изменение ОКТМО** через кворум
- **Изменение КПП** через кворум
- **Изменение кодов ОКВЭД** через кворум
- **Изменение процента кворума** через кворум
- **Изменение текущей цепочки** через кворум
#### 5. Мультиподпись через токен-холдеров
- **Описание**: Система подписей для критических операций
- **Функции**:
- Подписание операций токен-холдерами
@@ -63,7 +78,7 @@ DLE.sol (Один контракт)
- Сбор подписей до достижения кворума
- Выполнение операций после сбора подписей
#### 5. Казначейские функции
#### 6. Казначейские функции
- **Описание**: Управление финансами DLE через голосование
- **Функции**:
- Внесение токенов в казну
@@ -71,7 +86,7 @@ DLE.sol (Один контракт)
- Распределение дивидендов
- Бюджетирование через предложения
#### 6. Модульная система
#### 7. Модульная система
- **Описание**: Добавление новых функций через модули
- **Функции**:
- Добавление модулей через голосование
@@ -79,7 +94,7 @@ DLE.sol (Один контракт)
- Изоляция модулей от основного контракта
- Обновление модулей через голосование
#### 7. Коммуникационные функции
#### 8. Коммуникационные функции
- **Описание**: Прием сообщений и звонков
- **Функции**:
- Прием текстовых сообщений
@@ -98,6 +113,114 @@ DLE может владеть токенами других DLE и участв
3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум мультиподписей** внутри **DLE A**
4. После достижения кворума подписей **DLE A** может голосовать в **DLE B** как единое целое
### Новые возможности изменения данных DLE ✅
#### 1. Обновление основной информации DLE
```solidity
function _updateDLEInfo(
string memory _name,
string memory _symbol,
string memory _location,
string memory _coordinates,
uint256 _jurisdiction,
uint256 _oktmo,
string[] memory _okvedCodes,
uint256 _kpp
) internal
```
#### 2. Изменение процента кворума
```solidity
function _updateQuorumPercentage(uint256 _newQuorumPercentage) internal
```
#### 3. Изменение текущей цепочки
```solidity
function _updateCurrentChainId(uint256 _newChainId) internal
```
#### 4. События для отслеживания изменений
```solidity
event DLEInfoUpdated(string name, string symbol, string location, string coordinates, uint256 jurisdiction, uint256 oktmo, string[] okvedCodes, uint256 kpp);
event QuorumPercentageUpdated(uint256 oldQuorumPercentage, uint256 newQuorumPercentage);
event CurrentChainIdUpdated(uint256 oldChainId, uint256 newChainId);
```
### Процесс изменения данных DLE
#### 1. Создание предложения
- Любой токен-холдер создает предложение об изменении данных
- Выбирает цепочку для сбора голосов
- Указывает новые значения для изменения
#### 2. Голосование
- Токен-холдеры голосуют за/против изменения
- Голосующая сила = количество токенов
- Проверка баланса при каждом голосе
#### 3. Исполнение
- При достижении кворума предложение исполняется
- Данные DLE обновляются
- Событие эмитится для отслеживания
#### 4. Синхронизация
- Изменения синхронизируются во все поддерживаемые цепочки
- Merkle proofs обеспечивают безопасность cross-chain операций
### Примеры использования
#### Изменение названия DLE
```
1. Создание предложения: "Изменить название на 'Новое DLE'"
2. Голосование в выбранной цепочке
3. При кворуме: обновление названия
4. Синхронизация во все цепочки
```
#### Изменение кворума
```
1. Создание предложения: "Изменить кворум с 51% на 60%"
2. Голосование в выбранной цепочке
3. При кворуме: обновление процента кворума
4. Синхронизация во все цепочки
```
#### Изменение текущей цепочки
```
1. Создание предложения: "Изменить текущую цепочку на Polygon"
2. Голосование в выбранной цепочке
3. При кворуме: обновление currentChainId
4. Синхронизация во все цепочки
```
### Безопасность
#### Валидация данных
- Проверка корректности всех входящих данных
- Валидация адресов и числовых значений
- Проверка поддержки цепочек перед изменением
#### Защита от злоупотреблений
- Все изменения только через кворум
- Проверка баланса токенов при голосовании
- Merkle proofs для cross-chain безопасности
#### Аудит изменений
- Все изменения логируются в событиях
- Возможность отслеживания истории изменений
- Прозрачность всех операций
### Иерархическая система голосования DLE
#### Концепция
DLE может владеть токенами других DLE и участвовать в их голосовании через систему кворума подписей.
#### Механизм работы
1. **DLE A** владеет токенами **DLE B**
2. **Голос DLE A** в **DLE B** прямо пропорционален количеству токенов **DLE B** на балансе **DLE A**
3. Для участия в голосовании **DLE B** холдеры **DLE A** должны собрать **кворум мультиподписей** внутри **DLE A**
4. После достижения кворума подписей **DLE A** может голосовать в **DLE B** как единое целое
#### Пример
- **DLE A** владеет **10% токенов DLE B**
- Кворум в **DLE B** = **51%**