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

127
BACKEND-SERVICES-STATUS.md Normal file
View File

@@ -0,0 +1,127 @@
# Статус підключення до Backend Сервісів
**Дата перевірки:** 2025-01-XX
**Статус:** ⚠️ Частково працює
---
## 📊 Результати перевірки
### ✅ Доступні сервіси
1. **DAGI Router (NODE1)**
- URL: `http://144.76.224.179:9102`
- Статус: ✅ **Доступний** (HTTP 200)
- Health check: `{"status":"healthy","service":"dagi-router"}`
- Проблема: ⚠️ LLM провайдери недоступні ("Provider error: All connection attempts failed")
### ❌ Недоступні сервіси
1. **Agent Cabinet Service**
- URL: `http://localhost:8898`
- Статус: ❌ **Недоступний** (Connection refused)
- Призначення: Проміжний сервіс для чату з агентами
2. **NODE1 API**
- URL: `http://144.76.224.179:8899`
- Статус: ❌ **Недоступний** (Connection refused)
- Призначення: API для отримання списку агентів та метрик
3. **API MicroDAO**
- URL: `https://api.microdao.xyz`
- Статус: ❌ **Недоступний** (ERR_NAME_NOT_RESOLVED)
- Призначення: Основний API для мікроДАО
---
## 🔧 Виправлення
### 1. Покращена обробка помилок у чаті
**Файл:** `src/components/microdao/MicroDaoOrchestratorChat.tsx`
**Зміни:**
- ✅ Виправлено `agentId` - прибираємо префікс `agent-` для Router
- ✅ Додано обробку помилок LLM провайдерів
- ✅ Покращено fallback повідомлення для користувача
- ✅ Додано таймаут 15 секунд для запитів
**Код:**
```typescript
// Визначаємо agentId для Router (без префіксу)
let agentId = orchestratorAgentId || orchestrator?.id || 'microdao_orchestrator';
if (agentId.startsWith('agent-')) {
agentId = agentId.replace(/^agent-/, '');
}
// Обробка помилок LLM провайдерів
if (errorMessage.includes('Provider error') ||
errorMessage.includes('connection attempts failed')) {
return {
response: 'LLM сервіс тимчасово недоступний. Модель не може обробити запит зараз.',
message: 'LLM сервіс тимчасово недоступний. Модель не може обробити запит зараз.',
};
}
```
### 2. Покращена обробка помилок у API Client
**Файл:** `src/api/client.ts`
**Зміни:**
- ✅ Помилки підключення обробляються як очікувані
- ✅ Зменшено шум у консолі для fallback випадків
### 3. Покращена обробка Workspace API
**Файл:** `src/api/workspaces.ts`
**Зміни:**
- ✅ Помилки API не логуються як критичні, якщо це очікувана ситуація
- ✅ Fallback дані створюються автоматично
---
## 🚀 Рекомендації
### Для повної функціональності потрібно:
1. **Запустити Agent Cabinet Service**
```bash
# На NODE1 або локально
cd services/agent-cabinet-service
python -m uvicorn app.main:app --host 0.0.0.0 --port 8898
```
2. **Налаштувати LLM провайдери на NODE1**
- Перевірити, чи Ollama працює: `curl http://144.76.224.179:11434/api/tags`
- Перевірити налаштування Router для агента `helion`
- Переконатися, що модель `local_qwen3_8b` доступна
3. **Налаштувати API MicroDAO**
- Або налаштувати DNS для `api.microdao.xyz`
- Або змінити `VITE_API_URL` на доступний сервер
---
## ✅ Поточний стан
- ✅ Frontend працює коректно
- ✅ Fallback обробка працює
- ✅ Сторінка Energy Union відображається
- ✅ Чат з оркестратором працює (з fallback повідомленнями)
- ⚠️ Backend сервіси частково недоступні
- ⚠️ LLM провайдери недоступні
---
## 📝 Наступні кроки
1. Перевірити налаштування Ollama на NODE1
2. Запустити Agent Cabinet Service
3. Налаштувати правильні URL для API сервісів
4. Додати локальний mock сервіс для тестування (опціонально)