BREAKING: Replace old MicroDAO voting with Agent Governance Engine ## New Files - apps/web/src/lib/types/governance.ts - apps/web/src/lib/api/governance.ts - apps/web/src/lib/api/audit.ts - apps/web/src/lib/api/incidents.ts - apps/web/src/components/governance/GovernanceLevelBadge.tsx - apps/web/src/components/governance/ReportButton.tsx - apps/web/src/components/governance/CityGovernancePanel.tsx - apps/web/src/components/governance/AuditDashboard.tsx - apps/web/src/components/governance/IncidentsList.tsx - apps/web/src/app/audit/page.tsx - apps/web/src/app/incidents/page.tsx ## Updated Files - apps/web/src/app/governance/page.tsx - New City Governance UI - apps/web/src/components/Navigation.tsx - Shield icon for Governance ## Task docs/tasks/TASK_PHASE_GOVERNANCE_MIGRATION_NEXTJS.md
6.2 KiB
6.2 KiB
TASK_PHASE_GOVERNANCE_MIGRATION_NEXTJS.md
Міграція Agent Governance Engine в Next.js (apps/web)
Objective: Перенести всі Governance компоненти з src/ (Vite) в apps/web/ (Next.js) для деплою на DAARION.space.
Date: 2025-11-30
Status: In Progress
1. Контекст
Поточна ситуація
src/(Vite/React) — містить нові Governance компоненти, але не задеплоєнийapps/web/(Next.js) — продакшн на DAARION.space, старий код
Ціль
- Єдиний продакшн frontend =
apps/web(Next.js) src/= полігон для прототипування
2. Файли для міграції
2.1 Types (src/ → apps/web/)
| Source | Target |
|---|---|
src/types/governance.ts |
apps/web/src/lib/types/governance.ts |
src/types/ontology.ts |
apps/web/src/lib/types/ontology.ts |
2.2 API Clients
| Source | Target |
|---|---|
src/api/governance.ts |
apps/web/src/lib/api/governance.ts |
src/api/audit.ts |
apps/web/src/lib/api/audit.ts |
src/api/incidents.ts |
apps/web/src/lib/api/incidents.ts |
src/api/dais.ts |
apps/web/src/lib/api/dais.ts |
src/api/assignments.ts |
apps/web/src/lib/api/assignments.ts |
2.3 Components
| Source | Target |
|---|---|
src/features/governance/components/GovernanceLevelBadge.tsx |
apps/web/src/components/governance/GovernanceLevelBadge.tsx |
src/features/governance/components/CityGovernancePanel.tsx |
apps/web/src/components/governance/CityGovernancePanel.tsx |
src/features/governance/components/DistrictGovernancePanel.tsx |
apps/web/src/components/governance/DistrictGovernancePanel.tsx |
src/features/governance/components/MicroDAOGovernancePanel.tsx |
apps/web/src/components/governance/MicroDAOGovernancePanel.tsx |
src/features/governance/components/AuditDashboard.tsx |
apps/web/src/components/governance/AuditDashboard.tsx |
src/features/governance/components/IncidentsList.tsx |
apps/web/src/components/governance/IncidentsList.tsx |
src/features/governance/components/ReportButton.tsx |
apps/web/src/components/governance/ReportButton.tsx |
2.4 Pages (Next.js App Router)
| Route | File | Description |
|---|---|---|
/governance |
apps/web/src/app/governance/page.tsx |
City Governance (REPLACE old MicroDAO voting) |
/governance/district/[id] |
apps/web/src/app/governance/district/[id]/page.tsx |
District Governance |
/governance/microdao/[id] |
apps/web/src/app/governance/microdao/[id]/page.tsx |
MicroDAO Governance |
/audit |
apps/web/src/app/audit/page.tsx |
Audit Dashboard |
/incidents |
apps/web/src/app/incidents/page.tsx |
Incidents List |
3. Адаптація для Next.js
3.1 Import paths
// Vite (src/)
import { api } from '../../../api/governance'
// Next.js (apps/web/)
import { governanceApi } from '@/lib/api/governance'
3.2 React Query → fetch
- Next.js App Router використовує Server Components
- Замість
useQuery— використовуємоasync/awaitв server components - Client components позначаємо
'use client'
3.3 Routing
// Vite (react-router-dom)
import { useParams, useNavigate } from 'react-router-dom'
// Next.js
import { useParams } from 'next/navigation'
import Link from 'next/link'
4. Checklist
Phase 1: Types & API
- Створити
apps/web/src/lib/types/governance.ts - Створити
apps/web/src/lib/types/ontology.ts - Створити
apps/web/src/lib/api/governance.ts - Створити
apps/web/src/lib/api/audit.ts - Створити
apps/web/src/lib/api/incidents.ts
Phase 2: Components
- Мігрувати
GovernanceLevelBadge - Мігрувати
ReportButton - Мігрувати
CityGovernancePanel - Мігрувати
DistrictGovernancePanel - Мігрувати
MicroDAOGovernancePanel - Мігрувати
AuditDashboard - Мігрувати
IncidentsList
Phase 3: Pages
- Замінити
/governance/page.tsxна новий City Governance - Створити
/governance/district/[id]/page.tsx - Створити
/governance/microdao/[id]/page.tsx - Створити
/audit/page.tsx - Створити
/incidents/page.tsx
Phase 4: Integration
- Додати GovernanceLevelBadge в Agent Dashboard
- Додати ReportButton в City Rooms
- Оновити Navigation з посиланнями на Audit/Incidents
Phase 5: Deploy
- Commit & Push
- Rebuild Docker image
- Deploy to NODE1
- Test on DAARION.space
5. API Endpoints (backend)
Governance Engine API вже готовий:
POST /api/v1/governance/agent/promote
POST /api/v1/governance/agent/demote
POST /api/v1/governance/agent/revoke
POST /api/v1/governance/agent/suspend
POST /api/v1/governance/agent/reinstate
GET /api/v1/governance/agent/:id/roles
GET /api/v1/governance/agent/:id/permissions
POST /api/v1/governance/check
GET /api/v1/governance/agents/city
GET /api/v1/governance/agents/district-leads
GET /api/v1/governance/agents/by-level/:level
GET /api/v1/audit/events
GET /api/v1/audit/events/:id
GET /api/v1/audit/actor/:actorId
GET /api/v1/audit/target/:targetId
GET /api/v1/audit/stats
POST /api/v1/incidents
GET /api/v1/incidents
GET /api/v1/incidents/:id
PUT /api/v1/incidents/:id
POST /api/v1/incidents/:id/assign
POST /api/v1/incidents/:id/escalate
POST /api/v1/incidents/:id/resolve
POST /api/v1/incidents/:id/close
POST /api/v1/incidents/:id/comment
6. Результат
Після виконання цього таску:
✅ /governance на DAARION.space показує City Governance Panel
✅ /audit показує Audit Dashboard
✅ /incidents показує Incidents List
✅ Agent Dashboard містить GovernanceLevelBadge
✅ City Rooms мають ReportButton
✅ Старий MicroDAO voting видалено/замінено
Next: Execute migration step by step