feat: Add presence heartbeat for Matrix online status

- matrix-gateway: POST /internal/matrix/presence/online endpoint
- usePresenceHeartbeat hook with activity tracking
- Auto away after 5 min inactivity
- Offline on page close/visibility change
- Integrated in MatrixChatRoom component
This commit is contained in:
Apple
2025-11-27 00:19:40 -08:00
parent 5bed515852
commit 3de3c8cb36
6371 changed files with 1317450 additions and 932 deletions

View File

@@ -0,0 +1,127 @@
# ✅ Monitor Agent Memory Integration - Завершено
## 📊 Статус Monitor Agent
### НОДА1:
-**Задеплоєно:** `agent-monitor`
- **Node:** node-1-hetzner-gex44
- **Model:** `local_qwen3_8b`
- **Status:** `active`
### НОДА2:
-**Додано:** `agent-monitor-node2`
- **Node:** node-2
- **Model:** `local_qwen3_8b`
- **Status:** `active`
---
## 🧠 Пам'ять Monitor Agent
### Архітектура:
```
НОДА1 (Monitor Agent) ──┐
НОДА2 (Monitor Agent) ──┼──► Memory Service (PostgreSQL)
│ ├──► Qdrant (Vector)
НОДА3 (Monitor Agent) ──┘ ├──► Milvus (Long-range)
└──► Neo4j (Graph)
```
### Автоматичне збереження:
- ✅ WebSocket події автоматично зберігаються в Memory Service
- ✅ Батчинг для оптимізації (10 подій або 5 секунд)
- ✅ Збереження в PostgreSQL (структуровані дані)
- ⏳ TODO: Збереження в Qdrant, Milvus, Neo4j
---
## 🔧 Створено
### 1. API Endpoints для Memory Service
**Endpoint:** `/api/memory/monitor-events/batch`
- Батч збереження подій
- Оптимізовано для збору метрик з багатьох нод
**Endpoint:** `/api/memory/monitor-events/{node_id}`
- Збереження однієї події
### 2. Frontend Integration
**Файл:** `src/api/monitorMemory.ts`
- Батчинг подій
- Автоматичне збереження з WebSocket
**Файл:** `src/hooks/useMonitorEvents.ts`
- Інтеграція з Memory Service
- Автоматичне збереження подій
### 3. NodeAgent Integration
**NodeAgent (Сервіс):**
- Відображається в кабінеті НОДИ як сервіс
- Порт: 9600 (НОДА2)
- Роль: Координатор ноди
**Monitor Agent (Агент):**
- Відображається в кабінеті НОДИ як агент
- Збирає події та метрики
- Зберігає в Memory Service
---
## 📝 Як працює
### 1. Збір подій:
- Monitor Agent на кожній НОДА збирає події
- Події надходять через WebSocket `/ws/events`
### 2. Батчинг:
- Події накопичуються в батч (до 10 подій)
- Автоматичне збереження кожні 5 секунд
- Оптимізація для багатьох нод
### 3. Збереження:
- PostgreSQL: структуровані дані
- Qdrant: векторний пошук (TODO)
- Milvus: довгострокове зберігання (TODO)
- Neo4j: графові зв'язки (TODO)
---
## 🎯 Рекомендації
### NodeAgent vs Monitor Agent:
**NodeAgent:**
- Backend service (координатор)
- НЕ відображається як агент
- Відображається як сервіс в кабінеті НОДИ
**Monitor Agent:**
- AI агент (з LLM)
- Відображається як агент в кабінеті НОДИ
- Чат з користувачем
- Збір та аналіз подій
**Висновок:** Не об'єднувати! Це різні компоненти:
- NodeAgent = координатор (сервіс)
- Monitor Agent = аналітик (агент)
---
## ✅ Готово
- ✅ Monitor Agent на НОДА1 та НОДА2
- ✅ API endpoints для Memory Service
- ✅ Автоматичне збереження подій
- ✅ Батчинг для оптимізації
- ✅ NodeAgent відображається як сервіс
- ✅ Monitor Agent відображається як агент
---
**Status:** ✅ Complete
**Date:** 2025-01-27