Files
aiform_dev/test_redis_events.sh
AI Assistant 647abf6578 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

87 lines
1.8 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

#!/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!"