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,199 @@
# ✅ Swapper Service інтегровано в кабінети нод
**Дата:** 2025-11-23
**Статус:** ✅ Готово до використання
---
## 🎉 Що зроблено
### ✅ 1. Видалено окрему сторінку Swapper
**Зміни:**
- ✅ Видалено маршрути `/swapper` та `/admin/swapper` з `src/App.tsx`
- ✅ Видалено імпорт `SwapperPage`
- ✅ Сторінка `SwapperPage` більше не використовується
**Результат:**
-`http://localhost:8899/swapper` - більше не доступна
- ✅ Інформація про Swapper Service тепер в кабінетах нод
---
### ✅ 2. Інтегровано Swapper Service в кабінети нод
**Файл:** `src/pages/NodeCabinetPage.tsx`
**Зміни:**
- ✅ Додано імпорт `SwapperStatusCard` та `SwapperMetricsSummary`
- ✅ Додано окрему секцію "Swapper Service" в вкладці "Сервіси"
- ✅ Відображення детальної інформації про Swapper Service для кожної ноди окремо
- ✅ Автоматичне визначення URL Swapper Service в залежності від ноди:
- НОДА1: `http://144.76.224.179:8890`
- НОДА2: `http://192.168.1.244:8890`
**Структура:**
```
Вкладка "Сервіси"
├── 🔄 Swapper Service (детальна інформація)
│ ├── SwapperStatusCard (статус, активна модель, список моделей)
│ └── SwapperMetricsSummary (метрики, статистика)
└── Інші сервіси ноди
├── Node Registry
├── NATS JetStream
└── NodeAgent (тільки НОДА2)
```
---
### ✅ 3. Оновлено SwapperComponents для підтримки нод
**Файл:** `src/components/swapper/SwapperComponents.tsx`
**Зміни:**
- ✅ Додано функцію `getSwapperUrl(nodeId)` для визначення URL по ноді
-`SwapperStatusCard` тепер приймає `nodeId` як prop
-`SwapperMetricsSummary` тепер приймає `nodeId` як prop
- ✅ Автоматичне визначення правильного URL для кожної ноди
**Environment Variables:**
```bash
VITE_SWAPPER_NODE1_URL=http://144.76.224.179:8890
VITE_SWAPPER_NODE2_URL=http://192.168.1.244:8890
VITE_SWAPPER_URL=http://localhost:8890 # fallback
```
---
## 📊 Структура кабінету ноди
### Вкладка "Сервіси"
```
┌─────────────────────────────────────────────────┐
│ 🔄 Swapper Service │
│ Динамічне завантаження та управління AI моделями │
├─────────────────────────────────────────────────┤
│ ┌─────────────────────┬──────────────────────┐ │
│ │ SwapperStatusCard │ SwapperMetricsSummary │ │
│ │ (2/3 ширини) │ (1/3 ширини) │ │
│ │ │ │ │
│ │ - Статус сервісу │ - Всього моделей │ │
│ │ - Активна модель │ - Активних │ │
│ │ - Список моделей │ - Доступних │ │
│ │ - Кнопки управління │ - Uptime │ │
│ │ │ - Запитів │ │
│ └─────────────────────┴──────────────────────┘ │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ Інші сервіси ноди │
│ Сервіси та координатори НОДА1/НОДА2 │
├─────────────────────────────────────────────────┤
│ • Node Registry (порт 9205) │
│ • NATS JetStream (порт 4222) │
│ • NodeAgent (порт 9600) - тільки НОДА2 │
│ • RAG Router (порт 9401) - тільки НОДА2 │
└─────────────────────────────────────────────────┘
```
---
## 🚀 Як використати
### 1. Відкрити кабінет ноди
```bash
# НОДА1
http://localhost:8899/nodes/node-1-hetzner-gex44
# НОДА2
http://localhost:8899/nodes/node-2
```
### 2. Перейти на вкладку "Сервіси"
1. Відкрити кабінет ноди
2. Натиснути на вкладку "Сервіси"
3. Побачити детальну інформацію про Swapper Service
### 3. Переглянути інформацію про Swapper Service
- **Статус сервісу** - healthy/degraded/unhealthy
- **Активна модель** - яка модель зараз завантажена
- **Список моделей** - всі доступні моделі з їх статусами
- **Метрики** - статистика використання
- **Кнопки управління** - завантажити/вивантажити модель
---
## 🔧 Налаштування
### Environment Variables
Додати до `.env`:
```bash
# Swapper Service URLs для кожної ноди
VITE_SWAPPER_NODE1_URL=http://144.76.224.179:8890
VITE_SWAPPER_NODE2_URL=http://192.168.1.244:8890
VITE_SWAPPER_URL=http://localhost:8890 # fallback
```
---
## ✅ Переваги нової структури
1. **Відокремленість по НОДАХ**
- Кожна нода має свою інформацію про Swapper Service
- Не плутаються дані з різних нод
- Чітке розділення метрик та сервісів
2. **Централізована інформація**
- Вся інформація про ноду в одному місці
- Swapper Service, інші сервіси, агенти, метрики - все в кабінеті ноди
3. **Зручність**
- Не потрібно переходити на окрему сторінку
- Вся інформація доступна в контексті ноди
---
## 📝 Наступні кроки (опціонально)
1. **Додати реальні метрики з Prometheus**
- Підключити до Prometheus для отримання реальних метрик
- Відображати графіки використання моделей
2. **Додати історію завантаження моделей**
- Показувати коли та які моделі завантажувалися
- Статистика використання кожної моделі
3. **Додати автоматичне завантаження моделей**
- Налаштування правил автоматичного завантаження
- Тригери для завантаження моделей
---
## ✅ Статус
**Готово:**
- ✅ Видалено окрему сторінку `/swapper`
- ✅ Інтегровано Swapper Service в кабінети нод
- ✅ Відокремлена інформація по НОДАХ
- ✅ Детальна інформація про Swapper Service для кожної ноди
- ✅ Автоматичне визначення URL по ноді
**Результат:**
- ✅ Інформація по НОДАХ відокремлена
- ✅ Swapper Service відображається в кабінетах нод
- ✅ Зручна навігація та структура
---
**Swapper Service повністю інтегровано в кабінети нод!** 🎉
**Доступ:**
- НОДА1: `http://localhost:8899/nodes/node-1-hetzner-gex44` → Вкладка "Сервіси"
- НОДА2: `http://localhost:8899/nodes/node-2` → Вкладка "Сервіси"