From c02d0a38ac63a1fdf0046435b201cd3ddf54f834 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 23 Dec 2025 12:25:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=B0=D1=88=D0=B5=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC?= =?UTF-8?q?=D0=B8=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/routes/pages.js | 105 +++ docs/application-overview.md | 884 ------------------ frontend/nginx-simple.conf | 23 +- frontend/src/components/ChatInterface.vue | 78 +- frontend/src/components/Sidebar.vue | 3 + frontend/src/components/docs/DocsContent.vue | 101 +- frontend/src/views/AdminChatView.vue | 51 + frontend/src/views/ConnectWalletView.vue | 93 ++ frontend/src/views/ContactsView.vue | 20 + frontend/src/views/ContentPageView.vue | 20 - frontend/src/views/CrmView.vue | 7 - frontend/src/views/HomeView.vue | 7 - frontend/src/views/ManagementView.vue | 6 - frontend/src/views/PersonalMessagesView.vue | 61 ++ frontend/src/views/SettingsView.vue | 4 +- frontend/src/views/VdsManagementView.vue | 2 - .../src/views/content/ContentListView.vue | 132 ++- .../src/views/content/ContentSettingsView.vue | 147 ++- .../src/views/content/InternalListView.vue | 8 +- frontend/src/views/content/PageView.vue | 32 - .../src/views/content/PublicPagesView.vue | 7 - .../src/views/content/PublishedListView.vue | 35 +- .../src/views/content/TemplatesListView.vue | 10 +- .../SystemMessagesTableView.vue | 3 +- frontend/src/views/groups/GroupsView.vue | 8 - .../views/settings/SecuritySettingsView.vue | 7 - .../src/views/settings/SettingsIndexView.vue | 7 - .../smartcontracts/AddModuleFormView.vue | 19 +- .../views/smartcontracts/AnalyticsView.vue | 16 +- .../smartcontracts/CreateProposalView.vue | 19 +- .../DleBlocksManagementView.vue | 13 +- .../smartcontracts/DleManagementView.vue | 5 - .../views/smartcontracts/DleProposalsView.vue | 8 +- .../src/views/smartcontracts/HistoryView.vue | 16 +- .../src/views/smartcontracts/ModulesView.vue | 31 +- .../src/views/smartcontracts/SettingsView.vue | 19 +- frontend/vite.config.js | 7 + 37 files changed, 883 insertions(+), 1131 deletions(-) delete mode 100644 docs/application-overview.md diff --git a/backend/routes/pages.js b/backend/routes/pages.js index 2eec0fd..7ea16cd 100644 --- a/backend/routes/pages.js +++ b/backend/routes/pages.js @@ -1553,4 +1553,109 @@ router.get('/public/:id', async (req, res) => { } }); +// Endpoint для robots.txt +router.get('/public/robots.txt', async (req, res) => { + try { + const domain = req.get('host') || req.headers.host || 'localhost'; + const protocol = req.protocol || 'https'; + const baseUrl = `${protocol}://${domain}`; + + const robotsContent = `User-agent: * +Allow: / +Allow: /content/published +Disallow: /api/ +Disallow: /ws +Disallow: /admin/ +Disallow: /content/create +Disallow: /content/edit + +Sitemap: ${baseUrl}/sitemap.xml +`; + + res.setHeader('Content-Type', 'text/plain'); + res.send(robotsContent); + } catch (error) { + console.error('Ошибка генерации robots.txt:', error); + res.status(500).send('Error generating robots.txt'); + } +}); + +// Endpoint для sitemap.xml +router.get('/public/sitemap.xml', async (req, res) => { + try { + const tableName = `admin_pages_simple`; + const domain = req.get('host') || req.headers.host || 'localhost'; + const protocol = req.protocol || 'https'; + const baseUrl = `${protocol}://${domain}`; + + // Проверяем, есть ли таблица + const existsRes = await db.getQuery()( + `SELECT to_regclass($1) as exists`, [tableName] + ); + + let pages = []; + if (existsRes.rows[0].exists) { + // Получаем все опубликованные публичные страницы + const { rows } = await db.getQuery()(` + SELECT id, title, updated_at, created_at + FROM ${tableName} + WHERE status = 'published' AND visibility = 'public' + ORDER BY created_at DESC + `); + pages = rows; + } + + // Генерируем XML sitemap + let sitemap = ` + + + ${baseUrl}/ + daily + 1.0 + + + ${baseUrl}/content/published + daily + 0.8 + +`; + + // Добавляем страницы документов + for (const page of pages) { + const lastmod = page.updated_at || page.created_at || new Date().toISOString(); + const pageUrl = `${baseUrl}/content/published?page=${page.id}`; + + sitemap += ` + ${escapeXml(pageUrl)} + ${lastmod.split('T')[0]} + weekly + 0.6 + +`; + } + + sitemap += ``; + + res.setHeader('Content-Type', 'application/xml'); + res.send(sitemap); + } catch (error) { + console.error('Ошибка генерации sitemap.xml:', error); + res.status(500).send('Error generating sitemap.xml'); + } +}); + +// Вспомогательная функция для экранирования XML +function escapeXml(unsafe) { + return unsafe.replace(/[<>&'"]/g, (c) => { + switch (c) { + case '<': return '<'; + case '>': return '>'; + case '&': return '&'; + case '\'': return '''; + case '"': return '"'; + default: return c; + } + }); +} + module.exports = router; \ No newline at end of file diff --git a/docs/application-overview.md b/docs/application-overview.md deleted file mode 100644 index ef68549..0000000 --- a/docs/application-overview.md +++ /dev/null @@ -1,884 +0,0 @@ - - -# Обзор приложения Digital Legal Entity (DLE) - -## 📋 Содержание - -1. [Установка приложения](#установка-приложения) -2. [Настройка безопасности](#настройка-безопасности) -3. [Модули и микросервисная архитектура](#модули-и-микросервисная-архитектура) -4. [Корпоративный мессенджер с ИИ ассистентом](#корпоративный-мессенджер-с-ии-ассистентом) -5. [Настройки приложения для работы с интернет пользователями](#настройки-приложения-для-работы-с-интернет-пользователями) -6. [Требования регулятора](#требования-регулятора) -7. [Обновления софта](#обновления-софта) - ---- - -## 🚀 Установка приложения - -### Быстрый старт - -Digital Legal Entity (DLE) разворачивается с помощью Docker Compose, что обеспечивает простую и надежную установку на любой платформе. - -### Системные требования - -**Минимальные требования**: -- **CPU**: 4 ядра -- **RAM**: 12 GB (4 GB приложение + 6 GB AI + 2 GB Vector Search) -- **Хранилище**: 100 GB SSD -- **ОС**: Ubuntu 20.04+, Debian 11+, CentOS 8+, любая Linux с Docker -- **Docker**: версия 20.10+ -- **Docker Compose**: версия 2.0+ - -### Процесс установки - -Для Linux/macOS/WSL: -```bash -curl -fsSL https://raw.githubusercontent.com/VC-HB3-Accelerator/DLE/main/setup.sh | bash -``` - -Скрипт автоматически: -- Скачивает последние артефакты из релиза -- Разворачивает `docker-data` -- Настраивает необходимые конфигурации - - -### Компоненты системы - -После установки запускаются следующие сервисы: - -| Сервис | Описание | Порт | -|--------|----------|------| -| **PostgreSQL** | База данных с расширением pgvector | Внутренний | -| **Ollama** | Локальный AI сервер | Внутренний (11434) | -| **Vector Search** | Сервис векторного поиска (RAG) | Внутренний (8001) | -| **Backend** | Node.js API сервер | Внутренний (8000) | -| **Frontend (Nginx)** | Веб-интерфейс | 9000 (HTTP) - -### Доступ к приложению - -После успешного запуска приложение доступно по адресу: -- **Production**: `http://localhost:9000` (HTTP) - -### Первоначальная настройка - -1. Откройте приложение в браузере -2. Подключите крипто-кошелек (MetaMask, WalletConnect) -3. Настройте RPC провайдеры в разделе **Настройки → Безопасность** -4. Настройте смарт-контракты в разделе **Настройки → Блокчейн** - -> 💡 **Подробная инструкция**: См. [Инструкция по установке](./setup-instruction.md) для пошаговой настройки всех компонентов. - ---- - -## 🔒 Настройка безопасности - -### Многоуровневая модель безопасности - -DLE использует комплексный подход к безопасности на всех уровнях архитектуры: - -``` -┌─────────────────────────────────────────────────────────────┐ -│ Уровни защиты DLE │ -├─────────────────────────────────────────────────────────────┤ -│ │ -│ Уровень 1: Блокчейн (Неизменяемая база) │ -│ • Смарт-контракт DLE (проверен, иммутабельный) │ -│ • Токены управления (ERC20Votes) │ -│ • История всех операций на блокчейне │ -│ • Невозможность изменения правил без голосования │ -│ │ -│ Уровень 2: Веб-приложение (Backend) │ -│ • Проверка токенов в реальном времени │ -│ • Аутентификация через кошелек (SIWE) │ -│ • Шифрование данных (AES-256) │ -│ • Rate limiting и защита от DDoS │ -│ │ -│ Уровень 3: Frontend (Vue.js) │ -│ • Подключение к кошельку │ -│ • Подпись транзакций │ -│ • XSS защита (DOMPurify) │ -│ • CSRF токены │ -│ │ -│ Уровень 4: Пользователь │ -│ • Приватный ключ кошелька (MetaMask, WalletConnect) │ -│ • Подтверждение каждой операции │ -│ │ -└─────────────────────────────────────────────────────────────┘ -``` - -### Настройка безопасности - -#### 1. Настройка RPC провайдеров - -**Путь**: Настройки → Безопасность → RPC провайдеры - -Для каждой блокчейн-сети необходимо добавить RPC провайдера: -- **Network Name**: Название сети (Ethereum, Polygon, BSC и т.д.) -- **RPC URL**: URL подключения (например: `https://eth-mainnet.g.alchemy.com/v2/YOUR-API-KEY`) -- **Network ID**: Chain ID сети - -> ⚠️ **Важно**: Получите API ключи от провайдеров (Alchemy, Infura, Quicknode и т.д.) перед добавлением. - -#### 2. Настройка смарт-контрактов - -**Путь**: Настройки → Блокчейн - -Настройте адреса смарт-контрактов для каждой сети: -- **Factory Address**: Адрес фабрики контрактов -- **Core Contract Address**: Адрес основного контракта DLE - -#### 3. Настройка шифрования - -Все чувствительные данные шифруются с использованием AES-256: -- Персональные данные пользователей -- Идентификаторы гостей -- Приватные сообщения -- Ключи шифрования хранятся в защищенном хранилище - -#### 4. Управление доступом - -Система ролей и разрешений: -- **Guest**: Базовый доступ, чат с AI -- **User**: Полный доступ к коммуникациям -- **ReadOnly**: Просмотр данных без редактирования -- **Editor**: Полный доступ ко всем функциям - -#### 5. Аудит и мониторинг - -- Все действия логируются -- Audit trail для критичных операций -- Мониторинг подозрительной активности -- Уведомления о важных событиях - -> 💡 **Подробная информация**: См. [Безопасность DLE](./security.md) для детального описания всех уровней защиты, сценариев атак и рекомендаций. - ---- - -## 🏗️ Модули и микросервисная архитектура - -### Архитектура системы - -DLE построен на принципах микросервисной архитектуры, что обеспечивает: -- ✅ Легкое масштабирование отдельных компонентов -- ✅ Независимое развертывание сервисов -- ✅ Высокую отказоустойчивость -- ✅ Гибкость в разработке и поддержке - -### Основные сервисы - -#### 1. PostgreSQL (База данных) -- **Назначение**: Хранение всех данных приложения -- **Особенности**: Расширение pgvector для векторного поиска -- **Масштабирование**: Репликация, шардирование - -#### 2. Ollama (AI сервер) -- **Назначение**: Локальный AI для генерации ответов -- **Модель**: qwen2.5:7b (настраивается) -- **Особенности**: 100% конфиденциальность, работа offline -- **Ресурсы**: 6 GB RAM, 2 CPU cores - -#### 3. Vector Search (RAG сервис) -- **Назначение**: Векторный поиск для контекстных ответов AI -- **Технология**: FAISS, pgvector -- **Модель эмбеддингов**: mxbai-embed-large:latest -- **Особенности**: Семантический поиск по документам - -#### 4. Backend (Node.js API) -- **Назначение**: Основной API сервер -- **Технологии**: Express.js, WebSocket -- **Функции**: - - Обработка запросов - - Управление сообщениями - - Интеграция с блокчейном - - Управление пользователями - -#### 5. Frontend (Vue.js) -- **Назначение**: Пользовательский интерфейс -- **Технологии**: Vue 3, Vite, Element Plus -- **Особенности**: SPA, адаптивный дизайн - -### Модульная система - -DLE поддерживает расширение функциональности через модули: - -#### Доступные модули - -1. **HierarchicalVotingModule** - - Иерархическое голосование - - Делегирование голосов - - Сложные сценарии управления - -2. **Custom Modules** - - Возможность добавления собственных модулей - - Интеграция через смарт-контракты - - Управление через голосование токен-холдеров - -#### Добавление модулей - -Модули добавляются через: -1. Голосование токен-холдеров -2. Деплой смарт-контракта модуля -3. Регистрация в основном контракте DLE - -### Коммуникация между сервисами - -``` -┌─────────────┐ -│ Frontend │ -│ (Vue.js) │ -└──────┬──────┘ - │ HTTP/WebSocket - ▼ -┌─────────────┐ ┌──────────────┐ ┌─────────────┐ -│ Backend │──────│ PostgreSQL │ │ Ollama │ -│ (Node.js) │ │ (pgvector) │ │ (AI Server)│ -└──────┬──────┘ └──────────────┘ └─────────────┘ - │ - │ HTTP - ▼ -┌─────────────┐ -│Vector Search│ -│ (RAG) │ -└─────────────┘ -``` - -### Масштабирование - -Каждый сервис может масштабироваться независимо: -- **Горизонтальное масштабирование**: Добавление инстансов -- **Вертикальное масштабирование**: Увеличение ресурсов -- **Балансировка нагрузки**: Nginx, HAProxy - -> 💡 **Подробная информация**: См. [Техническая документация по блокчейну](./blockchain-integration-technical.md) для информации о модульной системе смарт-контрактов. - ---- - -## 💬 Корпоративный мессенджер с ИИ ассистентом - -### Обзор функциональности - -DLE включает полнофункциональный корпоративный мессенджер с интегрированным AI ассистентом, который обеспечивает: -- Единый интерфейс для всех каналов коммуникации -- Автоматические ответы с помощью AI -- Контекстное понимание истории общения -- Многоканальную поддержку клиентов - -### Каналы коммуникации - -#### 1. Веб-чат -- Публичный чат на сайте -- Приватные сообщения между пользователями -- Административный чат для связи с клиентами - -#### 2. Telegram бот -- Интеграция с Telegram -- Автоматические ответы через AI -- Синхронизация с веб-интерфейсом - -#### 3. Email -- Обработка входящих писем -- Автоматические ответы -- Интеграция с CRM - - -### ИИ ассистент - -#### Возможности AI ассистента - -**Локальный AI на вашем сервере**: -- Модель: qwen2.5:7b (настраивается) -- Технология: Ollama + Vector Search (RAG) -- Конфиденциальность: 100% (данные не покидают сервер) -- Стоимость: $0 (без лимитов на запросы) - -#### Функции AI ассистента - -1. **Автоматические ответы** - - Генерация ответов на основе контекста - - Обучение на ваших документах - - Персонализация под ваш бизнес - -2. **Анализ настроения** - - Определение эмоционального тона сообщений - - Приоритизация запросов - - Эскалация критичных ситуаций - -3. **Контекстный поиск** - - Поиск информации в базе знаний - - Использование истории общения - - Ссылки на релевантные документы - -4. **Многозадачность** - - Обработка нескольких запросов одновременно - - Очередь запросов - - Приоритизация важных сообщений - -#### Настройка AI ассистента - -**Путь**: Настройки → AI Ассистент - -1. **Базовая настройка** - - Выбор модели AI - - Настройка температуры генерации - - Лимиты токенов - -2. **Правила и контекст** - - Добавление правил поведения - - Загрузка документов для обучения - - Настройка тона общения - -3. **Векторный поиск** - - Индексация документов - - Настройка релевантности - - Обновление базы знаний - -### Типы чатов - -#### 1. Публичный чат -- Доступен всем пользователям -- AI может отвечать автоматически -- Модерация сообщений - -#### 2. Приватный чат -- Личные сообщения между пользователями -- Шифрование контента -- История переписки - -#### 3. Административный чат -- Связь администраторов с клиентами -- Управление через веб-интерфейс -- Интеграция с CRM - -#### 4. Гостевой чат -- Для неавторизованных пользователей -- Ограниченный функционал -- Требуется согласие на обработку данных - -### Управление сообщениями - -- **История**: Полная история всех сообщений -- **Поиск**: Поиск по содержимому, отправителю, дате -- **Фильтры**: По каналам, типам, статусам -- **Экспорт**: Выгрузка переписки в различных форматах - -> 💡 **Подробная информация**: См. [AI Ассистент](./ai-assistant.md) для полного описания возможностей и [Настройка AI ассистента](./setup-ai-assistant.md) для инструкций по настройке. - ---- - -## 🌐 Настройки приложения для работы с интернет пользователями - -### Работа с гостями (неавторизованными пользователями) - -DLE поддерживает работу с интернет-пользователями без обязательной регистрации, обеспечивая при этом соответствие требованиям регуляторов. - -#### Роли и права доступа - -**Guest (Гость)**: -- ✅ Просмотр главной страницы -- ✅ Чат с AI ассистентом -- ❌ Отправка сообщений пользователям -- ❌ Доступ к CRM и данным - -**User (Пользователь)**: -- ✅ Все права гостя -- ✅ Получение сообщений -- ✅ Отправка сообщений другим пользователям -- ✅ Просмотр контактов -- ✅ Приватный чат с администраторами -- ✅ Просмотр базовых документов - -#### Настройка гостевого доступа - -**Путь**: Настройки → Пользователи → Гостевой доступ - -1. **Включение гостевого режима** - - Разрешить доступ без регистрации - - Настройка ограничений - - Лимиты на использование - -2. **Сбор согласий** - - Автоматический запрос согласия на обработку ПД - - Политика конфиденциальности - - Пользовательское соглашение - - Политика использования cookies - -3. **Идентификация гостей** - - Уникальные идентификаторы - - Шифрование данных - - Анонимизация при необходимости - -### Обработка персональных данных - -#### Согласие на обработку ПД - -При первом обращении гостя система: -1. Показывает политику конфиденциальности -2. Запрашивает согласие на обработку ПД -3. Сохраняет факт согласия с временной меткой -4. Предоставляет доступ к функциям - -#### Управление согласиями - -**Путь**: Настройки → Контент → Юридические документы - -- Просмотр всех согласий -- Экспорт данных по запросу -- Удаление данных при отзыве согласия -- История изменений согласий - -### Публичные документы - -#### Обязательные документы для публичного доступа - -1. **Политика конфиденциальности** - - Описание обработки ПД - - Права пользователей - - Контакты для обращений - -2. **Пользовательское соглашение** - - Условия использования сервиса - - Права и обязанности - - Ограничения ответственности - -3. **Согласие на обработку персональных данных** - - Форма согласия - - Информация о целях обработки - - Возможность отзыва - -4. **Политика использования cookies** - - Типы используемых cookies - - Цели использования - - Управление настройками - -#### Публикация документов - -**Путь**: Контент → Шаблоны - -1. Выберите необходимые шаблоны -2. Предварительный просмотр с автозаполнением -3. Редактирование специфичных параметров -4. Публикация: - - **Публичное использование**: Доступно на сайте - - **Внутреннее использование**: Только в CRM - - **Печать**: Экспорт в PDF - -### Настройки веб-интерфейса - -#### Публичные страницы - -- **Главная страница**: Информация о сервисе -- **Чат**: Публичный чат с AI -- **Контакты**: Форма обратной связи -- **Документы**: Публичные юридические документы - -#### Интеграция с сайтом - -DLE может быть интегрирован на ваш сайт: -- Виджет чата -- Формы обратной связи -- API для кастомных решений - -### Управление контактами - -#### Автоматическое создание контактов - -При обращении гостя система: -1. Создает контакт в CRM -2. Присваивает уникальный идентификатор -3. Сохраняет канал коммуникации -4. Записывает историю взаимодействий - -#### Объединение контактов - -Если один пользователь обращается через разные каналы: -- Автоматическое определение дубликатов -- Объединение в единый контакт -- Единая история коммуникаций - -> 💡 **Важно**: Все настройки для работы с интернет-пользователями должны соответствовать требованиям регуляторов (см. раздел "Требования регулятора"). - ---- - -## ⚖️ Требования регулятора - -### Соответствие законодательству - -DLE разработан с учетом требований основных регуляторов по защите персональных данных и обеспечению прозрачности работы с пользователями. - -### GDPR (General Data Protection Regulation) - -**Европейское законодательство о защите данных** - -#### Основные требования и их реализация: - -1. **Право на информацию** ✅ - - Политика конфиденциальности доступна на сайте - - Прозрачная информация о целях обработки данных - - Контакты контролера данных - -2. **Право на доступ** ✅ - - Пользователи могут запросить копию своих данных - - Экспорт данных в структурированном формате - - История обработки данных - -3. **Право на исправление** ✅ - - Редактирование персональных данных - - Обновление информации в профиле - - Корректировка неточных данных - -4. **Право на удаление ("право быть забытым")** ✅ - - Удаление данных по запросу - - Отзыв согласия на обработку - - Полное удаление из системы - -5. **Право на ограничение обработки** ✅ - - Временная блокировка обработки - - Сохранение данных без использования - - Уведомление о снятии ограничений - -6. **Право на переносимость данных** ✅ - - Экспорт данных в машиночитаемом формате - - Передача данных другому контролеру - - Структурированные форматы (JSON, CSV) - -7. **Право на возражение** ✅ - - Отказ от обработки данных - - Отзыв согласия - - Остановка маркетинговых рассылок - -8. **Автоматизированное принятие решений** ✅ - - Прозрачность использования AI - - Возможность человеческого вмешательства - - Объяснение логики решений - -### CCPA (California Consumer Privacy Act) - -**Калифорнийский закон о защите конфиденциальности** - -#### Основные требования: - -1. **Право знать** ✅ - - Информация о собираемых данных - - Цели использования данных - - Категории третьих сторон - -2. **Право на удаление** ✅ - - Удаление персональных данных - - Исключения для бизнес-нужд - - Подтверждение удаления - -3. **Право на отказ от продажи** ✅ - - DLE не продает данные пользователей - - Прозрачная политика - - Механизм отказа - -4. **Недискриминация** ✅ - - Равный доступ к сервису - - Отсутствие штрафов за использование прав - - Справедливое ценообразование - -### 152-ФЗ (Российское законодательство) - -**Федеральный закон "О персональных данных"** - -#### Основные требования: - -1. **Согласие на обработку** ✅ - - Явное согласие субъекта ПД - - Информированное согласие - - Возможность отзыва - -2. **Уведомление Роскомнадзора** ✅ - - Документация для уведомления - - Описание целей обработки - - Меры безопасности - -3. **Локализация данных** ✅ - - Хранение на серверах в РФ (опционально) - - Контроль местоположения данных - - Соответствие требованиям - -4. **Права субъектов ПД** ✅ - - Доступ к данным - - Исправление данных - - Удаление данных - - Отзыв согласия - -5. **Меры безопасности** ✅ - - Шифрование данных - - Контроль доступа - - Аудит действий - - Резервное копирование - -### Готовые документы для регулятора - -DLE включает готовый пакет документов, необходимых для соответствия требованиям: - -#### 1. Политика конфиденциальности -- Описание обработки ПД -- Права пользователей -- Контакты контролера -- Механизмы реализации прав - -#### 2. Пользовательское соглашение -- Условия использования -- Права и обязанности сторон -- Ограничения ответственности -- Разрешение споров - -#### 3. Согласие на обработку персональных данных -- Форма согласия -- Цели обработки -- Сроки хранения -- Право отзыва - -#### 4. Политика использования cookies -- Типы cookies -- Цели использования -- Управление настройками -- Отключение cookies - -#### 5. Документация для Роскомнадзора -- Описание системы обработки ПД -- Меры безопасности -- Технические характеристики -- Процедуры обработки запросов - -### Аудит и соответствие - -#### Регулярные проверки - -- Проверка актуальности документов -- Обновление политик при изменении законодательства -- Аудит обработки данных -- Тестирование механизмов реализации прав - -#### Рекомендации - -1. **Регулярное обновление** - - Следите за изменениями в законодательстве - - Обновляйте документы при необходимости - - Проводите аудит соответствия - -2. **Консультации** - - Рекомендуется консультация с юристом - - Проверка соответствия локальному законодательству - - Адаптация под специфику вашего региона - -3. **Документирование** - - Ведите журнал обработки данных - - Сохраняйте историю согласий - - Документируйте запросы пользователей - -> 💡 **Подробная информация**: См. [Безопасность DLE](./security.md) для детального описания мер безопасности и соответствия требованиям регуляторов. - ---- - -## 🔄 Обновления софта - -### Политика обновлений - -DLE предоставляет бесплатные обновления в течение 5 лет для держателей лицензионных токенов. Это включает: -- ✅ Исправления ошибок (bug fixes) -- ✅ Новые функции (features) -- ✅ Улучшения безопасности (security updates) -- ✅ Обновления зависимостей (dependencies) -- ✅ Оптимизация производительности - -### Типы обновлений - -#### 1. Патч-обновления (Patch) -- **Формат версии**: X.Y.**Z** (например, 1.0.1 → 1.0.2) -- **Содержание**: Исправления ошибок, мелкие улучшения -- **Частота**: По мере необходимости -- **Критичность**: Обычно низкая-средняя - -#### 2. Минорные обновления (Minor) -- **Формат версии**: X.**Y**.Z (например, 1.0.2 → 1.1.0) -- **Содержание**: Новые функции, улучшения -- **Частота**: Ежеквартально или по мере готовности -- **Критичность**: Средняя - -#### 3. Мажорные обновления (Major) -- **Формат версии**: **X**.Y.Z (например, 1.1.0 → 2.0.0) -- **Содержание**: Крупные изменения, breaking changes -- **Частота**: Раз в год или реже -- **Критичность**: Высокая (требуется миграция) - -### Процесс обновления - -#### Автоматическое обновление (рекомендуется) - -```bash -# 1. Остановка текущей версии -docker-compose down - -# 2. Резервное копирование данных -docker run --rm -v dle_postgres_data:/data -v $(pwd):/backup \ - alpine tar czf /backup/postgres_backup.tar.gz -C /data . - -# 3. Обновление кода -git pull origin main - -# 4. Обновление образов -docker-compose pull - -# 5. Пересборка (если необходимо) -docker-compose build - -# 6. Запуск обновленной версии -docker-compose up -d - -# 7. Проверка статуса -docker-compose ps -docker-compose logs -f -``` - -#### Ручное обновление - -1. **Подготовка** - - Проверьте текущую версию - - Изучите changelog обновления - - Создайте резервную копию - -2. **Резервное копирование** - ```bash - # База данных - docker-compose exec postgres pg_dump -U dapp_user dapp_db > backup.sql - - # Файлы загрузок - tar -czf uploads_backup.tar.gz backend/uploads/ - - # Конфигурации - cp .env .env.backup - ``` - -3. **Обновление** - - Скачайте новую версию - - Обновите зависимости - - Примените миграции БД (если есть) - -4. **Проверка** - - Проверьте работоспособность - - Протестируйте ключевые функции - - Проверьте логи на ошибки - -### Миграции базы данных - -При обновлении могут потребоваться миграции БД: - -```bash -# Автоматическое применение миграций -docker-compose exec backend npm run migrate - -# Или вручную через SQL -docker-compose exec postgres psql -U dapp_user -d dapp_db -f migrations/version_X.X.X.sql -``` - -### Откат обновления - -В случае проблем можно откатиться к предыдущей версии: - -```bash -# 1. Остановка текущей версии -docker-compose down - -# 2. Восстановление из резервной копии -docker run --rm -v dle_postgres_data:/data -v $(pwd):/backup \ - alpine tar xzf /backup/postgres_backup.tar.gz -C /data - -# 3. Переключение на предыдущую версию -git checkout - -# 4. Запуск предыдущей версии -docker-compose up -d -``` - -### Уведомления об обновлениях - -#### Каналы уведомлений - -1. **GitHub Releases** - - Официальные релизы - - Changelog изменений - - Инструкции по обновлению - -2. **Email рассылка** - - Уведомления о важных обновлениях - - Информация о breaking changes - - Рекомендации по обновлению - -3. **В приложении** - - Уведомления о доступных обновлениях - - Информация о новых функциях - - Ссылки на документацию - -### Рекомендации по обновлениям - -1. **Регулярность** - - Обновляйтесь регулярно для получения исправлений безопасности - - Не откладывайте критичные обновления - - Следите за changelog - -2. **Тестирование** - - Тестируйте обновления на тестовой среде - - Проверяйте совместимость с вашими данными - - Убедитесь в работоспособности интеграций - -3. **Резервное копирование** - - Всегда создавайте резервные копии перед обновлением - - Храните несколько версий бэкапов - - Тестируйте восстановление из бэкапа - -4. **Документирование** - - Ведите журнал обновлений - - Записывайте возникшие проблемы - - Документируйте кастомные изменения - -### Долгосрочная поддержка (LTS) - -Для стабильных версий может быть доступна долгосрочная поддержка: -- Расширенный период поддержки -- Приоритетные исправления безопасности -- Гарантированная совместимость - -> 💡 **Важно**: Обновления предоставляются бесплатно в течение 5 лет для держателей лицензионных токенов. После этого периода обновления могут быть платными или доступны через сообщество. - ---- - -## 📚 Дополнительные ресурсы - -### Документация - -- [Описание приложения](./application-description.md) - Полный обзор возможностей и преимуществ -- [Инструкция по установке](./setup-instruction.md) - Пошаговая настройка -- [Настройка AI ассистента](./setup-ai-assistant.md) - Конфигурация AI -- [Безопасность DLE](./security.md) - Детальная информация о безопасности -- [FAQ](./FAQ.md) - Ответы на частые вопросы - -### Поддержка - -- **Email**: info@hb3-accelerator.com -- **Сайт**: https://hb3-accelerator.com -- **GitHub**: https://github.com/VC-HB3-Accelerator - ---- - -**© 2024-2025 Тарабанов Александр Викторович. Все права защищены.** - -**Digital Legal Entity (DLE)** - комплексное решение для управления бизнесом с блокчейн и AI. - -**Версия документа**: 1.0.0 -**Последнее обновление**: January 2025 - diff --git a/frontend/nginx-simple.conf b/frontend/nginx-simple.conf index b4aa71a..ccdee83 100644 --- a/frontend/nginx-simple.conf +++ b/frontend/nginx-simple.conf @@ -81,12 +81,31 @@ http { return 404; } - # Защита от доступа к чувствительным файлам - location ~* /(\.htaccess|\.htpasswd|\.env|\.git|\.svn|\.DS_Store|Thumbs\.db|web\.config|robots\.txt|sitemap\.xml)$ { + # Защита от доступа к чувствительным файлам (исключаем robots.txt и sitemap.xml для SEO) + location ~* /(\.htaccess|\.htpasswd|\.env|\.git|\.svn|\.DS_Store|Thumbs\.db|web\.config)$ { deny all; return 404; } + # Разрешаем доступ к robots.txt и sitemap.xml для поисковых систем + location = /robots.txt { + proxy_pass http://${BACKEND_CONTAINER}:8000/api/pages/public/robots.txt; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + add_header Content-Type text/plain; + } + + location = /sitemap.xml { + proxy_pass http://${BACKEND_CONTAINER}:8000/api/pages/public/sitemap.xml; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + add_header Content-Type application/xml; + } + # Защита от доступа к конфигурационным файлам location ~* /\.(env|config|ini|conf|cfg|yml|yaml|json|xml|sql|db|bak|backup|old|tmp|temp|log)$ { deny all; diff --git a/frontend/src/components/ChatInterface.vue b/frontend/src/components/ChatInterface.vue index 074be56..4e95000 100644 --- a/frontend/src/components/ChatInterface.vue +++ b/frontend/src/components/ChatInterface.vue @@ -420,6 +420,35 @@ const isResizing = ref(false); const resizeStartX = ref(0); const resizeStartWidth = ref(0); +// Определяем, является ли устройство мобильным +const isMobile = ref(false); + +// Функция для проверки мобильного устройства +const checkMobile = () => { + isMobile.value = window.innerWidth <= 1024; + if (isMobile.value) { + // На мобильных устройствах устанавливаем ширину в 100% + messagesWidth.value = 100; + inputWidth.value = 100; + } else { + // На десктопе используем стандартные значения + if (messagesWidth.value === 100) { + messagesWidth.value = 70; + inputWidth.value = 30; + } + } +}; + +// Отслеживаем изменение размера окна +onMounted(() => { + checkMobile(); + window.addEventListener('resize', checkMobile); +}); + +onUnmounted(() => { + window.removeEventListener('resize', checkMobile); +}); + const startResize = (e) => { isResizing.value = true; @@ -535,6 +564,10 @@ const updateChatInputHeight = () => { }; onMounted(() => { + // Проверяем мобильное устройство и устанавливаем ширину + checkMobile(); + window.addEventListener('resize', checkMobile); + // Начальная установка высоты textarea и блока ввода adjustTextareaHeight(); updateChatInputHeight(); @@ -548,6 +581,8 @@ onMounted(() => { }); onUnmounted(() => { + window.removeEventListener('resize', checkMobile); + if (resizeObserver && chatInputRef.value) { resizeObserver.unobserve(chatInputRef.value); } @@ -709,8 +744,8 @@ async function handleAiReply() { /* На мобильных устройствах блок ввода занимает всё пространство внизу */ @media (max-width: 1024px) { .chat-input { - width: 100%; - max-width: 100%; + width: 100% !important; + max-width: 100% !important; height: auto; border-top: none; border-right: none; @@ -737,6 +772,7 @@ async function handleAiReply() { color: var(--color-dark); overflow-y: auto; box-sizing: border-box; + max-width: 100%; } .chat-input textarea:focus { @@ -748,12 +784,15 @@ async function handleAiReply() { /* На мобильных устройствах поле ввода меньше */ @media (max-width: 1024px) { .chat-input textarea { + width: 100% !important; + max-width: 100% !important; border-radius: 20px; padding: 12px 16px; min-height: var(--chat-input-min-height, 40px); max-height: var(--chat-input-max-height, 120px); overflow-y: hidden; resize: none; + box-sizing: border-box; } } @@ -942,11 +981,25 @@ async function handleAiReply() { .chat-messages { padding: var(--spacing-md) var(--spacing-md) 8px; + width: 100% !important; } .chat-input { + width: 100% !important; + max-width: 100% !important; padding: var(--spacing-xs) var(--spacing-sm); height: auto; + box-sizing: border-box; + } + + .input-area { + width: 100% !important; + box-sizing: border-box; + } + + .input-area textarea { + width: 100% !important; + box-sizing: border-box; } .chat-icon-btn { @@ -958,10 +1011,16 @@ async function handleAiReply() { width: 20px; height: 20px; } + + .resizer { + display: none; + } } @media (max-width: 480px) { .chat-input { + width: 100% !important; + max-width: 100% !important; position: sticky !important; bottom: 0 !important; border-radius: 0 !important; @@ -969,14 +1028,27 @@ async function handleAiReply() { background: #f8f8f8 !important; border-top: 1px solid #eee !important; } + .chat-messages { + width: 100% !important; padding: var(--spacing-md) var(--spacing-md) 8px !important; overflow-y: auto !important; } + + .input-area { + width: 100% !important; + } + + .input-area textarea { + width: 100% !important; + box-sizing: border-box; + } } @media (max-width: 600px) { .chat-input { + width: 100% !important; + max-width: 100% !important; position: sticky !important; bottom: 0 !important; border-radius: 0 !important; @@ -984,7 +1056,9 @@ async function handleAiReply() { background: #f8f8f8 !important; border-top: 1px solid #eee !important; } + .chat-messages { + width: 100% !important; padding: var(--spacing-md) var(--spacing-md) 8px !important; overflow-y: auto !important; } diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue index 7072978..39b65c5 100644 --- a/frontend/src/components/Sidebar.vue +++ b/frontend/src/components/Sidebar.vue @@ -47,6 +47,9 @@ Чат + + Блог + CRM diff --git a/frontend/src/components/docs/DocsContent.vue b/frontend/src/components/docs/DocsContent.vue index 1367d1c..7ba7e12 100644 --- a/frontend/src/components/docs/DocsContent.vue +++ b/frontend/src/components/docs/DocsContent.vue @@ -30,7 +30,7 @@