- 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
181 lines
5.7 KiB
Markdown
181 lines
5.7 KiB
Markdown
# ✅ Виправлення відображення агентів-оркестраторів в кабінетах мікроДАО
|
||
|
||
**Дата:** 2025-11-23
|
||
**Статус:** ✅ Виправлено
|
||
|
||
---
|
||
|
||
## 🐛 Проблема
|
||
|
||
В кабінетах мікроДАО не відображалися:
|
||
- Агенти-оркестратори (greenfood, daarwizz, helion)
|
||
- Функціонал мікроДАО
|
||
|
||
---
|
||
|
||
## ✅ Рішення
|
||
|
||
### 1. Інтеграція агентів з НОДИ1
|
||
|
||
**Додано:**
|
||
- Отримання агентів з НОДИ1 через `getNode1Agents()`
|
||
- Пошук оркестратора серед агентів з НОДИ1
|
||
- Об'єднання агентів з API та з НОДИ1
|
||
|
||
**Файл:** `src/pages/MicroDaoCabinetPage.tsx`
|
||
|
||
```typescript
|
||
// Отримуємо агентів з НОДИ1
|
||
const { data: node1AgentsData } = useQuery({
|
||
queryKey: ['node1-agents-for-microdao', microDaoId],
|
||
queryFn: async () => {
|
||
try {
|
||
return await getNode1Agents();
|
||
} catch (error) {
|
||
console.error('Error fetching node1 agents:', error);
|
||
return null;
|
||
}
|
||
},
|
||
enabled: !!microDaoId,
|
||
});
|
||
|
||
// Знаходимо оркестратора
|
||
const orchestratorFromNode1 = node1AgentsData?.items?.find(
|
||
(agent: Node1Agent) =>
|
||
agent.id === orchestratorAgentId ||
|
||
agent.id === `agent-${orchestratorAgentId}` ||
|
||
// Спеціальні випадки для кожного агента
|
||
(orchestratorAgentId === 'greenfood' && agent.id === 'agent-greenfood-assistant') ||
|
||
(orchestratorAgentId === 'daarwizz' && agent.id === 'agent-daarwizz') ||
|
||
(orchestratorAgentId === 'helion' && agent.id === 'agent-helion')
|
||
);
|
||
|
||
// Об'єднуємо агенти
|
||
const allAgents = [
|
||
...(agentsData?.items || []),
|
||
...(orchestratorFromNode1 ? [{
|
||
id: orchestratorFromNode1.id,
|
||
name: orchestratorFromNode1.name,
|
||
role: orchestratorFromNode1.role || 'Оркестратор мікроДАО',
|
||
language: 'uk',
|
||
focus: orchestratorFromNode1.category || 'Оркестрація',
|
||
enabled: orchestratorFromNode1.status === 'active',
|
||
type: 'orchestrator' as const,
|
||
node1Agent: orchestratorFromNode1,
|
||
}] : []),
|
||
];
|
||
```
|
||
|
||
---
|
||
|
||
### 2. Покращене відображення агентів
|
||
|
||
**Додано:**
|
||
- Візуальне виділення оркестраторів (фіолетовий колір, іконка корони)
|
||
- Кнопка "Кабінет" для переходу до кабінету агента
|
||
- Додаткова інформація про модель та ноду
|
||
|
||
**Візуальні зміни:**
|
||
- Оркестратори мають фіолетовий border та фон
|
||
- Іконка корони для оркестраторів
|
||
- Бейдж "Оркестратор"
|
||
- Інформація про модель та ноду
|
||
|
||
---
|
||
|
||
### 3. Маппінг агентів
|
||
|
||
**ID агентів на НОДИ1:**
|
||
- `greenfood` → `agent-greenfood-assistant`
|
||
- `daarwizz` → `agent-daarwizz`
|
||
- `helion` → `agent-helion`
|
||
|
||
**Логіка пошуку:**
|
||
1. Перевірка точного співпадіння ID
|
||
2. Перевірка з префіксом `agent-`
|
||
3. Перевірка спеціальних випадків для кожного агента
|
||
4. Перевірка за назвою
|
||
|
||
---
|
||
|
||
## 📊 Результат
|
||
|
||
### Відображення агентів
|
||
|
||
**Вкладка "Агенти":**
|
||
- ✅ Всі агенти з API
|
||
- ✅ Оркестратор з НОДИ1 (якщо є)
|
||
- ✅ Візуальне виділення оркестраторів
|
||
- ✅ Кнопка переходу до кабінету агента
|
||
- ✅ Інформація про модель та ноду
|
||
|
||
**Статистика:**
|
||
- ✅ Кількість агентів включає оркестратора
|
||
- ✅ Відображається на головній сторінці
|
||
|
||
**Чат з оркестратором:**
|
||
- ✅ Автоматично визначає оркестратора
|
||
- ✅ Використовує правильний ID агента
|
||
|
||
---
|
||
|
||
## 🎯 Приклади
|
||
|
||
### GREENFOOD мікроДАО
|
||
|
||
**Оркестратор:**
|
||
- ID: `agent-greenfood-assistant`
|
||
- Назва: `GREENFOOD Assistant`
|
||
- Роль: `GREENFOOD ERP Orchestrator`
|
||
- Тип: `orchestrator`
|
||
- Нода: НОДА1
|
||
|
||
**Відображення:**
|
||
- Фіолетовий border та фон
|
||
- Іконка корони
|
||
- Бейдж "Оркестратор"
|
||
- Кнопка "Кабінет"
|
||
|
||
---
|
||
|
||
### DAARION мікроДАО
|
||
|
||
**Оркестратор:**
|
||
- ID: `agent-daarwizz`
|
||
- Назва: `Daarwizz`
|
||
- Роль: `Main User Interface Agent`
|
||
- Тип: `worker` (але є оркестратором мікроДАО)
|
||
- Нода: НОДА1
|
||
|
||
---
|
||
|
||
### ENERGY UNION мікроДАО
|
||
|
||
**Оркестратор:**
|
||
- ID: `agent-helion`
|
||
- Назва: `Helion`
|
||
- Роль: `Energy Union Agent`
|
||
- Тип: `worker` (але є оркестратором мікроДАО)
|
||
- Нода: НОДА1
|
||
|
||
---
|
||
|
||
## ✅ Статус
|
||
|
||
**Виправлено:**
|
||
- ✅ Агенти-оркестратори відображаються в кабінетах мікроДАО
|
||
- ✅ Функціонал мікроДАО працює
|
||
- ✅ Візуальне виділення оркестраторів
|
||
- ✅ Інтеграція з НОДИ1
|
||
- ✅ Чат з оркестратором працює
|
||
|
||
**Результат:**
|
||
- ✅ Всі три мікроДАО показують своїх оркестраторів
|
||
- ✅ Функціонал мікроДАО доступний
|
||
- ✅ Користувачі можуть перейти до кабінету агента
|
||
|
||
---
|
||
|
||
**Відображення агентів-оркестраторів виправлено!** 🎉
|
||
|