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,148 @@
# ✅ Monitor Agent - Стандартизація завершена
## 🎯 Стандартизація Monitor Agent
### Архітектура
```
┌─────────────────────────────────────────────────────────┐
│ Загальний Monitor Agent (DAARION) │
│ - ID: agent-monitor │
│ - Агрегує дані з усіх НОД та мікроДАО │
│ - Розташований в кабінеті DAARION │
└─────────────────────────────────────────────────────────┘
┌───────────┴───────────┐
│ │
┌───────▼────────┐ ┌─────────▼──────────┐
│ Monitor Agent │ │ Monitor Agent │
│ для НОДИ │ │ для мікроДАО │
│ │ │ │
│ monitor-node-1│ │ monitor-microdao- │
│ monitor-node-2│ │ {microdao_id} │
└───────────────┘ └────────────────────┘
```
## 📋 Структура нумерації
### 1. Monitor Agent для НОДИ
- **ID:** `agent-monitor-{node_id}`
- **Приклади:**
- `agent-monitor-node-1` - Monitor Agent для НОДА1
- `agent-monitor-node-2` - Monitor Agent для НОДА2
- `agent-monitor-node-3` - Monitor Agent для НОДА3
### 2. Monitor Agent для мікроДАО
- **ID:** `agent-monitor-microdao-{microdao_id}`
- **Приклади:**
- `agent-monitor-microdao-daarion-dao` - Monitor Agent для DAARION
- `agent-monitor-microdao-greenfood` - Monitor Agent для GREENFOOD
- `agent-monitor-microdao-energy-union` - Monitor Agent для ENERGY UNION
### 3. Загальний Monitor Agent
- **ID:** `agent-monitor`
- **Призначення:** Агрегація даних з усіх НОД та мікроДАО
- **Розташований:** Кабінет мікроДАО DAARION
## 🔧 Реалізація
### 1. Monitor Agent Factory
**Файл:** `src/utils/monitorAgentFactory.ts`
**Функції:**
- `createNodeMonitorAgent(nodeId, nodeName)` - Створити Monitor Agent для НОДИ
- `createMicroDaoMonitorAgent(microDaoId, microDaoName)` - Створити Monitor Agent для мікроДАО
- `createGlobalMonitorAgent()` - Створити загальний Monitor Agent
- `getMonitorAgentChatUrl(agentId, nodeId?, microDaoId?)` - Отримати URL для чату
- `hasNodeMonitorAgent(nodeId, agents)` - Перевірити існування Monitor Agent для ноди
- `hasMicroDaoMonitorAgent(microDaoId, agents)` - Перевірити існування Monitor Agent для мікроДАО
### 2. Компоненти
#### NodeMonitorChat
**Файл:** `src/components/monitor/NodeMonitorChat.tsx`
- Monitor Agent для конкретної НОДИ
- Фільтрує події тільки для цієї ноди
- Інтегровано в `NodeCabinetPage`
#### MicroDaoMonitorChat
**Файл:** `src/components/monitor/MicroDaoMonitorChat.tsx`
- Monitor Agent для конкретного мікроДАО
- Фільтрує події тільки для цього мікроДАО
- Інтегровано в `MicroDaoCabinetPage`
#### DaarionMonitorChat
**Файл:** `src/components/monitor/DaarionMonitorChat.tsx`
- Загальний Monitor Agent для всіх НОД та мікроДАО
- Агрегує події з усієї системи
- Інтегровано в `DaarionCabinetPage`
### 3. Backend Endpoints
**Файл:** `services/monitor-agent-service/app/main.py`
**Endpoints:**
- `POST /api/agent/monitor/chat` - Загальний Monitor Agent
- `POST /api/agent/monitor-node-{node_id}/chat` - Monitor Agent для НОДИ
- `POST /api/agent/monitor-microdao-{microdao_id}/chat` - Monitor Agent для мікроДАО
## ✅ Інтеграція
### Кабінети НОД
**Файл:** `src/pages/NodeCabinetPage.tsx`
- ✅ Додано `NodeMonitorChat` компонент
- ✅ Автоматично відображається для кожної НОДИ
- ✅ Фільтрує події по `node_id`
### Кабінети мікроДАО
**Файл:** `src/pages/MicroDaoCabinetPage.tsx`
- ✅ Додано `MicroDaoMonitorChat` компонент
- ✅ Автоматично відображається для кожного мікроДАО
- ✅ Фільтрує події по `microdao_id`
### Кабінет DAARION
**Файл:** `src/pages/DaarionCabinetPage.tsx`
- ✅ Додано `DaarionMonitorChat` компонент
- ✅ Загальний Monitor Agent для всієї системи
- ✅ Агрегує події з усіх НОД та мікроДАО
## 🚀 Автоматичне створення
### При створенні нової НОДИ
1. Автоматично створюється Monitor Agent з ID `agent-monitor-{node_id}`
2. Додається в список агентів ноди
3. Інтегрується в кабінет ноди через `NodeMonitorChat`
### При створенні нового мікроДАО
1. Автоматично створюється Monitor Agent з ID `agent-monitor-microdao-{microdao_id}`
2. Додається в список агентів мікроДАО
3. Інтегрується в кабінет мікроДАО через `MicroDaoMonitorChat`
## 📊 Поточний стан
| Компонент | Статус | Деталі |
|-----------|--------|--------|
| **Monitor Agent Factory** | ✅ Готово | Утиліти для створення Monitor Agent |
| **NodeMonitorChat** | ✅ Готово | Monitor Agent для НОДИ |
| **MicroDaoMonitorChat** | ✅ Готово | Monitor Agent для мікроДАО |
| **DaarionMonitorChat** | ✅ Готово | Загальний Monitor Agent |
| **Backend Endpoints** | ✅ Готово | Підтримка всіх типів Monitor Agent |
| **Інтеграція в кабінети** | ✅ Готово | Всі кабінети мають свої Monitor Agent |
## 🎯 Наступні кроки
1. ✅ Стандартизація завершена
2. ⏳ Автоматичне створення при створенні нової НОДИ (потрібно додати в API)
3. ⏳ Автоматичне створення при створенні нового мікроДАО (потрібно додати в API)
---
**Last Updated:** 2025-01-27
**Status:** ✅ Стандартизація завершена