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,211 @@
# 🔧 Troubleshooting Swapper Service
**Дата:** 2025-11-23
**Проблема:** Swapper Service недоступний на НОДА1
---
## 🐛 Проблема
**Симптоми:**
- Swapper Service показує "недоступний" в кабінеті НОДА1
- URL: `http://144.76.224.179:8890`
- Помилка при спробі отримати статус
---
## 🔍 Діагностика
### 1. Перевірити чи запущений Swapper Service на сервері
```bash
# SSH до НОДА1
ssh root@144.76.224.179
# Перевірити контейнер
docker ps | grep swapper
# Перевірити логи
docker logs swapper-service --tail 50
# Перевірити статус
docker inspect swapper-service | grep Status
```
### 2. Перевірити health endpoint
```bash
# На сервері
curl http://localhost:8890/health
# З локальної машини (якщо файрвол дозволяє)
curl http://144.76.224.179:8890/health
```
### 3. Перевірити порт та доступність
```bash
# На сервері
netstat -tuln | grep 8890
ss -tuln | grep 8890
# Перевірити файрвол
ufw status
iptables -L -n | grep 8890
```
### 4. Перевірити docker-compose
```bash
# На сервері
cd /opt/microdao-daarion
docker-compose ps swapper-service
docker-compose logs swapper-service
```
---
## 🔧 Рішення
### Варіант 1: Перевірити чи запущений Swapper Service
```bash
# На сервері
ssh root@144.76.224.179
# Перевірити контейнер
docker ps | grep swapper
# Якщо не запущений - запустити
cd /opt/microdao-daarion
docker-compose up -d swapper-service
# Перевірити логи
docker-compose logs swapper-service --tail 50
```
### Варіант 2: Перезапустити Swapper Service
```bash
# На сервері
cd /opt/microdao-daarion
docker-compose restart swapper-service
# Або повний перезапуск
docker-compose down swapper-service
docker-compose up -d swapper-service
```
### Варіант 3: Перевірити доступні endpoints
```bash
# На сервері
# Базовий health endpoint (має працювати)
curl http://localhost:8890/health
# Базовий status endpoint (має працювати)
curl http://localhost:8890/status
# Cabinet API endpoint (може не працювати, якщо router не підключений)
curl http://localhost:8890/api/cabinet/swapper/status
```
**Примітка:** Якщо `/api/cabinet/swapper/status` повертає 404, але `/status` працює - це нормально. Frontend автоматично використає базовий endpoint як fallback.
### Варіант 2: Перевірити конфігурацію
```bash
# На сервері
cd /opt/microdao-daarion
cat docker-compose.yml | grep -A 20 swapper-service
```
### Варіант 3: Перевірити файрвол
```bash
# На сервері
# Якщо використовується ufw
ufw allow 8890/tcp
# Якщо використовується iptables
iptables -A INPUT -p tcp --dport 8890 -j ACCEPT
```
### Варіант 4: Перевірити CORS налаштування
Якщо Swapper Service працює, але не відповідає з браузера, можлива проблема з CORS:
```bash
# На сервері, перевірити налаштування CORS в Swapper Service
docker exec swapper-service cat /app/config.py | grep CORS
```
---
## 📊 Оновлення коду
### Покращена обробка помилок
**Файл:** `src/components/swapper/SwapperComponents.tsx`
**Зміни:**
- ✅ Збільшено таймаут до 10 секунд
- ✅ Додано перевірку health endpoint перед основним запитом
- ✅ Покращено повідомлення про помилки з детальною інформацією
- ✅ Додано інструкції для діагностики
**Файл:** `src/components/swapper/SwapperDetailedMetrics.tsx`
**Зміни:**
- ✅ Додано перевірку health endpoint
- ✅ Покращено обробку помилок
- ✅ Додано інструкції для діагностики
---
## ✅ Перевірка після виправлення
1. **Відкрити кабінет НОДА1:**
```
http://localhost:8899/nodes/node-1-hetzner-gex44
```
2. **Перейти на вкладку "Сервіси"**
3. **Перевірити Swapper Service:**
- Має відображатися статус або детальна помилка
- Якщо помилка - слідувати інструкціям в повідомленні
---
## 🎯 Наступні кроки
1. **Перевірити на сервері:**
```bash
ssh root@144.76.224.179 "docker ps | grep swapper"
ssh root@144.76.224.179 "curl http://localhost:8890/health"
```
2. **Якщо сервіс не запущений:**
```bash
ssh root@144.76.224.179 "cd /opt/microdao-daarion && docker-compose up -d swapper-service"
```
3. **Якщо сервіс працює, але не доступний ззовні:**
- Перевірити файрвол
- Перевірити налаштування мережі
- Перевірити CORS налаштування
---
## 📝 Примітки
- Swapper Service має бути доступний на порту 8890
- Health endpoint: `http://144.76.224.179:8890/health`
- Status endpoint: `http://144.76.224.179:8890/api/cabinet/swapper/status`
- Якщо сервіс працює локально, але не доступний ззовні - проблема в файрволі або мережевих налаштуваннях
---
**Оновлено:** 2025-11-23