Skip to content

# Rooms_Layer_Architecture_v1.md

## DAARION.city — Rooms Layer & Shared City Space

Version: 1.0
Status: Foundation Spec (Non-Breaking)
Scope: City rooms, MicroDAO rooms, District platforms, 2D/3D map, public fronts, inter-DAO interaction

# 0. Мета документа

Визначити, що таке «Кімнати Міста» та загалом Rooms Layer у DAARION.city:

- як влаштовані простори міста (City Hub, City Square),
- як працюють кімнати MicroDAO/District,
- як MicroDAO можуть мати публічні front-offices у місті,
- як це все відображається в 2D-мапі і майбутньому 3D метавсесвіті,
- як Rooms Layer інтегрується з MicroDAO Interface і City Layer.

# 1. Базова модель

Rooms Layer працює на трьох рівнях:

1. City Hub (root MicroDAO DAARION) — публічні міські кімнати і фронт-офіси.
2. MicroDAO Space — внутрішні кімнати, робочі простори, проєкти, core-team.
3. District Space — платформи, міні-міста з підлеглими MicroDAO.

Функція Rooms Layer — універсальна: та сама структура для всіх рівнів, але з різним контекстом.

# 2. Поняття Rooms Layer

## Room

- чат / канал / робочий простір;
- має `owner_type` (`city | microdao | district | agent`), `owner_id`;
- має `space_scope` (`city | microdao | district`);
- має `visibility` (`private | members | public-city | public-global`);
- опціонально `matrix_room_id`.

## Location

- 2D map tile / координати;
- 3D anchor (будівля, кіоск);
- fallback — список/каталог.

## Portal

- кімната-«точка входу» MicroDAO/District у міське середовище;
- `is_portal=true`, `portal_target_microdao_id`.

# 3. Типи кімнат

1. City Room — належить root MicroDAO, `space_scope='city'`.
2. DAO Room — внутрішні кімнати MicroDAO (`space_scope='microdao'`).
3. Public Front Room — кімната MicroDAO з `space_scope='city'`.
4. District Room — кімнати District-платформи (`space_scope='district'`).
5. Agent Room / Booth — публічні кімнати агентів (Helion, ERP, DARIO).
6. Event Room — тимчасові/постійні кімнати подій.

# 4. Модель видимості

- `owner_type`, `owner_id`.
- `visibility`: `private`, `members`, `public-city`, `public-global`.
- `space_scope`: `city`, `microdao`, `district`.

Приклад front-office Energyunion:

    owner_type = microdao
    owner_id = energyunion
    visibility = public-city
    space_scope = city
    is_portal = true
    portal_target_microdao_id = energyunion

# 5. City Hub як спільний простір

- Місто — місце, де можуть бути присутні всі MicroDAO, District, агенти.
- Кожне MicroDAO може зареєструвати портали/кімнати у City Hub.
- Публічні агенти (Helion, ERP, DARIO) мають свої кіоски в місті.

# 6. Інтерфейсні рівні

## 6.1. City Rooms UI

- `/city/rooms` — список / карта публічних кімнат.
- `/city` — City Square зі слотами кімнат/порталів.
- `/city/map` — 2D карта.

## 6.2. MicroDAO Rooms UI

- `/microdao/{id}/rooms` — внутрішні кімнати, публікація front-room (прапорець `publish_to_city`).

## 6.3. District Rooms UI

- `/district/{id}/rooms` — кімнати платформи, підлеглі DAO.

# 7. 2D/3D підтримка

- Кожна кімната може мати `map_x`, `map_y`, `zone`.
- 3D-режим використовує `mesh_id`, `3d_position`.
- City Square → набір кімнат/порталів, які відображаються як плитки / кіоски.

# 8. Модель даних (чернетка)

    rooms (
      id text primary key,
      owner_type text not null,
      owner_id text not null,
      type text not null, -- city-room | dao-room | front-room | agent-room | event-room
      space_scope text not null, -- city | microdao | district
      visibility text not null, -- private | members | public-city | public-global
      matrix_room_id text null,
      is_portal boolean not null default false,
      portal_target_microdao_id text null,
      map_x integer null,
      map_y integer null,
      zone text null,
      metadata jsonb not null default '{}'::jsonb,
      created_at timestamptz not null default now()
    );

# 9. Governance

- City rooms створює root MicroDAO або civic-агенти з правами.
- DAO rooms створює оркестратор/команда.
- Front offices публікує Оркестратор або core-team.
- District rooms — оркестратор District.

# 10. MVP Scope

- Реєстр City Rooms.
- API: `GET /city/rooms`, `GET /city/portals`, `POST /microdao/{id}/rooms`.
- Мінімальний UI: список кімнат, дві front-room (Energyunion, GREENFOOD).
- Matrix-зв’язок для кімнат.

# 11. Підсумок

Rooms Layer уніфікує всі простори DAARION.city:

- місто як спільний простір,
- MicroDAO як власні робочі простори,
- District як платформи,
- агенти як власники кімнат.

Це база для 2D/3D DAARION.space.