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 @@