4.0 KiB
4.0 KiB
TASK 033: Agent & MicroDAO Chat Widgets
Дата: 28 листопада 2025
Статус: ✅ Завершено
Мета
- У кожному Agent Dashboard (
/agents/[id]) має бути діалогове вікно (Matrix-чат) з цим агентом. - У кожному MicroDAO (
/microdao/[slug]) має бути публічний чат кімнати цього MicroDAO, де оркестратор спілкується з користувачами.
Виконані зміни
1. Backend: Agent Dashboard → primary_city_room
Файл: services/city-service/routes_city.py
- Оновлено endpoint
GET /city/agents/{id}/dashboard - Додано поле
primary_city_roomдо відповіді - Пріоритет визначення кімнати:
- Перша кімната агента з
city_rooms - Primary room MicroDAO агента (якщо є
primary_microdao_id) nullякщо немає
- Перша кімната агента з
2. Backend: MicroDAO Detail → primary_city_room
Файл: services/city-service/models_city.py
- Додано модель
CityRoomSummary:class CityRoomSummary(BaseModel): id: str slug: str name: str matrix_room_id: Optional[str] = None - Оновлено
MicrodaoDetail— додано полеprimary_city_room
Файл: services/city-service/repo_city.py
- Додано функцію
get_microdao_primary_room(microdao_id):- Шукає primary room MicroDAO
- Пріоритет:
room_type='primary'→room_type='public'→ будь-яка активна
Файл: services/city-service/routes_city.py
- Оновлено endpoint
GET /city/microdao/{slug} - Додано виклик
get_microdao_primary_room()та заповненняprimary_city_room
3. Frontend: Типи
Файл: apps/web/src/lib/agent-dashboard.ts
- Додано тип
CityRoomSummary - Оновлено
AgentDashboard— додано полеprimary_city_room
Файл: apps/web/src/lib/types/microdao.ts
- Додано тип
CityRoomSummary - Оновлено
MicrodaoDetail— додано полеprimary_city_room
4. Frontend: Agent Console (/agents/[agentId])
Файл: apps/web/src/app/agents/[agentId]/page.tsx
- Оновлено Chat Tab:
- Прямий чат з агентом через DAGI Router (існуючий)
- Нова секція "Публічна кімната агента" з
CityChatWidget
- Якщо
primary_city_roomє — показує Matrix-чат - Якщо немає — показує повідомлення про необхідність налаштування
5. Frontend: MicroDAO Page (/microdao/[slug])
Файл: apps/web/src/app/microdao/[slug]/page.tsx
- Додано секцію "Публічний чат MicroDAO"
- Використовує
CityChatWidgetзprimary_city_room.slug - Показує інформацію про оркестратора
- Якщо кімната не налаштована — показує placeholder
Перевикористання
Обидві сторінки використовують існуючий компонент CityChatWidget з /components/city/CityChatWidget.tsx, який вже працює на сторінці громадянина (/citizens/[slug]).
Acceptance Criteria
/agents/[id]— секція "Публічна кімната агента" з Matrix-чатом/microdao/[slug]— секція "Публічний чат MicroDAO" з Matrix-чатом- Перевикористано
CityChatWidget - Білд проходить успішно
- Типи оновлено на фронтенді та бекенді
Пов'язані завдання
- TASK 031: Node Agents Discovery
- TASK 032: Node Guardian/Steward Formalize
- Citizen Interact Layer v1: Базовий функціонал чату для громадян