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,165 @@
# ✅ Swapper Service - Інтеграція виконана
**Дата:** 2025-11-22
**Статус:** ✅ Інтегровано в кабінети
---
## ✅ Виконані кроки
### 1. ✅ Swapper Service запущено
- Сервіс запущено локально на порту 8890
- API доступний: `http://localhost:8890`
- Health endpoint працює: `/health`
- Cabinet API працює: `/api/cabinet/swapper/status`
### 2. ✅ Компоненти інтегровано
- ✅ Скопійовано `cabinet-integration.tsx``src/components/swapper/SwapperComponents.tsx`
- ✅ Скопійовано `cabinet-integration.css``src/styles/swapper.css`
- ✅ Створено `SwapperPage.tsx` - повна сторінка Swapper
- ✅ Створено `SwapperWidget.tsx` - компактний віджет для ConsolePage
### 3. ✅ Маршрути додано
-`/swapper` - повна сторінка Swapper Service
-`/admin/swapper` - альтернативний маршрут
- ✅ Додано в `App.tsx`
### 4. ✅ Інтегровано в ConsolePage
- ✅ Додано `SwapperWidget` в ліву колонку ConsolePage
- ✅ Відображається поруч з WalletInfo
### 5. ✅ Налаштування
- ✅ Створено `.env.local` з конфігурацією API URL
---
## 🚀 Як використати
### Переглянути Swapper Service
1. **Повна сторінка:**
```
http://localhost:3000/swapper
або
http://localhost:3000/admin/swapper
```
2. **Віджет в Console:**
```
http://localhost:3000/console
```
Swapper віджет відображається в лівій колонці
### API Endpoints
```bash
# Health check
curl http://localhost:8890/health
# Status для кабінету
curl http://localhost:8890/api/cabinet/swapper/status
# Метрики
curl http://localhost:8890/api/cabinet/swapper/metrics/summary
```
---
## 📁 Створені/Оновлені файли
1. ✅ `src/pages/SwapperPage.tsx` - нова сторінка
2. ✅ `src/components/swapper/SwapperComponents.tsx` - компоненти
3. ✅ `src/styles/swapper.css` - стилі
4. ✅ `src/components/console/SwapperWidget.tsx` - віджет
5. ✅ `src/pages/ConsolePage.tsx` - оновлено (додано SwapperWidget)
6. ✅ `src/App.tsx` - оновлено (додано маршрути)
7. ✅ `.env.local` - конфігурація
---
## 🎨 Що відображається
### SwapperPage (повна сторінка)
- ✅ Статус Swapper Service
- ✅ Активна модель (якщо є)
- ✅ Список всіх моделей зі статусом
- ✅ Uptime кожної моделі (в годинах)
- ✅ Кнопки Load/Unload моделей
- ✅ Підсумкові метрики
### SwapperWidget (в ConsolePage)
- ✅ Компактний віджет
- ✅ Активна модель
- ✅ Статус сервісу
- ✅ Швидкий доступ до повної сторінки
---
## 🔧 Налаштування для Node #1
Для Node #1 (Production Server) потрібно:
1. **Оновити `.env.local`:**
```bash
VITE_SWAPPER_URL=http://swapper-service:8890
# або через Nginx:
VITE_SWAPPER_URL=https://gateway.daarion.city/api/swapper
```
2. **Деплой на сервер:**
```bash
./scripts/deploy-swapper-node1.sh
```
---
## 🧪 Тестування
### 1. Перевірити Swapper Service
```bash
curl http://localhost:8890/health
```
### 2. Відкрити в браузері
- Повна сторінка: `http://localhost:3000/swapper`
- Віджет: `http://localhost:3000/console`
### 3. Перевірити функціональність
- Завантажити модель
- Перевірити uptime
- Перевірити метрики
---
## 📋 Наступні кроки (опціонально)
1. **Додати в навігацію ConsolePage:**
- Кнопка "Swapper Service" в навігації
- Швидкий доступ до повної сторінки
2. **Додати real-time оновлення:**
- WebSocket або polling для оновлення статусу
- Автоматичне оновлення кожні 30 секунд
3. **Додати графіки:**
- Графік uptime моделей
- Графік request count
- Історія завантаження/вивантаження
---
## ✅ Готово!
Swapper Service успішно інтегровано в кабінети:
- ✅ Сервіс запущено
- ✅ Компоненти додано
- ✅ Маршрути налаштовано
- ✅ Віджет додано в ConsolePage
**Можна використовувати!** 🎉
---
**Last Updated:** 2025-11-22
**Status:** ✅ Інтеграція завершена