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

147
SWAPPER-CABINETS-FIXED.md Normal file
View File

@@ -0,0 +1,147 @@
# ✅ Swapper Service Connections - Виправлено в кабінетах нод
**Дата:** 2025-11-22
**Статус:** ✅ Готово до використання
---
## 🎉 Виконано
### ✅ 1. Виправлено відображення
- ✅ Swapper Service Connections відображається в кабінеті кожної ноди
- ✅ Отримання даних через API `/api/node/{node_id}`
- ✅ Автоматичне виявлення swapper_url для кожної ноди
### ✅ 2. Підсвічування активної моделі
- ✅ Активна модель підсвічується зеленим кольором
- ✅ Зелений фон для рядка активної моделі
- ✅ Зелена анімація для індикатора активної моделі
- ✅ Бейдж "ACTIVE" для активної моделі
- ✅ Окремий блок "Active Model" з деталями
### ✅ 3. Детальна інформація про моделі
- ✅ Model Name (з підсвічуванням активної)
- ✅ Ollama Name
- ✅ Type (llm/code/vision/math)
- ✅ Size (GB) - вага моделі
- ✅ Priority (high/medium/low)
- ✅ Status (Loaded/Unloaded)
- ✅ Uptime (hours) - час роботи
- ✅ Requests - кількість запитів
### ✅ 4. Real-time оновлення
- ✅ Автоматичне оновлення кожні 10 секунд
- ✅ Кнопка "Refresh" для ручного оновлення
- ✅ Відображення в реальному часі
---
## 🎨 Візуальні покращення
### Активна модель:
- 🟢 Зелений фон рядка (`bg-green-500/10`)
- 🟢 Зелена рамка (`border-green-500/30`)
- 🟢 Зелений текст назви (`text-green-300`)
- 🟢 Анімований індикатор (`animate-pulse`)
- 🟢 Бейдж "ACTIVE"
### Окремий блок Active Model:
- Зелена картка з активною моделлю
- Деталі: Uptime, Requests, Size
- Відображається перед таблицею всіх моделей
---
## 📊 Структура відображення
### 1. Заголовок Swapper Service
- Статус (healthy/error)
- Режим роботи (single-active)
- Кнопка Refresh
### 2. Блок Active Model (якщо є)
- Зелена картка
- Назва моделі
- Uptime, Requests, Size
### 3. Таблиця всіх моделей
- Model Name (з підсвічуванням активної)
- Ollama Name
- Type, Size, Priority
- Status, Uptime, Requests
### 4. Підсумок
- Total models
- Loaded / Total
---
## 🔧 Технічні деталі
### Отримання даних:
1. Отримує `swapper_url` з конфігурації ноди
2. Спробує різні API endpoints:
- `/api/cabinet/swapper/status`
- `/api/status`
- `/api/models`
- `/status`
- `/health` (fallback)
### Підсвічування:
```javascript
// Активна модель
rowClass = isActive
? 'bg-green-500/10 border-green-500/30'
: 'hover:bg-slate-800/50';
// Зелений текст
text-green-300 для активної моделі
```
---
## 🧪 Тестування
### 1. Перевірити відображення
```bash
# Node #2
curl http://localhost:8899/node/node-2
# Node #1
curl http://localhost:8899/node/node-1
```
### 2. Відкрити в браузері
```
http://localhost:8899/node/node-2 # Node #2 кабінет
http://localhost:8899/node/node-1 # Node #1 кабінет
```
### 3. Перевірити функціональність
- ✅ Swapper Service Connections відображається
- ✅ Активна модель підсвічується зеленим
- ✅ Таблиця моделей з описом та вагами
- ✅ Real-time оновлення працює
---
## ✅ Готово!
**Swapper Service Connections виправлено та покращено!** 🎉
- ✅ Відображається в кабінеті кожної ноди
- ✅ Активна модель підсвічується зеленим
- ✅ Детальна інформація про моделі
- ✅ Real-time оновлення
**Можна використовувати прямо зараз!**
---
**Last Updated:** 2025-11-22
**Status:** ✅ Готово до використання
**URL:** `http://localhost:8899/node/node-1` або `/node/node-2`