fix: Исправление загрузки документов и SQL запросов
- Исправлена потеря документов при обновлении черновика (SQL объединяет вместо перезаписи) - Исправлено определение типа документа (приоритет field_label над field_name) - Исправлены дубликаты в documents_meta и documents_uploaded - Добавлена передача group_index с фронтенда для правильного field_name - Исправлены все документы в таблице clpr_claim_documents с правильными field_name - Обновлены SQL запросы: claimsave и claimsave_final для нового флоу - Добавлена поддержка multi-file upload для одного документа - Исправлены дубликаты в списке загруженных документов на фронтенде Файлы: - SQL: SQL_CLAIMSAVE_FIXED_NEW_FLOW.sql, SQL_CLAIMSAVE_FINAL_FIXED_NEW_FLOW_WITH_UPLOADED.sql - n8n: N8N_CODE_PROCESS_UPLOADED_FILES_FIXED.js (поддержка group_index) - Backend: documents.py (передача group_index в n8n) - Frontend: StepWizardPlan.tsx (передача group_index, исправление дубликатов) - Скрипты: fix_claim_documents_field_names.py, fix_documents_meta_duplicates.py Результат: документы больше не теряются, имеют правильные типы и field_name
This commit is contained in:
167
docs/N8N_REDIS_TRIGGER_TROUBLESHOOTING.md
Normal file
167
docs/N8N_REDIS_TRIGGER_TROUBLESHOOTING.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# 🔧 Troubleshooting: Redis Trigger в n8n зависает
|
||||
|
||||
## 🐛 Проблема
|
||||
|
||||
Redis Trigger в n8n перестаёт слушать канал `ticket_form:description`, хотя workflow активен.
|
||||
|
||||
## 🔍 Возможные причины
|
||||
|
||||
### 1. **Потеря соединения с Redis**
|
||||
- Соединение оборвалось из-за сетевых проблем
|
||||
- Redis перезапустился, но n8n не переподключился
|
||||
- Таймаут соединения
|
||||
|
||||
**Решение:**
|
||||
- Проверить логи n8n на ошибки подключения
|
||||
- Убедиться, что Redis доступен: `redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PING`
|
||||
- Перезапустить workflow в n8n (отключить → включить)
|
||||
|
||||
### 2. **Проблемы с памятью/ресурсами**
|
||||
- n8n исчерпал память
|
||||
- Слишком много активных workflows
|
||||
|
||||
**Решение:**
|
||||
- Проверить использование памяти: `docker stats n8n_container`
|
||||
- Увеличить лимиты памяти для n8n
|
||||
- Перезапустить n8n контейнер
|
||||
|
||||
### 3. **Долгие операции в workflow**
|
||||
- Workflow обрабатывает сообщение слишком долго
|
||||
- Блокирует обработку новых сообщений
|
||||
|
||||
**Решение:**
|
||||
- Оптимизировать workflow (убрать долгие операции)
|
||||
- Использовать асинхронную обработку
|
||||
- Разбить workflow на несколько этапов
|
||||
|
||||
### 4. **Проблемы с сетью**
|
||||
- Временные сбои сети между n8n и Redis
|
||||
- Firewall блокирует соединение
|
||||
|
||||
**Решение:**
|
||||
- Проверить сетевую связность: `ping crm.clientright.ru`
|
||||
- Проверить firewall правила
|
||||
- Использовать retry-логику в workflow
|
||||
|
||||
## 🛠️ Решения для предотвращения
|
||||
|
||||
### 1. **Мониторинг подписчиков**
|
||||
|
||||
Запустить скрипт мониторинга:
|
||||
```bash
|
||||
cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form
|
||||
python3 monitor_n8n_redis_trigger.py
|
||||
```
|
||||
|
||||
Или добавить в cron для автоматической проверки:
|
||||
```bash
|
||||
# Проверка каждые 5 минут
|
||||
*/5 * * * * cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form && python3 monitor_n8n_redis_trigger.py >> logs/n8n_monitor_cron.log 2>&1
|
||||
```
|
||||
|
||||
### 2. **Health Check для Redis Trigger**
|
||||
|
||||
Добавить в workflow n8n:
|
||||
- **Schedule Trigger** (каждые 5 минут)
|
||||
- **Redis Publish** (отправить тестовое сообщение)
|
||||
- **If Node** (проверить, обработалось ли сообщение)
|
||||
- **Send Alert** (если нет - отправить уведомление)
|
||||
|
||||
### 3. **Автоматический перезапуск workflow**
|
||||
|
||||
Создать скрипт для автоматического перезапуска:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Проверка и перезапуск workflow если нет подписчиков
|
||||
|
||||
SUBS=$(redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PUBSUB NUMSUB "ticket_form:description" | tail -1)
|
||||
|
||||
if [ "$SUBS" -eq "0" ]; then
|
||||
echo "⚠️ Нет подписчиков! Требуется перезапуск workflow"
|
||||
# Здесь можно добавить API вызов для перезапуска workflow через n8n API
|
||||
fi
|
||||
```
|
||||
|
||||
### 4. **Настройка Redis для стабильности**
|
||||
|
||||
В `redis.conf`:
|
||||
```conf
|
||||
# Таймаут для неактивных соединений (0 = отключить)
|
||||
timeout 0
|
||||
|
||||
# Keepalive для TCP соединений
|
||||
tcp-keepalive 60
|
||||
|
||||
# Максимальное количество клиентов
|
||||
maxclients 10000
|
||||
```
|
||||
|
||||
### 5. **Логирование в n8n**
|
||||
|
||||
Включить детальное логирование для Redis Trigger:
|
||||
- Settings → Logging → Level: `debug`
|
||||
- Проверить логи на ошибки подключения
|
||||
|
||||
## 📊 Диагностика
|
||||
|
||||
### Проверка подписчиков
|
||||
```bash
|
||||
redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PUBSUB NUMSUB "ticket_form:description"
|
||||
```
|
||||
|
||||
### Проверка подключения n8n к Redis
|
||||
```bash
|
||||
# Из контейнера n8n
|
||||
docker exec -it n8n_container redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PING
|
||||
```
|
||||
|
||||
### Тестовая публикация
|
||||
```bash
|
||||
redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" \
|
||||
PUBLISH "ticket_form:description" '{"type":"test","session_id":"test123"}'
|
||||
```
|
||||
|
||||
### Проверка логов n8n
|
||||
```bash
|
||||
docker logs n8n_container | grep -i redis
|
||||
docker logs n8n_container | grep -i "ticket_form:description"
|
||||
```
|
||||
|
||||
## ✅ Быстрое решение
|
||||
|
||||
Если workflow завис:
|
||||
|
||||
1. **Отключить workflow** в n8n (кнопка "Active")
|
||||
2. **Сохранить** изменения
|
||||
3. **Включить обратно** (кнопка "Active")
|
||||
4. **Проверить подписчиков**: `PUBSUB NUMSUB "ticket_form:description"`
|
||||
|
||||
Если не помогло:
|
||||
|
||||
1. **Перезапустить n8n контейнер**:
|
||||
```bash
|
||||
docker restart n8n_container
|
||||
```
|
||||
|
||||
2. **Проверить Redis**:
|
||||
```bash
|
||||
redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PING
|
||||
```
|
||||
|
||||
3. **Проверить сеть** между n8n и Redis
|
||||
|
||||
## 🔄 Рекомендации для продакшена
|
||||
|
||||
1. **Мониторинг**: Настроить автоматический мониторинг подписчиков
|
||||
2. **Алерты**: Настроить уведомления при отсутствии подписчиков
|
||||
3. **Health Checks**: Регулярные проверки работоспособности
|
||||
4. **Логирование**: Детальное логирование всех операций с Redis
|
||||
5. **Резервирование**: Рассмотреть использование Redis Sentinel для высокой доступности
|
||||
|
||||
## 📝 Логи для анализа
|
||||
|
||||
Проверить логи:
|
||||
- `/var/www/fastuser/data/www/crm.clientright.ru/ticket_form/logs/n8n_redis_monitor.log` - мониторинг
|
||||
- `docker logs n8n_container` - логи n8n
|
||||
- `/var/www/fastuser/data/www/crm.clientright.ru/ticket_form/backend/logs/` - логи backend
|
||||
|
||||
Reference in New Issue
Block a user