Files
aiform_dev/test_redis_publish_direct.py
AI Assistant f72aa59476 Интеграция SSE + Redis Pub/Sub для real-time OCR результатов
🎯 Основные изменения:

Backend:
- Реализован SSE endpoint /events/{task_id} для real-time стриминга событий
- Интеграция Redis Pub/Sub для получения событий от n8n
- Исправлен путь к .env файлу (абсолютный путь)
- Убран префикс /api/v1 для events router
- Добавлено подробное логирование событий

Frontend:
- Переключён на Vite dev mode для работы proxy
- Настроен proxy /events -> backend:8100
- Реализована модалка с крутилкой при загрузке файла
- SSE клиент для получения OCR результатов в real-time
- Отображение результатов AI анализа в модалке

Docker:
- Frontend: изменён на npm run dev (Vite dev server)
- Добавлен host.docker.internal для доступа к backend
- Настроен proxy в docker-compose

Утилиты:
- monitor_redis_direct.py - мониторинг Redis Pub/Sub
- test_redis_publish_direct.py - тестирование публикации в Redis

🚀 Полная цепочка работает:
Frontend → Backend SSE → Redis Pub/Sub ← n8n → OCR/AI → Result
2025-10-27 19:37:41 +03:00

74 lines
2.2 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

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.

#!/usr/bin/env python3
"""
Тест прямой публикации в Redis (имитация n8n Redis ноды)
"""
import redis
import json
from datetime import datetime
print("=" * 60)
print("🧪 ТЕСТ ПРЯМОЙ ПУБЛИКАЦИИ В REDIS")
print("=" * 60)
# Подключение к Redis
r = redis.Redis(
host='crm.clientright.ru',
port=6379,
password='CRM_Redis_Pass_2025_Secure!',
decode_responses=True
)
# Проверка подключения
try:
r.ping()
print("✅ Redis подключен!")
except Exception as e:
print(f"❌ Ошибка подключения: {e}")
exit(1)
# Тестовые данные
claim_id = "CLM-TEST-DIRECT-123"
channel = f"ocr_events:{claim_id}"
event_data = {
"event_type": "ocr_completed",
"status": "success",
"message": "✅ Тест прямой публикации из Python (имитация n8n)",
"data": {
"file_id": "test-file-123",
"is_valid_document": True,
"test_mode": True,
"source": "direct_redis_publish"
},
"timestamp": datetime.now().isoformat()
}
message = json.dumps(event_data, ensure_ascii=False)
print(f"\n📺 Канал: {channel}")
print(f"📦 Сообщение:")
print(json.dumps(event_data, indent=2, ensure_ascii=False))
print("\n" + "=" * 60)
# Публикация
try:
num_subscribers = r.publish(channel, message)
print(f"\n✅ Сообщение опубликовано!")
print(f"👥 Количество подписчиков: {num_subscribers}")
if num_subscribers == 0:
print("\n⚠️ ВНИМАНИЕ: Нет активных подписчиков!")
print(" Это нормально, если никто не слушает канал.")
print(" Запусти monitor_redis_direct.py в другом терминале.")
else:
print(f"\n🎉 {num_subscribers} подписчик(ов) получили сообщение!")
except Exception as e:
print(f"\n❌ Ошибка публикации: {e}")
finally:
r.close()
print("\n" + "=" * 60)
print(f"⏰ Завершено: {datetime.now().strftime('%H:%M:%S')}")