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