Files
crm.clientright.ru/AI_DRAWER_DEBUG.md
Fedor cd90b0d58a feat: Добавлен инструмент генерации документов для AI Ассистента
- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI
- Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код)
- Установлен PHPWord для красивого форматирования документов
- Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале)
- Замена пробелов на подчеркивания в именах папок
- Создана документация для AI и разработчиков
- Добавлены API для работы с шаблонами Nextcloud
2025-11-12 19:46:06 +03:00

97 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔍 Диагностика проблемы AI Drawer
## Проблема
Ошибка: "Ошибка при получении ответа. Попробуйте еще раз."
## Что проверить
### 1. Проверить формат сообщения от n8n
n8n может публиковать сообщение в двух форматах:
**Формат 1 (просто текст):**
```
"Текст ответа от AI"
```
**Формат 2 (JSON объект):**
```json
{
"task_id": "task-123",
"response": "Текст ответа",
"status": "completed"
}
```
### 2. Проверить Redis ключ
```bash
redis-cli -h crm.clientright.ru -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
GET "ai:response:cache:task-691209e225894-1762789858"
```
Если ключ есть → ответ сохранен, но SSE не получил
Если ключа нет → n8n не сохраняет в ключ (нужно настроить)
### 3. Проверить логи SSE
В консоли браузера должны быть логи:
- `AI Drawer: SSE connection opened`
- `AI Drawer: Received response via SSE`
Если их нет → SSE не подключается
### 4. Проверить публикацию в канал
```bash
redis-cli -h crm.clientright.ru -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
MONITOR
```
Затем отправьте сообщение в AI Drawer - должны видеть PUBLISH команду
## Решение
### Если n8n публикует только в канал (без ключа):
1. **Добавьте Redis SET ноду в n8n** перед PUBLISH:
- Operation: `Set`
- Key: `ai:response:cache:{{ $json.taskId }}`
- Value: JSON с ответом
- TTL: 300 секунд
2. **Или** используйте текущий код - SSE endpoint сам сохранит в ключ когда получит из канала
### Если SSE не подключается:
1. Проверьте что `/aiassist/ai_sse.php` доступен
2. Проверьте логи PHP на ошибки
3. Проверьте консоль браузера на ошибки CORS/сети
## Текущая архитектура
```
n8n → Redis PUBLISH (канал) → SSE endpoint получает → сохраняет в ключ → отправляет браузеру
Если SSE не получил → fallback проверяет ключ
```
## Что исправлено
✅ SSE endpoint теперь:
- Принимает и JSON и простой текст
- Сохраняет ответ в Redis ключ при получении
- Проверяет ключ при подключении (на случай если ответ уже есть)
✅ JavaScript теперь:
- Не вызывает fallback если уже получил ответ
- Проверяет Redis ключ периодически если SSE не работает
- Логирует все действия для отладки
## Следующие шаги
1. Проверьте что n8n сохраняет в ключ `ai:response:cache:{taskId}` ПЕРЕД публикацией
2. Проверьте логи в консоли браузера
3. Проверьте логи PHP (error_log)