Files
aiform_dev/test_redis_events.sh

87 lines
1.8 KiB
Bash
Raw Permalink Normal View History

feat: Интеграция n8n + Redis Pub/Sub + SSE для real-time обработки заявок 🎯 Основные изменения: Backend: - ✅ Добавлен SSE endpoint для real-time событий (/api/v1/events/{task_id}) - ✅ Redis Pub/Sub для публикации/подписки на события OCR/Vision - ✅ Удален aioboto3 из requirements.txt (конфликт зависимостей) - ✅ Добавлен OCR worker (deprecated, логика перенесена в n8n) Frontend (React): - ✅ Автогенерация claim_id и session_id - ✅ Клиентская конвертация файлов в PDF (JPG/PNG/HEIC/WEBP) - ✅ Сжатие изображений до 2MB перед конвертацией - ✅ SSE подписка на события OCR/Vision в Step1Policy - ✅ Валидация документов (полис vs неподходящий контент) - ✅ Real-time прогресс загрузки и обработки файлов - ✅ Интеграция с n8n webhooks для проверки полиса и загрузки файлов n8n Workflows: - ✅ Проверка полиса в MySQL + запись в PostgreSQL - ✅ Загрузка файлов в S3 + OCR + Vision AI - ✅ Публикация событий в Redis через backend API - ✅ Валидация документов (распознавание полисов ERV) Документация: - 📝 N8N_INTEGRATION.md - интеграция с n8n - 📝 N8N_SQL_QUERIES.md - SQL запросы для workflows - 📝 N8N_PDF_COMPRESS.md - сжатие PDF - 📝 N8N_STIRLING_COMPRESS.md - интеграция Stirling-PDF Утилиты: - 🔧 monitor_redis.py/sh - мониторинг Redis Pub/Sub - 🔧 test_redis_events.sh - тестирование событий - 🔧 pdfConverter.ts - клиентская конвертация в PDF Архитектура: React → n8n webhooks (sync) → MySQL/PostgreSQL/S3 → n8n workflows (async) → OCR/Vision → Redis Pub/Sub → SSE → React
2025-10-27 08:33:16 +03:00
#!/bin/bash
# Тест Redis Pub/Sub через HTTP эндпоинты
TASK_ID="test-$(date +%s)"
BASE_URL="http://localhost:8100/api/v1"
echo "🧪 Testing Redis Pub/Sub Events"
echo "================================"
echo "Task ID: $TASK_ID"
echo ""
# В фоне запускаем SSE подписку
echo "📡 Starting SSE listener..."
curl -N "$BASE_URL/events/$TASK_ID" &
SSE_PID=$!
sleep 2
# Публикуем события
echo ""
echo "📢 Publishing events..."
echo ""
echo "1⃣ Processing started..."
curl -X POST "$BASE_URL/events/$TASK_ID" \
-H "Content-Type: application/json" \
-d '{
"status": "processing",
"message": "Начата обработка файла",
"data": {"filename": "test.pdf"}
}' | jq '.'
sleep 2
echo ""
echo "2⃣ OCR started..."
curl -X POST "$BASE_URL/events/$TASK_ID" \
-H "Content-Type: application/json" \
-d '{
"status": "ocr_started",
"message": "Запущено распознавание текста",
"data": {}
}' | jq '.'
sleep 3
echo ""
echo "3⃣ OCR completed..."
curl -X POST "$BASE_URL/events/$TASK_ID" \
-H "Content-Type: application/json" \
-d '{
"status": "ocr_completed",
"message": "Распознано 1500 символов",
"data": {"chars": 1500}
}' | jq '.'
sleep 2
echo ""
echo "4⃣ Completed..."
curl -X POST "$BASE_URL/events/$TASK_ID" \
-H "Content-Type: application/json" \
-d '{
"status": "completed",
"message": "Обработка завершена",
"data": {
"document_type": "policy",
"is_valid": true,
"confidence": 0.95
}
}' | jq '.'
sleep 2
# Убиваем SSE слушатель
echo ""
echo "🛑 Stopping SSE listener..."
kill $SSE_PID 2>/dev/null
echo ""
echo "✅ Test completed!"