Files
microdao-daarion/docs/tasks/TASK_PHASE_GOVERNANCE_MIGRATION_NEXTJS.md
Apple ec9ff3e633 feat(governance): Migrate Governance Engine to Next.js (apps/web)
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
2025-11-29 16:41:28 -08:00

184 lines
6.2 KiB
Markdown

# 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
```typescript
// 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
```typescript
// 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