Files
microdao-daarion/docs/debug/district_portals_report_20251130.md
Apple 6908569ac7 docs: District Portals report
Verified on daarion.space:
- /districts shows 3 districts with cards
- /districts/soul shows lead agent, core team, rooms
- /soul, /greenfood, /energy-union shortcuts work
- All data from DB (no hardcodes)
2025-11-30 11:43:13 -08:00

8.8 KiB
Raw Blame History

District Portals — Звіт про виконання

Дата: 2025-11-30 Статус: ВИКОНАНО

1. Мета

Зробити District-и повноцінними "порталами платформ" у DAARION.city:

  • окремі сторінки District-ів (SOUL, GREENFOOD, ENERGYUNION)
  • інтеграція з Rooms, Matrix, Presence, Chat Widget
  • відображення агентів та нод District-а

2. Виконані роботи

2.1. Backend (City Service)

Нові методи в repo_city.py (DB-based, без хардкодів):

  • get_districts() — SELECT FROM microdaos WHERE dao_type='district'
  • get_district_by_slug(slug)
  • get_district_lead_agent(district_id) — з fallback на orchestrator
  • get_district_core_team(district_id)
  • get_district_agents(district_id)
  • get_district_rooms(district_slug) — за slug-префіксом
  • get_district_nodes(district_id)
  • get_district_stats(district_id, district_slug)

API Endpoints:

GET /api/v1/districts
GET /api/v1/districts/{slug}

2.2. Seed Data

Додано core_team зв'язки в microdao_agents:

District Agent Role
SOUL soul orchestrator
SOUL spirit core_team
SOUL logic core_team
ENERGYUNION helion orchestrator
ENERGYUNION energia core_team
GREENFOOD greenfood orchestrator

2.3. Frontend

Сторінки:

  • /districts — список всіх District-ів
  • /districts/[slug] — детальна сторінка District-а
  • /soul → redirect до /districts/soul
  • /greenfood → redirect до /districts/greenfood
  • /energy-union → redirect до /districts/energy-union

UI Features:

  • District-specific кольори та іконки
  • Lead Agent + Core Team секції
  • District Rooms з Matrix статусом
  • Chat Widget для lobby room
  • Статистика (агенти, кімнати, ноди)

3. API Тести

3.1. GET /api/v1/districts

curl -s 'http://localhost:7001/api/v1/districts' | jq '.'

Результат:

[
  {
    "id": "dao_energy",
    "slug": "energy-union",
    "name": "ENERGYUNION",
    "description": "Energy optimization & sustainability",
    "dao_type": "district",
    "lead_agent": { "id": "helion", "name": "Helion" },
    "rooms_count": 1
  },
  {
    "id": "dao_greenfood",
    "slug": "greenfood",
    "name": "GREENFOOD",
    "description": "Sustainable food systems",
    "dao_type": "district",
    "lead_agent": { "id": "greenfood", "name": "GREENFOOD ERP" },
    "rooms_count": 1
  },
  {
    "id": "dao_soul",
    "slug": "soul",
    "name": "SOUL Retreat",
    "description": "Identity & reputation systems",
    "dao_type": "district",
    "lead_agent": { "id": "soul", "name": "SOUL" },
    "rooms_count": 1
  }
]

3.2. GET /api/v1/districts/soul

curl -s 'http://localhost:7001/api/v1/districts/soul' | jq '.'

Результат:

{
  "district": {
    "id": "dao_soul",
    "slug": "soul",
    "name": "SOUL Retreat",
    "description": "Identity & reputation systems",
    "dao_type": "district"
  },
  "lead_agent": {
    "id": "soul",
    "name": "SOUL",
    "kind": "orchestrator",
    "status": "active",
    "gov_level": "district_lead"
  },
  "core_team": [
    { "id": "logic", "name": "Logic", "kind": "info", "role": "core_team" },
    { "id": "spirit", "name": "Spirit", "kind": "guidance", "role": "core_team" }
  ],
  "agents": [
    { "id": "soul", "name": "SOUL", "role": "orchestrator", "is_core": true },
    { "id": "logic", "name": "Logic", "role": "core_team", "is_core": true },
    { "id": "spirit", "name": "Spirit", "role": "core_team", "is_core": true }
  ],
  "rooms": [
    {
      "id": "room_city_soul-lobby",
      "slug": "soul-lobby",
      "name": "SOUL Retreat Lobby",
      "matrix_room_id": "!MVhbWEBKzUwteYzefj:daarion.space"
    }
  ],
  "nodes": [],
  "stats": { "agents_count": 3, "rooms_count": 1, "nodes_count": 0 }
}

4. Перевірка на DAARION.space

4.1. /districts

  • Показує 3 District-и з картками
  • Кожна картка має: назву, опис, lead agent, кількість кімнат
  • District-specific кольори:
    • SOUL — purple/pink
    • GREENFOOD — emerald/green
    • ENERGYUNION — amber/orange

4.2. /districts/soul

  • Breadcrumb: Home / Districts / SOUL Retreat
  • Lead Agent: SOUL (orchestrator • District Lead)
  • Core Team: Logic (info), Spirit (guidance)
  • Всі агенти: 3
  • Кімнати: SOUL Retreat Lobby
  • Chat Widget: "Увійти щоб почати спілкування"

4.3. /soul, /greenfood, /energy-union

  • Всі shortcut routes працюють
  • Redirect на відповідні /districts/{slug}

5. Архітектура

Frontend (/districts/[slug])
    ↓
Next.js SSR (getDistrict)
    ↓
City Service (/api/v1/districts/{slug})
    ↓
repo_city.py methods
    ↓
PostgreSQL (microdaos, microdao_agents, city_rooms, nodes)

Принцип: NO HARDCODES

Всі дані беруться з БД:

  • Districts = microdaos WHERE dao_type='district'
  • Lead Agent = microdao_agents WHERE role='district_lead' OR role='orchestrator'
  • Core Team = microdao_agents WHERE role='core_team'
  • Rooms = city_rooms WHERE slug LIKE '{district_slug}-%'

6. UI Layout

┌─────────────────────────────────────────────────────────┐
│ Home / Districts / SOUL Retreat                         │
├─────────────────────────────────────────────────────────┤
│ 💜 SOUL Retreat                          [District]     │
│ Identity & reputation systems                           │
│ 🤖 3 агентів  💬 1 кімнат  🖥️ 0 нод                     │
├─────────────────────────────────────────────────────────┤
│                                                         │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ 💬 SOUL Retreat Lobby   │ │ 🤖 Lead Agent           │ │
│ │ Головна кімната         │ │ ┌─────────────────────┐ │ │
│ │                         │ │ │ 💜 SOUL             │ │ │
│ │ ┌─────────────────────┐ │ │ │ orchestrator        │ │ │
│ │ │ Chat Widget         │ │ │ │ District Lead       │ │ │
│ │ │                     │ │ │ └─────────────────────┘ │ │
│ │ │ [Увійти щоб         │ │ │                         │ │
│ │ │  почати             │ │ │ 👥 Core Team            │ │
│ │ │  спілкування]       │ │ │ ┌─────────────────────┐ │ │
│ │ │                     │ │ │ │ Logic (info)        │ │ │
│ │ └─────────────────────┘ │ │ │ Spirit (guidance)   │ │ │
│ │                         │ │ └─────────────────────┘ │ │
│ │ 🏠 Кімнати District-а   │ │                         │ │
│ │ ┌─────────────────────┐ │ │ 📊 Всі агенти (3)       │ │
│ │ │ SOUL Retreat Lobby  │ │ │ • SOUL                │ │
│ │ └─────────────────────┘ │ │ • Logic               │ │
│ │                         │ │ • Spirit              │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────┘

7. Онтологічна відповідність

District = microdao з dao_type='district' Lead Agent = orchestrator або district_lead Core Team = агенти з role='core_team' District Rooms = rooms з slug-префіксом district Chat Widget = прив'язаний до lobby room NO HARDCODES — все з БД


Автор: Cursor AI Таск: TASK_PHASE_DISTRICT_PORTALS_v1.md