# TASK_PHASE_GOVERNANCE_BACKEND_API **Status:** 🔄 In Progress **Created:** 2024-11-30 **Goal:** Додати Governance, Audit, Incidents API endpoints до `city-service` (FastAPI) --- ## 📋 Контекст Frontend UI для Governance Engine вже задеплоєний на `daarion.space`, але API endpoints повертають 404 бо `city-service` не має цих маршрутів. **Проблема:** ```bash curl http://localhost:7001/api/v1/governance/agents/city # → {"detail":"Not Found"} ``` **Рішення:** Додати governance endpoints безпосередньо в `city-service` (FastAPI), використовуючи вже існуючі таблиці БД. --- ## 📁 Нові файли в city-service ``` services/city-service/ ├── repo_governance.py # Repository для governance/audit/incidents ├── routes_governance.py # FastAPI router для /api/v1/governance/* ├── routes_audit.py # FastAPI router для /api/v1/audit/* ├── routes_incidents.py # FastAPI router для /api/v1/incidents/* └── main.py # Оновити для підключення нових роутів ``` --- ## 🎯 API Endpoints ### Governance (`/api/v1/governance`) | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/agents/city` | City Governance Agents (DAARWIZZ, DARIO, DARIA) | | GET | `/agents/district/{id}` | District Lead Agent + core-team | | GET | `/agents/microdao/{id}` | MicroDAO Orchestrator + workers | | GET | `/agents/by-level/{level}` | Agents filtered by gov_level | | GET | `/agent/{id}/roles` | Agent roles and permissions | | POST | `/agent/promote` | Promote agent to higher level | | POST | `/agent/demote` | Demote agent | | POST | `/agent/revoke` | Revoke agent (soft/hard) | | POST | `/agent/suspend` | Suspend agent temporarily | | POST | `/agent/reinstate` | Reinstate suspended agent | | POST | `/check` | Check permission for action | ### Audit (`/api/v1/audit`) | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/events` | List audit events with filters | | GET | `/events/{id}` | Single event details | | GET | `/actor/{actorId}` | Events by actor | | GET | `/target/{targetId}` | Events by target | | GET | `/stats` | Audit statistics | ### Incidents (`/api/v1/incidents`) | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/` | List incidents with filters | | GET | `/{id}` | Single incident details | | POST | `/` | Create incident | | POST | `/{id}/assign` | Assign incident | | POST | `/{id}/escalate` | Escalate incident | | POST | `/{id}/resolve` | Resolve incident | | POST | `/{id}/close` | Close incident | | POST | `/{id}/comment` | Add comment | | GET | `/{id}/history` | Incident history | --- ## 🗄️ Database Tables (вже існують) - `agents` (з полями `gov_level`, `status`, `revoked_at`, `revoked_by`) - `agent_assignments` - `event_outbox` (actor_id, target_id, scope) - `incidents` - `incident_history` - `permissions` - `agent_revocations` - `dais_keys` --- ## ✅ Checklist - [ ] Create `repo_governance.py` - [ ] Create `routes_governance.py` - [ ] Create `routes_audit.py` - [ ] Create `routes_incidents.py` - [ ] Update `main.py` to include new routers - [ ] Test locally - [ ] Deploy to NODE1 - [ ] Verify on daarion.space --- ## 🚀 Deployment ```bash # On NODE1 cd /opt/microdao-daarion git pull docker build -t daarion-city-service services/city-service/ docker stop daarion-city-service && docker rm daarion-city-service docker run -d --name daarion-city-service --network dagi-network ... ```