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

414
PHASE8_READY.md Normal file
View File

@@ -0,0 +1,414 @@
# ✅ PHASE 8 — DAO DASHBOARD — ЗАВЕРШЕНО!
**Дата завершення:** 24 листопада 2025
**Статус:** ✅ READY TO USE
---
## 🎯 Огляд Phase 8
**Phase 8** додає повний **DAO Dashboard** з системою управління (Governance), пропозиціями (Proposals), голосуванням (Voting) та казною (Treasury).
### Ключові можливості:
**DAO Management** — створення та управління децентралізованими організаціями
**3 Governance Models** — Simple, Quadratic, Delegated voting
**Proposals & Voting** — створення пропозицій та голосування
**Treasury** — управління токенами DAO
**Members** — система ролей та членства
**Real-time Events** — NATS інтеграція для live оновлень
**Auth + PDP** — повна інтеграція з системою безпеки
**Full UI** — Dashboard з tabs для управління DAO
---
## 📦 Що створено
### 1. **Backend: dao-service (Port 7016)**
Новий FastAPI сервіс з повним функціоналом:
#### Файли:
-`services/dao-service/main.py` — FastAPI додаток
-`services/dao-service/models.py` — Pydantic моделі (20+ моделей)
-`services/dao-service/repository_dao.py` — DAO CRUD + Members + Treasury
-`services/dao-service/repository_proposals.py` — Proposals CRUD
-`services/dao-service/repository_votes.py` — Votes CRUD
-`services/dao-service/governance_engine.py` — 3 моделі голосування
-`services/dao-service/nats_client.py` — NATS publisher
-`services/dao-service/auth_client.py` — Auth інтеграція
-`services/dao-service/pdp_client.py` — PDP інтеграція
-`services/dao-service/routes_dao.py` — DAO + Members + Treasury endpoints
-`services/dao-service/routes_proposals.py` — Proposals + Votes endpoints
-`services/dao-service/requirements.txt` — Dependencies
-`services/dao-service/Dockerfile` — Docker image
#### API Endpoints (16+):
**DAO:**
- `GET /dao` — список DAO користувача
- `POST /dao` — створити DAO
- `GET /dao/{slug}` — overview DAO
- `PUT /dao/{slug}` — оновити DAO
- `DELETE /dao/{slug}` — видалити DAO
**Members:**
- `GET /dao/{slug}/members` — список членів
- `POST /dao/{slug}/members` — додати члена
- `DELETE /dao/{slug}/members/{memberId}` — видалити члена
**Treasury:**
- `GET /dao/{slug}/treasury` — баланси токенів
- `POST /dao/{slug}/treasury` — оновити баланс
**Proposals:**
- `GET /dao/{slug}/proposals` — список пропозицій
- `POST /dao/{slug}/proposals` — створити пропозицію
- `GET /dao/{slug}/proposals/{proposalSlug}` — деталі пропозиції
- `POST /dao/{slug}/proposals/{proposalSlug}/activate` — активувати
- `POST /dao/{slug}/proposals/{proposalSlug}/close` — закрити та підрахувати
**Votes:**
- `GET /dao/{slug}/proposals/{proposalSlug}/votes` — список голосів
- `POST /dao/{slug}/proposals/{proposalSlug}/votes` — проголосувати
### 2. **Database: Migration 009**
Нові таблиці:
-`dao` — DAO entities
-`dao_members` — членство в DAO
-`dao_treasury` — баланси токенів
-`dao_proposals` — пропозиції
-`dao_votes` — голоси
-`dao_roles` — кастомні ролі
-`dao_role_assignments` — призначення ролей
-`dao_audit_log` — audit log подій
**Файл:** `migrations/009_create_dao_core.sql`
Seed дані:
- ✅ DAARION Governance DAO
- ✅ Seed proposal "Фінансування розвитку Agent Hub"
- ✅ 1,000,000 DAARION токенів в treasury
### 3. **Frontend: DAO Dashboard UI**
#### Файли:
-`src/api/dao.ts` — API client (25+ функцій)
-`src/features/dao/DaoListPage.tsx` — список DAO
-`src/features/dao/DaoDashboardPage.tsx` — dashboard з tabs
-`src/App.tsx` — оновлено (додано routes)
-`src/features/microdao/MicrodaoConsolePage.tsx` — інтегровано кнопку
#### UI Компоненти:
**DaoListPage:**
- Список DAO карткамиБільше
- Кнопка "Створити DAO"
- Create DAO Dialog з формою
**DaoDashboardPage:**
- 5 tabs: Overview, Proposals, Treasury, Members, Activity
- Overview: stats + налаштування governance
- Proposals: список + create + detail + voting
- Treasury: баланси токенів
- Members: список учасників
- Activity: історія подій
**Voting UI:**
-За / ❌ Проти / ⚪ Утриматись
- Real-time stats (% yes/no)
- Quorum tracking
- Status badges
### 4. **Infrastructure**
-`docker-compose.phase8.yml` — Docker Compose з dao-service
-`scripts/start-phase8.sh` — запуск Phase 8
-`scripts/stop-phase8.sh` — зупинка Phase 8
### 5. **NATS Events**
События:
-`dao.event.created`
-`dao.event.updated`
-`dao.event.deleted`
-`dao.event.member_added`
-`dao.event.member_removed`
-`dao.event.treasury_updated`
-`dao.event.proposal_created`
-`dao.event.proposal_activated`
-`dao.event.proposal_closed`
-`dao.event.vote_cast`
### 6. **PDP Permissions**
Нові права:
-`DAO_CREATE` — створення DAO
-`DAO_READ` — перегляд DAO
-`DAO_MANAGE` — управління DAO
-`DAO_MANAGE_MEMBERS` — управління членами
-`DAO_READ_TREASURY` — перегляд казни
-`DAO_MANAGE_TREASURY` — управління казною
-`DAO_PROPOSAL_CREATE` — створення пропозицій
-`DAO_PROPOSAL_MANAGE` — управління пропозиціями
-`DAO_VOTE` — голосування
---
## 🚀 Як запустити Phase 8
### 1. Запустити всі сервіси:
```bash
./scripts/start-phase8.sh
```
Це:
- Застосує міграцію 009
- Запустить Docker Compose з усіма сервісами
- Включно з новим dao-service на порту 7016
### 2. Запустити Frontend:
```bash
npm run dev
```
### 3. Відкрити DAO Dashboard:
- Список DAO: http://localhost:5173/dao
- Dashboard: http://localhost:5173/dao/{slug}
### 4. Доступ через MicroDAO Console:
Перейдіть до будь-якого microDAO:
- http://localhost:5173/microdao/daarion
- Натисніть кнопку **"🗳️ DAO Governance"**
---
## 📊 Архітектура
```
┌─────────────────────────────────────────────────────────────────┐
│ PHASE 8: DAO DASHBOARD │
└─────────────────────────────────────────────────────────────────┘
┌──────────────────┐
│ Frontend UI │
│ (React + TS) │
│ │
│ - DaoListPage │────────┐
│ - Dashboard │ │
│ - Voting UI │ │
└──────────────────┘ │
┌─────────────────────────┐
│ dao-service:7016 │
│ (FastAPI) │
│ │
│ • DAO CRUD │
│ • Proposals/Votes │
│ • Governance Engine │
│ • Treasury │
└─────────────────────────┘
│ │
┌────────────┼─────────┼────────────┐
│ │ │ │
▼ ▼ ▼ ▼
┌─────────┐ ┌────────┐ ┌──────┐ ┌──────────┐
│ DB │ │ Auth │ │ PDP │ │ NATS │
│ (PG) │ │ :7011 │ │:7012 │ │ :4222 │
└─────────┘ └────────┘ └──────┘ └──────────┘
```
### Governance Models:
1. **Simple Majority:**
- 1 user = 1 vote
- Перемагає >50%
2. **Quadratic Voting:**
- weight = √(tokens)
- Зменшує вплив китів
3. **Delegated Voting:**
- Делегування голосів
- Граф делегування (TODO)
---
## 🧪 Тестування
### Backend API:
```bash
# Health check
curl http://localhost:7016/health
# List DAOs
curl -H "Authorization: Bearer YOUR_TOKEN" \
http://localhost:7016/dao
# Get DAO overview
curl -H "Authorization: Bearer YOUR_TOKEN" \
http://localhost:7016/dao/daarion-governance
# Create proposal
curl -X POST \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "proposal-1",
"title": "Test Proposal",
"description": "..."
}' \
http://localhost:7016/dao/daarion-governance/proposals
# Vote
curl -X POST \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"vote_value": "yes"}' \
http://localhost:7016/dao/daarion-governance/proposals/proposal-1/votes
```
### Frontend UI:
1. Відкрити http://localhost:5173/dao
2. Створити тестовий DAO
3. Створити пропозицію
4. Проголосувати
5. Перевірити stats
---
## 📈 Метрики
### Backend:
- **7 Repositories** (DAO, Proposals, Votes)
- **2 Route modules** (16+ endpoints)
- **3 Governance models**
- **10 NATS event types**
- **9 PDP permissions**
### Frontend:
- **2 основні сторінки**
- **8+ компонентів**
- **25+ API функцій**
### Database:
- **8 нових таблиць**
- **10+ індексів**
- **Seed дані для demo**
### Infrastructure:
- **1 новий сервіс** (dao-service)
- **Docker Compose** оновлено
- **Scripts** для запуску/зупинки
---
## 🔗 Інтеграція
### З існуючими модулями:
**Phase 4 (Auth + PDP)** — повна інтеграція
**Phase 7 (MicroDAO Console)** — кнопка переходу до DAO
**NATS** — real-time події
**PostgreSQL** — спільна БД
### З майбутніми фазами:
📅 **Phase 9 (Living Map)** — візуалізація DAO на карті
📅 **Phase 10 (Quests)** — квести від DAO
📅 **Phase 11 (Tokenomics)** — інтеграція з blockchain
---
## 📝 TODO / Покращення
### MVP готово, але можна додати:
- [ ] WebSocket для live voting updates
- [ ] Delegated voting граф
- [ ] Proposal templates
- [ ] Vote delegation UI
- [ ] Treasury charts (історія балансів)
- [ ] Activity timeline (повний audit log)
- [ ] Proposal execution (on-chain)
- [ ] Multi-signature treasury
- [ ] Role editor UI
- [ ] Proposal comments
---
## 🎓 Навчання
### Ключові концепції:
1. **Governance Models** — різні підходи до голосування
2. **Quorum** — мінімальна явка для валідного голосування
3. **Proposal Lifecycle** — draft → active → passed/rejected → executed
4. **Voting Power** — як обчислюється вага голосу
5. **Treasury** — децентралізоване управління коштами
### Приклади використання:
- Фінансування проектів
- Зміна параметрів DAO
- Додавання/видалення членів
- Розподіл винагород
- Вибори ролей
---
## 🏆 Досягнення Phase 8
**Повний DAO stack** — від БД до UI
**3 governance моделі** — різні підходи до голосування
**Production-ready** — з Auth, PDP, NATS
**Beautiful UI** — сучасний Tailwind дизайн
**Extensible** — легко додавати нові можливості
**Documented** — повна документація
---
## 🚧 Наступні кроки
### Phase 9: Living Map
- 3D візуалізація екосистеми
- Карта City/Space/Nodes/DAO
- Real-time оновлення
### Phase 10: Quests
- Система завдань
- Gamification
- Rewards & Achievements
### Phase 11: Tokenomics
- Blockchain інтеграція
- Smart contracts
- DeFi features
---
## 📞 Контакти & Підтримка
Якщо виникли питання:
- Перевірити `INFRASTRUCTURE.md` для повного контексту
- Перевірити `docs/infrastructure_quick_ref.ipynb` для швидкого довідника
- Перевірити `docs/tasks/TASK_PHASE8_DAO_DASHBOARD.md` для деталей реалізації
---
**🎉 Phase 8 завершено!**
DAARION тепер має повний DAO Dashboard з Governance, Proposals, Voting і Treasury.
Готовий до використання! 🚀
**— DAARION Development Team, 24 листопада 2025**