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,176 @@
# 🔧 Виправлення підключення Monitor Agent
**Дата:** 2025-11-23
**Проблема:** Monitor Agent Service повертає 500 Internal Server Error при спробі надіслати повідомлення
## 🔍 Діагностика проблеми
### Виявлені проблеми:
1.**Monitor Agent Service працює** на порту 9500
- Health check: `http://localhost:9500/health``{"status":"ok"}`
- Процес: Python (PID: 17336)
2.**Ollama на НОДА2 недоступний**
- URL: `http://192.168.1.244:11434`
- Помилка: Connection refused / Timeout
3.**Ollama локально працює**
- URL: `http://localhost:11434`
- Доступні моделі: `mistral-nemo:12b`, `gpt-oss:latest`, `gemma2:27b`, тощо
### Причина помилки:
Monitor Agent Service налаштований на підключення до Ollama на НОДА2 (`192.168.1.244:11434`), але:
- НОДА2 недоступний з локальної машини
- Ollama працює локально на `localhost:11434`
Коли Monitor Agent Service намагається зробити запит до Ollama на НОДА2, він отримує помилку з'єднання, що призводить до 500 Internal Server Error.
## ✅ Виправлення
### 1. Змінено конфігурацію за замовчуванням
**Файл:** `services/monitor-agent-service/app/main.py`
```python
# Було:
OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://192.168.1.244:11434") # НОДА2
MISTRAL_MODEL = os.getenv("MISTRAL_MODEL", "mistral:7b")
# Стало:
OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434") # Локальний Ollama
MISTRAL_MODEL = os.getenv("MISTRAL_MODEL", "mistral-nemo:12b") # Доступна модель
```
### 2. Додано fallback на доступні моделі
Якщо вказана модель недоступна, сервіс автоматично пробує інші:
1. `mistral-nemo:12b` (за замовчуванням)
2. `gpt-oss:latest`
3. `mistral:7b`
4. `mistral:latest`
### 3. Покращена обробка помилок
- Детальні повідомлення про помилки
- Автоматичний fallback на доступні моделі
- Логування використаної моделі
## 🚀 Як застосувати виправлення
### Варіант 1: Перезапустити сервіс (якщо запущений через uvicorn)
```bash
# Знайти процес
ps aux | grep "uvicorn.*monitor-agent"
# Перезапустити сервіс
cd services/monitor-agent-service
source venv/bin/activate # Якщо використовується venv
python -m uvicorn app.main:app --host 0.0.0.0 --port 9500 --reload
```
### Варіант 2: Налаштувати через environment variables
```bash
# Якщо потрібно підключитися до НОДА2
export OLLAMA_BASE_URL=http://192.168.1.244:11434
# Якщо потрібно використовувати іншу модель
export MISTRAL_MODEL=mistral:7b
# Перезапустити сервіс
```
### Варіант 3: Перевірити, чи сервіс автоматично перезапустився
Якщо сервіс запущений з `--reload`, він має автоматично перезапуститися після зміни файлу.
## ✅ Перевірка
1. **Перевірити health check:**
```bash
curl http://localhost:9500/health
```
Має повернути: `{"status":"ok","service":"monitor-agent-service"}`
2. **Перевірити підключення до Ollama:**
```bash
curl http://localhost:11434/api/tags
```
Має повернути список доступних моделей
3. **Протестувати чат:**
```bash
curl -X POST http://localhost:9500/api/agent/monitor/chat \
-H "Content-Type: application/json" \
-d '{"agent_id":"monitor","message":"Привіт!","node_id":null}'
```
Має повернути відповідь від Monitor Agent
4. **Перевірити в UI:**
- Відкрити `http://localhost:8899/dagi-monitor`
- Надіслати повідомлення в Monitor Agent Chat
- Має з'явитися відповідь замість помилки
## 📝 Налаштування для різних середовищ
### Локальна розробка (за замовчуванням)
```bash
OLLAMA_BASE_URL=http://localhost:11434
MISTRAL_MODEL=mistral-nemo:12b
```
### Підключення до НОДА2
```bash
OLLAMA_BASE_URL=http://192.168.1.244:11434
MISTRAL_MODEL=mistral:7b
```
### Production (якщо Ollama на іншому сервері)
```bash
OLLAMA_BASE_URL=http://ollama-server:11434
MISTRAL_MODEL=mistral:latest
```
## 🎯 Результат
Після виправлення:
- ✅ Monitor Agent Service підключається до локального Ollama
- ✅ Автоматичний fallback на доступні моделі
- ✅ Чат працює без помилок 500
- ✅ Повідомлення від Monitor Agent з'являються в UI
## 🔄 Якщо проблема залишається
1. Перевірте, чи працює Ollama:
```bash
curl http://localhost:11434/api/tags
```
2. Перевірте логи Monitor Agent Service:
```bash
# Якщо запущений через uvicorn, логи в консолі
# Або перевірте процес
ps aux | grep uvicorn
```
3. Перевірте environment variables:
```bash
echo $OLLAMA_BASE_URL
echo $MISTRAL_MODEL
```
4. Перезапустіть сервіс з правильними змінними:
```bash
export OLLAMA_BASE_URL=http://localhost:11434
export MISTRAL_MODEL=mistral-nemo:12b
python -m uvicorn app.main:app --host 0.0.0.0 --port 9500 --reload
```
---
**Статус:** ✅ Виправлено
**Наступні кроки:** Перезапустити Monitor Agent Service для застосування змін