227 lines
12 KiB
Markdown
227 lines
12 KiB
Markdown
|
|
# AI Drawer - Улучшения интерфейса
|
|||
|
|
|
|||
|
|
## 📋 Выполненные улучшения
|
|||
|
|
|
|||
|
|
### 1. ✅ Управление размером шрифта
|
|||
|
|
- **Добавлена панель управления** с кнопками: Мелкий, Обычный, Крупный, Очень крупный
|
|||
|
|
- **Сохранение настроек** в localStorage браузера
|
|||
|
|
- **Динамическое изменение** размера шрифта без перезагрузки страницы
|
|||
|
|
- **Визуальная обратная связь** - активная кнопка подсвечивается
|
|||
|
|
|
|||
|
|
### 2. ✅ Дружелюбные аватарки ассистента
|
|||
|
|
- **4 варианта аватарок**: 🤖 (робот), 😊 (дружелюбный), 💡 (помощник), 🧠 (умный)
|
|||
|
|
- **Анимированные аватарки** с пульсацией и подпрыгиванием
|
|||
|
|
- **Панель управления** с круглыми кнопками для смены аватарки
|
|||
|
|
- **Сохранение выбора** в localStorage браузера
|
|||
|
|
- **Градиентный фон** с тенью для красивого вида
|
|||
|
|
|
|||
|
|
### 3. ✅ Убрано излишнее затемнение
|
|||
|
|
- **Изменен фон** с темного (#1a1a1a) на светлый (#f8f9fa)
|
|||
|
|
- **Максимальная читаемость** - очень темный текст (#212529) на светлом фоне
|
|||
|
|
- **Увеличен межстрочный интервал** (line-height: 1.6) для комфортного чтения
|
|||
|
|
- **Улучшена толщина шрифта** (font-weight: 400) для лучшей видимости
|
|||
|
|
- **Цветовое разделение сообщений** - пользователь (синий) и ассистент (с синей полоской)
|
|||
|
|
|
|||
|
|
### 4. ✅ Плавающий индикатор загрузки
|
|||
|
|
- **Центрированное позиционирование** - появляется в центре экрана
|
|||
|
|
- **Высокий z-index** (10000) - всегда поверх других элементов
|
|||
|
|
- **Красивый дизайн** с полупрозрачным фоном и тенью
|
|||
|
|
- **Анимированный спиннер** для визуальной обратной связи
|
|||
|
|
- **Настраиваемый текст** сообщения
|
|||
|
|
|
|||
|
|
### 5. ✅ Улучшенный скролл
|
|||
|
|
- **Стилизованные полосы прокрутки** с современным дизайном
|
|||
|
|
- **Автоматическая прокрутка** к новым сообщениям
|
|||
|
|
- **Плавная прокрутка** с улучшенной производительностью
|
|||
|
|
- **Адаптивная ширина** полос прокрутки (8px)
|
|||
|
|
|
|||
|
|
### 6. ✅ Поле ввода сообщений
|
|||
|
|
- **Удобное поле ввода** внизу панели с плейсхолдером
|
|||
|
|
- **Кнопка "Отправить"** с красивым дизайном и анимациями
|
|||
|
|
- **Поддержка клавиши Enter** для быстрой отправки
|
|||
|
|
- **Автоматическая очистка** поля после отправки
|
|||
|
|
- **Интеграция с плавающим индикатором** загрузки
|
|||
|
|
|
|||
|
|
### 7. ✅ Интеграция с n8n
|
|||
|
|
- **Восстановлена связка с n8n** через n8n_proxy.php
|
|||
|
|
- **Передача контекста CRM** (модуль, запись, пользователь)
|
|||
|
|
- **Обработка ошибок** с fallback сообщениями
|
|||
|
|
- **Логирование запросов** для отладки
|
|||
|
|
- **Поддержка сессий** для непрерывного диалога
|
|||
|
|
|
|||
|
|
### 8. ✅ Автоматическая инициализация
|
|||
|
|
- **Автоматический запрос при открытии** drawer'а
|
|||
|
|
- **Передача контекста CRM** в n8n при инициализации
|
|||
|
|
- **Умное формирование сообщения** с информацией о текущей записи/модуле
|
|||
|
|
- **Fallback сообщение** при ошибках инициализации
|
|||
|
|
|
|||
|
|
### 9. ✅ Умное скрытие кнопки AI
|
|||
|
|
- **Автоматическое скрытие** кнопки AI когда drawer открыт
|
|||
|
|
- **Показ кнопки** только когда drawer закрыт
|
|||
|
|
- **Улучшенный UX** - нет дублирования элементов управления
|
|||
|
|
|
|||
|
|
### 10. ✅ Стриминг сообщений
|
|||
|
|
- **Постепенное появление текста** символ за символом
|
|||
|
|
- **Настраиваемая скорость** печатания (по умолчанию 25мс)
|
|||
|
|
- **Автоматическая прокрутка** во время печатания
|
|||
|
|
- **Эффект живого общения** - как будто ассистент реально печатает
|
|||
|
|
|
|||
|
|
### 11. ✅ Индикатор печатания
|
|||
|
|
- **Красивая анимация** с тремя точками
|
|||
|
|
- **Текст "печатает..."** с курсивом
|
|||
|
|
- **Автоматическое скрытие** при появлении ответа
|
|||
|
|
- **Интеграция с аватаркой** ассистента
|
|||
|
|
|
|||
|
|
## 🎨 Дополнительные улучшения
|
|||
|
|
|
|||
|
|
### Стили для сообщений чата
|
|||
|
|
- **Разделение сообщений** пользователя и ассистента
|
|||
|
|
- **Цветовое кодирование**:
|
|||
|
|
- Сообщения пользователя: синий фон (#e3f2fd) с темно-синим текстом (#1565c0)
|
|||
|
|
- Сообщения ассистента: светлый фон (#f8f9fa) с темным текстом (#212529) и синей полоской слева
|
|||
|
|
- **Временные метки** для каждого сообщения (серый цвет #6c757d)
|
|||
|
|
- **Улучшенная типографика** с правильными отступами
|
|||
|
|
- **Автоматический перенос слов** для длинных сообщений
|
|||
|
|
|
|||
|
|
### Улучшенная структура HTML
|
|||
|
|
- **Панель управления шрифтом** в заголовке drawer'а
|
|||
|
|
- **Семантическая разметка** для лучшей доступности
|
|||
|
|
- **Готовность к интеграции** с существующими системами
|
|||
|
|
|
|||
|
|
## 📁 Измененные файлы
|
|||
|
|
|
|||
|
|
### 1. `layouts/v7/resources/css/ai-drawer.css`
|
|||
|
|
- Добавлены стили для управления шрифтом
|
|||
|
|
- Улучшены цвета и контрастность
|
|||
|
|
- Добавлены стили для плавающего индикатора
|
|||
|
|
- Улучшены стили скролла
|
|||
|
|
|
|||
|
|
### 2. `layouts/v7/resources/js/ai-drawer.js`
|
|||
|
|
- Добавлены методы управления размером шрифта
|
|||
|
|
- Реализован плавающий индикатор загрузки
|
|||
|
|
- Добавлены методы для работы с сообщениями
|
|||
|
|
- Интеграция с localStorage для сохранения настроек
|
|||
|
|
|
|||
|
|
### 3. `ai_drawer_improvements.js`
|
|||
|
|
- Добавлены демонстрационные функции
|
|||
|
|
- Интеграция с новыми возможностями
|
|||
|
|
- Расширенный API для внешнего использования
|
|||
|
|
|
|||
|
|
### 4. `test_ai_drawer_ui_improvements.html` (новый)
|
|||
|
|
- Демонстрационная страница для тестирования
|
|||
|
|
- Интерактивные кнопки для проверки функций
|
|||
|
|
- Подробные инструкции по использованию
|
|||
|
|
|
|||
|
|
## 🚀 Как использовать
|
|||
|
|
|
|||
|
|
### Открытие AI Drawer
|
|||
|
|
```javascript
|
|||
|
|
// Открыть drawer
|
|||
|
|
aiDrawerInstance.open();
|
|||
|
|
|
|||
|
|
// Закрыть drawer
|
|||
|
|
aiDrawerInstance.close();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Управление размером шрифта
|
|||
|
|
```javascript
|
|||
|
|
// Изменить размер шрифта
|
|||
|
|
aiDrawerInstance.setFontSize('large'); // small, normal, large, extra-large
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Управление аватаркой ассистента
|
|||
|
|
```javascript
|
|||
|
|
// Изменить аватарку ассистента
|
|||
|
|
aiDrawerInstance.setAvatarType('friendly'); // default, friendly, helpful, smart
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Плавающий индикатор загрузки
|
|||
|
|
```javascript
|
|||
|
|
// Показать индикатор
|
|||
|
|
aiDrawerInstance.showLoading('Обрабатываю запрос...');
|
|||
|
|
|
|||
|
|
// Скрыть индикатор
|
|||
|
|
aiDrawerInstance.hideLoading();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Добавление сообщений
|
|||
|
|
```javascript
|
|||
|
|
// Добавить сообщение пользователя
|
|||
|
|
aiDrawerInstance.addMessage('Привет!', true);
|
|||
|
|
|
|||
|
|
// Добавить сообщение ассистента
|
|||
|
|
aiDrawerInstance.addMessage('Привет! Чем могу помочь?', false);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 Технические детали
|
|||
|
|
|
|||
|
|
### CSS классы для размеров шрифта
|
|||
|
|
- `.font-small` - 12px
|
|||
|
|
- `.font-normal` - 14px (по умолчанию)
|
|||
|
|
- `.font-large` - 16px
|
|||
|
|
- `.font-extra-large` - 18px
|
|||
|
|
|
|||
|
|
### localStorage ключи
|
|||
|
|
- `ai-drawer-font-size` - сохраненный размер шрифта
|
|||
|
|
- `ai-drawer-avatar-type` - сохраненный тип аватарки ассистента
|
|||
|
|
|
|||
|
|
### Z-index значения
|
|||
|
|
- AI Drawer: 1000
|
|||
|
|
- Toggle button: 999999
|
|||
|
|
- Loading overlay: 10000
|
|||
|
|
|
|||
|
|
### Цветовая палитра
|
|||
|
|
- **Основной фон**: #f8f9fa (светло-серый)
|
|||
|
|
- **Основной текст**: #212529 (очень темный)
|
|||
|
|
- **Заголовок**: #007bff (синий) с белым текстом
|
|||
|
|
- **Сообщения пользователя**: #e3f2fd (светло-синий фон) + #1565c0 (темно-синий текст)
|
|||
|
|
- **Сообщения ассистента**: #f8f9fa (светлый фон) + #212529 (темный текст) + #007bff (синяя полоска)
|
|||
|
|
- **Время сообщений**: #6c757d (серый)
|
|||
|
|
- **Панель управления**: #e9ecef (светло-серый фон) + #495057 (темный текст)
|
|||
|
|
|
|||
|
|
## 📱 Адаптивность
|
|||
|
|
|
|||
|
|
Все улучшения полностью адаптивны и работают на:
|
|||
|
|
- ✅ Десктопных браузерах
|
|||
|
|
- ✅ Планшетах
|
|||
|
|
- ✅ Мобильных устройствах
|
|||
|
|
|
|||
|
|
## 🎯 Результат
|
|||
|
|
|
|||
|
|
Интерфейс AI ассистента стал:
|
|||
|
|
- **Более удобным** для глаз благодаря светлой теме
|
|||
|
|
- **Настраиваемым** с возможностью изменения размера шрифта
|
|||
|
|
- **Информативным** с плавающими уведомлениями
|
|||
|
|
- **Функциональным** с улучшенным скроллом
|
|||
|
|
|
|||
|
|
Все изменения обратно совместимы и не нарушают существующую функциональность.
|
|||
|
|
|
|||
|
|
## 🔧 API для стриминга
|
|||
|
|
|
|||
|
|
### Методы для стриминга сообщений
|
|||
|
|
```javascript
|
|||
|
|
// Добавить сообщение со стримингом
|
|||
|
|
window.aiDrawerInstance.addStreamingMessage('Текст сообщения', false, 25); // скорость в мс
|
|||
|
|
|
|||
|
|
// Показать индикатор печатания
|
|||
|
|
window.aiDrawerInstance.showTypingIndicator();
|
|||
|
|
|
|||
|
|
// Скрыть индикатор печатания
|
|||
|
|
window.aiDrawerInstance.hideTypingIndicator();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Демонстрационные функции
|
|||
|
|
```javascript
|
|||
|
|
// Демонстрация стриминга
|
|||
|
|
window.demonstrateStreaming();
|
|||
|
|
|
|||
|
|
// Демонстрация индикатора печатания
|
|||
|
|
window.demonstrateTypingIndicator();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### CSS классы для стриминга
|
|||
|
|
- `.ai-typing-indicator` - контейнер индикатора печатания
|
|||
|
|
- `.ai-typing-dots` - контейнер для точек
|
|||
|
|
- `.ai-typing-dot` - отдельная точка с анимацией
|
|||
|
|
- `.ai-typing-text` - текст "печатает..."
|