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,372 @@
# 📊 Статус мультимодальних сервісів на NODE1
**Дата:** 2025-11-23
**Питання:** Чи працюють мультимодальні сервіси з кожним агентом на NODE1?
**Відповідь:** ⚠️ **ЧАСТКОВО** - потрібна інтеграція
---
## 🎯 ПОТОЧНА СИТУАЦІЯ
### ✅ Що ВЖЕ працює на NODE1:
#### 1. **Router (9102)** - Базова маршрутизація
- ✅ Telegram боти підключені (DAARWIZZ, Helion, GREENFOOD)
-Всі 13 агентів NODE1 доступні через Router
- ✅ Текстові повідомлення працюють
- ✅ Базовий чат з агентами
**Поточний запит:**
```json
POST http://144.76.224.179:9102/route
{
"agent": "helion",
"message": "Привіт!",
"mode": "chat"
}
```
---
#### 2. **Telegram Gateway (9200)** - Базова інтеграція
**Файл:** `telegram-infrastructure/telegram-gateway`
**Що працює:**
- ✅ Long polling через Local Telegram Bot API (8081)
- ✅ NATS event bus (`agent.telegram.update`)
- ✅ 3 активні боти:
- @DAARWIZZBot
- @energyunionBot
- @greenfoodliveBot
**Поточні можливості:**
- 📝 Текстові повідомлення
- 📷 Фото (але не обробляються!)
- 🎤 Голосові (але не транскрибуються!)
- 📎 Файли (але не обробляються!)
---
#### 3. **Існуючі сервіси на NODE1** (з інвентаризації)
```bash
# STT Service (старий)
http://dagi-stt:9000/stt # через docker network
# TTS Service
http://dagi-tts:9100/tts
# Parser Service
http://dagi-parser:9400
# Vision / Swapper
http://144.76.224.179:8890 # qwen3-vl:8b
```
---
### ❌ Що НЕ працює (потрібна інтеграція):
#### 1. **Мультимодальні сервіси (НОДА2)**
**Розташування:** НОДА2 (192.168.1.244)
| Сервіс | Порт | Статус | Доступ з NODE1 |
|--------|------|--------|----------------|
| STT Service (новий) | 8895 | ✅ Готовий | ❌ Не підключено |
| OCR Service | 8896 | ✅ Готовий | ❌ Не підключено |
| Web Search | 8897 | ✅ Готовий | ❌ Не підключено |
| Vector DB | 8898 | ✅ Готовий | ❌ Не підключено |
**Проблема:** Сервіси створені, але не інтегровані з Router на NODE1!
---
#### 2. **Router Multimodal Support**
**Файл:** `services/router-multimodal/router_multimodal.py`
**Статус:** 📝 Код готовий, але НЕ інтегрований!
**Що потрібно:**
- [ ] Додати `process_images()` в Router
- [ ] Додати `process_files()` в Router
- [ ] Оновити `/route` endpoint
- [ ] Додати Vision agents маппінг
---
## 🤔 ВІДПОВІДЬ НА ПИТАННЯ
### Чи працюють мультимодальні сервіси з агентами NODE1?
**Коротка відповідь:****НІ**, поки що не працюють.
**Детальна відповідь:**
#### 📝 **Текстовий чат:**
**ТАК** - працює для всіх агентів через:
- Frontend чат (`http://localhost:8899`)
- Telegram боти (@DAARWIZZBot, @energyunionBot, @greenfoodliveBot)
- Router API (`http://144.76.224.179:9102/route`)
---
#### 🎤 **Голосові повідомлення (Voice → Text):**
⚠️ **ЧАСТКОВО**
**Telegram боти:**
-**НЕ транскрибуються** - голос надходить, але не конвертується в текст
- Існує старий STT на NODE1 (`dagi-stt:9000`), але він не інтегрований з Telegram Gateway
**Frontend чат:**
-**Запис працює** (Web Audio API)
-**Транскрипція НЕ працює** - новий STT Service (НОДА2:8895) готовий, але не підключений
**Що потрібно:**
1. Інтегрувати STT Service (НОДА2:8895) з Telegram Gateway
2. Додати автоматичну транскрипцію голосових повідомлень
---
#### 📷 **Зображення (Image → Analysis):**
⚠️ **ЧАСТКОВО**
**Telegram боти:**
- ✅ Можуть **отримувати** фото
-**НЕ обробляють** - потрібна інтеграція з Vision agents
**Frontend чат:**
-**Upload працює** (Enhanced Chat)
-**Vision аналіз НЕ працює** - Router не підтримує `payload.context.images`
**Що потрібно:**
1. Оновити Router для підтримки `images` в payload
2. Підключити Vision agents (Sofia grok-4.1, Spectra qwen3-vl)
3. Інтегрувати з Telegram Gateway
---
#### 📎 **Файли (Document → Extract Text):**
⚠️ **ЧАСТКОВО**
**Telegram боти:**
- ✅ Можуть **отримувати** документи
- ⚠️ **Parser Service існує** (`dagi-parser:9400`), але обмежений
-**OCR НЕ підключений** для сканів/зображень з текстом
**Frontend чат:**
-**Upload працює** (Enhanced Chat)
-**OCR НЕ працює** - OCR Service (НОДА2:8896) не підключений
**Що потрібно:**
1. Інтегрувати OCR Service для витягу тексту з зображень
2. Розширити Parser Service для більшої кількості форматів
3. Додати підтримку `files` в Router payload
---
#### 🌐 **Веб-пошук (Web Search):**
⚠️ **ЧАСТКОВО**
**Router:**
- ✅ Існує `mode=web_search` в Router
-Не використовує новий Web Search Service (НОДА2:8897)
**Frontend чат:**
-**UI кнопка є** (Enhanced Chat)
-**Не підключена** до Web Search Service
**Що потрібно:**
1. Інтегрувати Web Search Service в Router
2. Підключити до Telegram Gateway
3. Активувати в Frontend
---
#### 📚 **Knowledge Base (Vector DB):**
**НІ** - зовсім не працює
**Статус:**
- ✅ Vector DB Service готовий (НОДА2:8898)
- ✅ Frontend UI готовий (Knowledge Base компонент)
-**Не інтегрований** з жодним агентом
-**RAG не працює**
**Що потрібно:**
1. Підключити Vector DB до Router
2. Реалізувати RAG (Retrieval-Augmented Generation)
3. Додати API для завантаження документів
---
## 🔧 ЩО ПОТРІБНО ЗРОБИТИ
### Пріоритет 1: Інтеграція Router Multimodal
**Файли для оновлення:**
```bash
# NODE1
/opt/microdao-daarion/router/main.py
/opt/microdao-daarion/router/router-config-final.yml
```
**Код готовий:** `services/router-multimodal/router_multimodal.py`
**Зміни:**
1. Додати `process_images()` функцію
2. Додати `process_files()` функцію
3. Оновити `/route` endpoint для підтримки `payload.context.images` та `payload.context.files`
4. Додати Vision agents маппінг (Sofia, Spectra)
**Час:** ~2-3 години
---
### Пріоритет 2: Інтеграція Telegram Gateway з мультимодальними сервісами
**Файл для оновлення:**
```bash
telegram-infrastructure/telegram-gateway/app/main.py
```
**Зміни:**
1. При отриманні голосового повідомлення → викликати STT Service (НОДА2:8895)
2. При отриманні фото → передати в Router з `images` payload
3. При отриманні документа → викликати OCR/Parser
4. Додати підтримку веб-пошуку через команди
**Час:** ~3-4 години
---
### Пріоритет 3: Інтеграція Frontend з мультимодальними сервісами
**Файли для оновлення:**
```
src/components/microdao/MicroDaoOrchestratorChatEnhanced.tsx
src/components/microdao/chat/MultimodalInput.tsx
```
**Зміни:**
1. ✅ STT вже інтегрований
2. Додати виклик OCR Service при upload зображення з текстом
3. Активувати Web Search Service
4. Підключити Vector DB для Knowledge Base
**Час:** ~2 години
---
## 📊 ПІДСУМОК
### Поточний стан мультимодальності:
| Функція | Frontend | Telegram | Router | Статус |
|---------|----------|----------|--------|--------|
| 📝 Текст | ✅ | ✅ | ✅ | **ПРАЦЮЄ** |
| 🎤 Голос → Текст | ⚠️ | ❌ | ❌ | **ЧАСТКОВО** |
| 📷 Зображення → Vision | ❌ | ❌ | ❌ | **НЕ ПРАЦЮЄ** |
| 📷 Зображення → OCR | ❌ | ❌ | ❌ | **НЕ ПРАЦЮЄ** |
| 📎 Документи | ⚠️ | ⚠️ | ⚠️ | **ЧАСТКОВО** |
| 🌐 Веб-пошук | ❌ | ❌ | ⚠️ | **НЕ ПРАЦЮЄ** |
| 📚 Knowledge Base | ❌ | ❌ | ❌ | **НЕ ПРАЦЮЄ** |
---
### Відповідь на питання:
**"На НОДА1 всі мультимодальні сервіси працюють з кожним агентом який підключено до чату або телеграм бота?"**
**НІ**, на даний момент:
1. **Мультимодальні сервіси створені** (STT, OCR, Web Search, Vector DB) на НОДА2
2. **Frontend UI готовий** (Enhanced Chat з кнопками)
3. **Router НЕ підтримує** multimodal payload
4. **Telegram боти НЕ обробляють** голос/фото/файли через нові сервіси
5. **Агенти отримують** тільки текстові повідомлення
---
### Щоб запрацювало:
**Необхідні кроки:**
1. **Інтегрувати Router Multimodal** (NODE1)
- Час: ~2-3 години
- Файл: `router/main.py`
- Код готовий: `services/router-multimodal/router_multimodal.py`
2. **Оновити Telegram Gateway** (NODE1)
- Час: ~3-4 години
- Файл: `telegram-gateway/app/main.py`
- Додати виклики STT/OCR/Parser
3. **Налаштувати мережеве з'єднання** НОДА2 → NODE1
- Час: ~1 година
- Відкрити порти: 8895, 8896, 8897, 8898
- Налаштувати firewall/SSH тунелі
**Загальний час:** ~7-9 годин роботи
---
## 🚀 ШВИДКИЙ СТАРТ
### Варіант 1: Мінімальна інтеграція (тільки STT для голосу)
```bash
# 1. Відкрити порт STT Service на НОДА2
ssh apple@192.168.1.244
sudo ufw allow 8895/tcp
# 2. Оновити Telegram Gateway на NODE1
ssh root@144.76.224.179
cd /opt/microdao-daarion/telegram-gateway
# Додати в app/main.py:
# async def transcribe_voice(file_id: str) -> str:
# # Download voice from Telegram
# # Send to НОДА2:8895/api/stt
# # Return transcribed text
```
**Результат:** Голосові повідомлення в Telegram → автоматично конвертуються в текст → агент отримує текст
**Час:** ~1-2 години
---
### Варіант 2: Повна інтеграція (всі сервіси)
1. Деплой всіх сервісів на НОДА2
2. Інтеграція Router Multimodal
3. Оновлення Telegram Gateway
4. Налаштування мережі
5. End-to-end тестування
**Час:** ~7-9 годин
---
## 📞 РЕКОМЕНДАЦІЇ
### Для швидкого результату:
1. **Почати з STT** (голосові → текст)
- Найпростіша інтеграція
- Великий ефект для користувачів
- 1-2 години роботи
2. **Потім Vision** (зображення → аналіз)
- Інтеграція Sofia/Spectra
- Router Multimodal
- 3-4 години роботи
3. **Останнім OCR + Web Search**
- Менше використовується
- Може почекати
---
**ВИСНОВОК:** Мультимодальні сервіси **створені та готові**, але **не інтегровані** з агентами. Потрібна інтеграція Router + Telegram Gateway для повної функціональності.
**Статус:** 🟡 **ГОТОВО ДО ІНТЕГРАЦІЇ** (код є, потрібен деплой)