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

3.3 KiB
Raw Blame History

🔍 Диагностика проблемы AI Drawer

Проблема

Ошибка: "Ошибка при получении ответа. Попробуйте еще раз."

Что проверить

1. Проверить формат сообщения от n8n

n8n может публиковать сообщение в двух форматах:

Формат 1 (просто текст):

"Текст ответа от AI"

Формат 2 (JSON объект):

{
  "task_id": "task-123",
  "response": "Текст ответа",
  "status": "completed"
}

2. Проверить Redis ключ

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. Проверить публикацию в канал

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)