🔧 Fix GitHub Actions docs workflow
- Update mkdocs dependencies to latest versions - Add permissions for GitHub Pages deployment - Add workflow_dispatch for manual trigger - Fix build command with fallback
This commit is contained in:
1082
site/debug/agent_chat_widget_mvp_report_20251201/index.html
Normal file
1082
site/debug/agent_chat_widget_mvp_report_20251201/index.html
Normal file
File diff suppressed because it is too large
Load Diff
1003
site/debug/city_rooms_routing_report_20251130/index.html
Normal file
1003
site/debug/city_rooms_routing_report_20251130/index.html
Normal file
File diff suppressed because it is too large
Load Diff
1023
site/debug/district_portals_report_20251130/index.html
Normal file
1023
site/debug/district_portals_report_20251130/index.html
Normal file
File diff suppressed because it is too large
Load Diff
1015
site/debug/matrix_finalize_v2_report_20251130/index.html
Normal file
1015
site/debug/matrix_finalize_v2_report_20251130/index.html
Normal file
File diff suppressed because it is too large
Load Diff
945
site/debug/matrix_gateway_integration_report_20251130/index.html
Normal file
945
site/debug/matrix_gateway_integration_report_20251130/index.html
Normal file
@@ -0,0 +1,945 @@
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/debug/matrix_gateway_integration_report_20251130/">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
|
||||
|
||||
|
||||
|
||||
<title>Matrix Gateway Integration — Звіт про виконання - DAARION Documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||||
|
||||
|
||||
|
||||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body dir="ltr">
|
||||
|
||||
|
||||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||
<label class="md-overlay" for="__drawer"></label>
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#matrix-gateway-integration" class="md-skip">
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div data-md-component="announce">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="md-header md-header--shadow" data-md-component="header">
|
||||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
<label class="md-header__button md-icon" for="__drawer">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||||
</label>
|
||||
<div class="md-header__title" data-md-component="header-title">
|
||||
<div class="md-header__ellipsis">
|
||||
<div class="md-header__topic">
|
||||
<span class="md-ellipsis">
|
||||
DAARION Documentation
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Matrix Gateway Integration — Звіт про виконання
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||||
|
||||
|
||||
|
||||
<label class="md-header__button md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
</label>
|
||||
<div class="md-search" data-md-component="search" role="dialog">
|
||||
<label class="md-search__overlay" for="__search"></label>
|
||||
<div class="md-search__inner" role="search">
|
||||
<form class="md-search__form" name="search">
|
||||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||||
<label class="md-search__icon md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</label>
|
||||
<nav class="md-search__options" aria-label="Search">
|
||||
|
||||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
</form>
|
||||
<div class="md-search__output">
|
||||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||||
<div class="md-search-result" data-md-component="search-result">
|
||||
<div class="md-search-result__meta">
|
||||
Initializing search
|
||||
</div>
|
||||
<ol class="md-search-result__list" role="presentation"></ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<div class="md-container" data-md-component="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="md-main" data-md-component="main">
|
||||
<div class="md-main__inner md-grid">
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
DAARION Documentation
|
||||
</label>
|
||||
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Home
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/getting-started/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Getting Started
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/architecture-overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Architecture
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
DAIS & DAOS
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Internal
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Internal
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_1">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Infra
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra Automation Pack v1
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Monitoring Overview
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Nodes Registry v0
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Specs
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_2">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Specs
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Matrix Presence Aggregator
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
City Map Spec
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Node Join Protocol (Draft)
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
1. Мета
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#2" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2. Виконані роботи
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="2. Виконані роботи">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#21-matrix-gateway-endpoints" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.1. Matrix Gateway — Нові endpoints ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#22-city-service-matrix-client" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.2. City Service — Matrix Client ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#23-city-service-room-sync" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.3. City Service — Room Sync ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#24-auto-create-matrix-rooms" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.4. Auto-create Matrix Rooms ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#3" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
3. Результати синхронізації
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="3. Результати синхронізації">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#_1" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Перший запуск:
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#_2" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Успішно синхронізовані:
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#rate-limiting" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Не синхронізовані (rate limiting):
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#4" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4. Проблеми
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="4. Проблеми">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#41-matrix-rate-limiting" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4.1. Matrix Rate Limiting
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#42-agent-chat-rooms" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4.2. Agent Chat Rooms
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#5-daarionspace" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
5. Перевірка на DAARION.space
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#6" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
6. Наступні кроки
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#7-sql-queries" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
7. SQL Queries для перевірки
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="matrix-gateway-integration">Matrix Gateway Integration — Звіт про виконання<a class="headerlink" href="#matrix-gateway-integration" title="Permanent link">¶</a></h1>
|
||||
<p><strong>Дата:</strong> 2025-11-30
|
||||
<strong>Статус:</strong> ЧАСТКОВО ВИКОНАНО (rate limiting)</p>
|
||||
<h2 id="1">1. Мета<a class="headerlink" href="#1" title="Permanent link">¶</a></h2>
|
||||
<p>Інтегрувати Matrix Gateway з City Service для створення реальних Matrix кімнат.</p>
|
||||
<h2 id="2">2. Виконані роботи<a class="headerlink" href="#2" title="Permanent link">¶</a></h2>
|
||||
<h3 id="21-matrix-gateway-endpoints">2.1. Matrix Gateway — Нові endpoints ✅<a class="headerlink" href="#21-matrix-gateway-endpoints" title="Permanent link">¶</a></h3>
|
||||
<div class="codehilite"><pre><span></span><code><span class="nv">POST</span><span class="w"> </span><span class="o">/</span><span class="nv">internal</span><span class="o">/</span><span class="nv">matrix</span><span class="o">/</span><span class="nv">room</span><span class="o">/</span><span class="nv">join</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nv">Join</span><span class="w"> </span><span class="nv">user</span><span class="w"> </span><span class="nv">to</span><span class="w"> </span><span class="nv">room</span>
|
||||
<span class="nv">POST</span><span class="w"> </span><span class="o">/</span><span class="nv">internal</span><span class="o">/</span><span class="nv">matrix</span><span class="o">/</span><span class="nv">message</span><span class="o">/</span><span class="k">send</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="k">Send</span><span class="w"> </span><span class="nv">message</span><span class="w"> </span><span class="nv">to</span><span class="w"> </span><span class="nv">room</span>
|
||||
<span class="nv">GET</span><span class="w"> </span><span class="o">/</span><span class="nv">internal</span><span class="o">/</span><span class="nv">matrix</span><span class="o">/</span><span class="nv">rooms</span><span class="o">/</span>{<span class="nv">id</span>}<span class="o">/</span><span class="nv">messages</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nv">Get</span><span class="w"> </span><span class="nv">room</span><span class="w"> </span><span class="nv">messages</span>
|
||||
</code></pre></div>
|
||||
|
||||
<h3 id="22-city-service-matrix-client">2.2. City Service — Matrix Client ✅<a class="headerlink" href="#22-city-service-matrix-client" title="Permanent link">¶</a></h3>
|
||||
<p>Нові функції в <code>matrix_client.py</code>:
|
||||
- <code>join_user_to_room(room_id, user_id)</code>
|
||||
- <code>send_message_to_room(room_id, body, sender)</code>
|
||||
- <code>get_room_messages(room_id, limit)</code>
|
||||
- <code>ensure_room_has_matrix(room_slug, room_name, visibility)</code></p>
|
||||
<h3 id="23-city-service-room-sync">2.3. City Service — Room Sync ✅<a class="headerlink" href="#23-city-service-room-sync" title="Permanent link">¶</a></h3>
|
||||
<div class="codehilite"><pre><span></span><code>POST /city/rooms/sync/matrix - Bulk sync rooms with Matrix
|
||||
</code></pre></div>
|
||||
|
||||
<h3 id="24-auto-create-matrix-rooms">2.4. Auto-create Matrix Rooms ✅<a class="headerlink" href="#24-auto-create-matrix-rooms" title="Permanent link">¶</a></h3>
|
||||
<p>Оновлені endpoints автоматично створюють Matrix кімнати:
|
||||
- <code>GET /api/v1/agents/{id}/chat-room</code>
|
||||
- <code>GET /api/v1/nodes/{id}/chat-room</code>
|
||||
- <code>GET /api/v1/microdaos/{slug}/chat-room</code></p>
|
||||
<h2 id="3">3. Результати синхронізації<a class="headerlink" href="#3" title="Permanent link">¶</a></h2>
|
||||
<h3 id="_1">Перший запуск:<a class="headerlink" href="#_1" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li><strong>Total rooms:</strong> 25</li>
|
||||
<li><strong>Synced:</strong> 9 (з Matrix room_id)</li>
|
||||
<li><strong>Failed:</strong> 16 (rate limiting)</li>
|
||||
</ul>
|
||||
<h3 id="_2">Успішно синхронізовані:<a class="headerlink" href="#_2" title="Permanent link">¶</a></h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Room Slug</th>
|
||||
<th>Matrix Room ID</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>energy</td>
|
||||
<td>!gykdLyazhkcSZGHmbG:daarion.space</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>science</td>
|
||||
<td>!enYcpGlcPfCuWEIwjv:daarion.space</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>builders</td>
|
||||
<td>!VdxezYlgrmNTFVkNUk:daarion.space</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>general</td>
|
||||
<td>!anDoaSvRxICMHLkeqg:daarion.space</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>welcome</td>
|
||||
<td>!YbacjkzhdDjaOXgxTy:daarion.space</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>web3-district</td>
|
||||
<td>!EBOtJRwWKYgdYzcZla:daarion.space</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>leadership-hall</td>
|
||||
<td>!zFinGbbbMykYULmIOv:daarion.space</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>vision-studio</td>
|
||||
<td>!HzNtIvobAgaoDBpPpD:daarion.space</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>rnd-lab</td>
|
||||
<td>!exvkRpdsvZlWjaUfmV:daarion.space</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="rate-limiting">Не синхронізовані (rate limiting):<a class="headerlink" href="#rate-limiting" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li>economics-square</li>
|
||||
<li>announcements</li>
|
||||
<li>science-lab</li>
|
||||
<li>security-bureau</li>
|
||||
<li>daarion-news, daarion-builders, daarion-help, daarion-governance</li>
|
||||
<li>node-support-node1, node-support-node2</li>
|
||||
<li>memory-vault, security-bunker, system-control, engineering-lab, marketing-hub, finance-office</li>
|
||||
</ul>
|
||||
<h2 id="4">4. Проблеми<a class="headerlink" href="#4" title="Permanent link">¶</a></h2>
|
||||
<h3 id="41-matrix-rate-limiting">4.1. Matrix Rate Limiting<a class="headerlink" href="#41-matrix-rate-limiting" title="Permanent link">¶</a></h3>
|
||||
<div class="codehilite"><pre><span></span><code>{"errcode":"M_LIMIT_EXCEEDED","error":"Too Many Requests","retry_after_ms":55397}
|
||||
</code></pre></div>
|
||||
|
||||
<p><strong>Причина:</strong> Synapse має rate limiting для створення кімнат.</p>
|
||||
<p><strong>Рішення:</strong>
|
||||
1. Почекати <code>retry_after_ms</code> і повторити
|
||||
2. Налаштувати Synapse <code>rc_message</code> та <code>rc_admin</code> в <code>homeserver.yaml</code>
|
||||
3. Додати затримку між створенням кімнат в sync endpoint</p>
|
||||
<h3 id="42-agent-chat-rooms">4.2. Agent Chat Rooms<a class="headerlink" href="#42-agent-chat-rooms" title="Permanent link">¶</a></h3>
|
||||
<p>Agent console rooms (<code>agent-console-*</code>) не мають Matrix ID через rate limiting.</p>
|
||||
<p><strong>Рішення:</strong> Повторити sync пізніше або створити вручну.</p>
|
||||
<h2 id="5-daarionspace">5. Перевірка на DAARION.space<a class="headerlink" href="#5-daarionspace" title="Permanent link">¶</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Endpoint</th>
|
||||
<th>Статус</th>
|
||||
<th>Примітки</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Matrix Gateway <code>/healthz</code></td>
|
||||
<td>✅</td>
|
||||
<td><code>{"status":"ok","synapse":"connected"}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/city/rooms/sync/matrix</code></td>
|
||||
<td>✅</td>
|
||||
<td>Працює, але rate limited</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/api/v1/agents/{id}/chat-room</code></td>
|
||||
<td>⚠️</td>
|
||||
<td>Створює DB room, Matrix pending</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/api/v1/nodes/{id}/chat-room</code></td>
|
||||
<td>⚠️</td>
|
||||
<td>Створює DB room, Matrix pending</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/api/v1/microdaos/{slug}/chat-room</code></td>
|
||||
<td>⚠️</td>
|
||||
<td>Створює DB room, Matrix pending</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="6">6. Наступні кроки<a class="headerlink" href="#6" title="Permanent link">¶</a></h2>
|
||||
<ol>
|
||||
<li><strong>Налаштувати Synapse rate limiting</strong> — збільшити ліміти для admin user</li>
|
||||
<li><strong>Повторити sync</strong> — через 5-10 хвилин</li>
|
||||
<li><strong>Додати retry logic</strong> — в sync endpoint</li>
|
||||
<li><strong>Перевірити chat widget</strong> — після створення Matrix rooms</li>
|
||||
</ol>
|
||||
<h2 id="7-sql-queries">7. SQL Queries для перевірки<a class="headerlink" href="#7-sql-queries" title="Permanent link">¶</a></h2>
|
||||
<div class="codehilite"><pre><span></span><code><span class="c1">-- Rooms з Matrix ID</span>
|
||||
<span class="k">SELECT</span><span class="w"> </span><span class="n">slug</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">matrix_room_id</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">city_rooms</span><span class="w"> </span>
|
||||
<span class="k">WHERE</span><span class="w"> </span><span class="n">matrix_room_id</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
|
||||
|
||||
<span class="c1">-- Rooms без Matrix ID</span>
|
||||
<span class="k">SELECT</span><span class="w"> </span><span class="n">slug</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">city_rooms</span><span class="w"> </span>
|
||||
<span class="k">WHERE</span><span class="w"> </span><span class="n">matrix_room_id</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span>
|
||||
</code></pre></div>
|
||||
|
||||
<hr />
|
||||
<p><strong>Автор:</strong> Cursor AI
|
||||
<strong>Таск:</strong> <code>TASK_PHASE_MATRIX_GATEWAY_INTEGRATION_v1.md</code></p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="md-footer">
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-copyright">
|
||||
|
||||
|
||||
Made with
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||
Material for MkDocs
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
<div class="md-dialog" data-md-component="dialog">
|
||||
<div class="md-dialog__inner md-typeset"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1071
site/debug/microdao_rooms_integration_report_20251130/index.html
Normal file
1071
site/debug/microdao_rooms_integration_report_20251130/index.html
Normal file
File diff suppressed because it is too large
Load Diff
946
site/debug/mvp_dagi_integration_fix_report_20251201/index.html
Normal file
946
site/debug/mvp_dagi_integration_fix_report_20251201/index.html
Normal file
@@ -0,0 +1,946 @@
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/debug/mvp_dagi_integration_fix_report_20251201/">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
|
||||
|
||||
|
||||
|
||||
<title>MVP DAGI Integration Fix Report — 2025-12-01 - DAARION Documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||||
|
||||
|
||||
|
||||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body dir="ltr">
|
||||
|
||||
|
||||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||
<label class="md-overlay" for="__drawer"></label>
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#mvp-dagi-integration-fix-report-2025-12-01" class="md-skip">
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div data-md-component="announce">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="md-header md-header--shadow" data-md-component="header">
|
||||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
<label class="md-header__button md-icon" for="__drawer">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||||
</label>
|
||||
<div class="md-header__title" data-md-component="header-title">
|
||||
<div class="md-header__ellipsis">
|
||||
<div class="md-header__topic">
|
||||
<span class="md-ellipsis">
|
||||
DAARION Documentation
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
MVP DAGI Integration Fix Report — 2025-12-01
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||||
|
||||
|
||||
|
||||
<label class="md-header__button md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
</label>
|
||||
<div class="md-search" data-md-component="search" role="dialog">
|
||||
<label class="md-search__overlay" for="__search"></label>
|
||||
<div class="md-search__inner" role="search">
|
||||
<form class="md-search__form" name="search">
|
||||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||||
<label class="md-search__icon md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</label>
|
||||
<nav class="md-search__options" aria-label="Search">
|
||||
|
||||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
</form>
|
||||
<div class="md-search__output">
|
||||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||||
<div class="md-search-result" data-md-component="search-result">
|
||||
<div class="md-search-result__meta">
|
||||
Initializing search
|
||||
</div>
|
||||
<ol class="md-search-result__list" role="presentation"></ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<div class="md-container" data-md-component="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="md-main" data-md-component="main">
|
||||
<div class="md-main__inner md-grid">
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
DAARION Documentation
|
||||
</label>
|
||||
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Home
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/getting-started/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Getting Started
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/architecture-overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Architecture
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
DAIS & DAOS
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Internal
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Internal
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_1">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Infra
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra Automation Pack v1
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Monitoring Overview
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Nodes Registry v0
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Specs
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_2">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Specs
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Matrix Presence Aggregator
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
City Map Spec
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Node Join Protocol (Draft)
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#summary" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Summary
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#a-agents-layer" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
A) Agents Layer
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="A) Agents Layer">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#a1-gov-level-ui" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ A1. Gov-level у UI
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#a2-dais-id-ui" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ A2. DAIS ID у UI
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#a3-microdao-membership" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ A3. MicroDAO membership
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#b-microdao-layer" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
B) MicroDAO Layer
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="B) MicroDAO Layer">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#b1-microdao-dashboard" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ B1. MicroDAO Dashboard
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#b2-district-level-badge" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ B2. District-level badge
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#c-nodes-layer" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
C) Nodes Layer
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="C) Nodes Layer">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#c1-node-dashboard" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ C1. Node Dashboard
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#c2-nodes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ C2. Міграція nodes
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#c3-node1node2-nodes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ C3. NODE1/NODE2 у nodes
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#d-backend-fixes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
D) Backend Fixes
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="D) Backend Fixes">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#d1-apiagents-dais-home_node-owner_microdao" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ D1. /api/agents/* (DAIS, home_node, owner_microdao)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#d2-apimicrodaoidrooms" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ D2. /api/microdao/:id/rooms
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#d3-apinodesiddashboard" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
✅ D3. /api/nodes/:id/dashboard
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#_1" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Змінені файли
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="Змінені файли">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#backend-city-service" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Backend (city-service)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#frontend-appsweb" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Frontend (apps/web)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#_2" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Наступні кроки (рекомендації)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="mvp-dagi-integration-fix-report-2025-12-01">MVP DAGI Integration Fix Report — 2025-12-01<a class="headerlink" href="#mvp-dagi-integration-fix-report-2025-12-01" title="Permanent link">¶</a></h1>
|
||||
<h2 id="summary">Summary<a class="headerlink" href="#summary" title="Permanent link">¶</a></h2>
|
||||
<p>Виконано всі 11 пунктів з <code>TASK_PHASE_MVP_DAGI_INTEGRATION_FIX_20251201.md</code>.
|
||||
Ланцюг <strong>"документи → код → деплой → UI"</strong> тепер замкнутий для agents, microDAO та nodes.</p>
|
||||
<hr />
|
||||
<h2 id="a-agents-layer">A) Agents Layer<a class="headerlink" href="#a-agents-layer" title="Permanent link">¶</a></h2>
|
||||
<h3 id="a1-gov-level-ui">✅ A1. Gov-level у UI<a class="headerlink" href="#a1-gov-level-ui" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li><strong>Backend</strong>: Додано <code>gov_level</code> до SQL-запиту в <code>repo_city.py</code> (line ~389)</li>
|
||||
<li><strong>Models</strong>: Додано <code>gov_level: Optional[str]</code> до <code>AgentSummary</code> в <code>models_city.py</code></li>
|
||||
<li><strong>Routes</strong>: Передається в API відповідь в <code>routes_city.py</code></li>
|
||||
<li><strong>Frontend Types</strong>: Додано <code>gov_level</code> до <code>AgentSummary</code> в <code>apps/web/src/lib/types/agents.ts</code></li>
|
||||
<li><strong>Frontend UI</strong>: </li>
|
||||
<li><code>/agents</code> — показує gov-level badge з іконкою Shield</li>
|
||||
<li><code>/agents/[agentId]</code> — показує gov-level у AgentSummaryCard</li>
|
||||
<li><strong>Helper</strong>: Створено <code>getGovLevelBadge()</code> та <code>GOV_LEVEL_CONFIG</code> для відображення рівнів</li>
|
||||
</ul>
|
||||
<h3 id="a2-dais-id-ui">✅ A2. DAIS ID у UI<a class="headerlink" href="#a2-dais-id-ui" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li><strong>Backend</strong>: Додано <code>dais_identity_id</code> до SQL-запиту</li>
|
||||
<li><strong>Models</strong>: Додано <code>dais_identity_id: Optional[str]</code> до <code>AgentSummary</code></li>
|
||||
<li><strong>Frontend Types</strong>: Додано <code>dais_identity_id</code> до <code>AgentSummary</code></li>
|
||||
<li><strong>Frontend UI</strong>: Показується в AgentSummaryCard з іконкою Fingerprint</li>
|
||||
</ul>
|
||||
<h3 id="a3-microdao-membership">✅ A3. MicroDAO membership<a class="headerlink" href="#a3-microdao-membership" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li><strong>Backend</strong>: Додано <code>home_microdao_id</code>, <code>home_microdao_name</code>, <code>home_microdao_slug</code> до SQL</li>
|
||||
<li><strong>Models</strong>: Додано відповідні поля до <code>AgentSummary</code></li>
|
||||
<li><strong>Frontend</strong>: </li>
|
||||
<li>AgentSummaryCard показує "Belongs to: <microDAO>" з посиланням</li>
|
||||
<li>AgentMicrodaoMembershipCard вже існував і працює</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h2 id="b-microdao-layer">B) MicroDAO Layer<a class="headerlink" href="#b-microdao-layer" title="Permanent link">¶</a></h2>
|
||||
<h3 id="b1-microdao-dashboard">✅ B1. MicroDAO Dashboard<a class="headerlink" href="#b1-microdao-dashboard" title="Permanent link">¶</a></h3>
|
||||
<p>Вже реалізовано в <code>/microdao/[slug]/page.tsx</code>:
|
||||
- Список агентів з ролями та core-бейджами
|
||||
- Список кімнат (MicrodaoRoomsSection)
|
||||
- Список громадян (public_citizens)
|
||||
- Child microDAOs</p>
|
||||
<h3 id="b2-district-level-badge">✅ B2. District-level badge<a class="headerlink" href="#b2-district-level-badge" title="Permanent link">¶</a></h3>
|
||||
<p>Вже реалізовано:
|
||||
- <code>is_platform</code> показується як "Platform District"
|
||||
- <code>district</code> показується як окремий бейдж</p>
|
||||
<hr />
|
||||
<h2 id="c-nodes-layer">C) Nodes Layer<a class="headerlink" href="#c-nodes-layer" title="Permanent link">¶</a></h2>
|
||||
<h3 id="c1-node-dashboard">✅ C1. Node Dashboard<a class="headerlink" href="#c1-node-dashboard" title="Permanent link">¶</a></h3>
|
||||
<p>Вже реалізовано в <code>/nodes/[nodeId]/page.tsx</code>:
|
||||
- Metrics Layer (через dashboard API)
|
||||
- Ownership Layer (через NodeGuardianCard)
|
||||
- Models Layer (через AIServicesCard)
|
||||
- Orchestration Layer (через AgentsCard)</p>
|
||||
<h3 id="c2-nodes">✅ C2. Міграція nodes<a class="headerlink" href="#c2-nodes" title="Permanent link">¶</a></h3>
|
||||
<p>Додано в <code>migrations.py</code>:</p>
|
||||
<div class="codehilite"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">nodes</span><span class="w"> </span><span class="p">(</span>
|
||||
<span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="nb">TEXT</span><span class="w"> </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">display_name</span><span class="w"> </span><span class="nb">TEXT</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">hostname</span><span class="w"> </span><span class="nb">TEXT</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">owner_microdao_id</span><span class="w"> </span><span class="nb">TEXT</span><span class="w"> </span><span class="k">REFERENCES</span><span class="w"> </span><span class="n">microdaos</span><span class="p">(</span><span class="n">id</span><span class="p">),</span>
|
||||
<span class="w"> </span><span class="n">node_type</span><span class="w"> </span><span class="nb">TEXT</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">environment</span><span class="w"> </span><span class="nb">TEXT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="s1">'unknown'</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">cpu_cores</span><span class="w"> </span><span class="nb">INTEGER</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">ram_gb</span><span class="w"> </span><span class="nb">INTEGER</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">gpu_count</span><span class="w"> </span><span class="nb">INTEGER</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">disk_gb</span><span class="w"> </span><span class="nb">INTEGER</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">status</span><span class="w"> </span><span class="nb">TEXT</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="s1">'unknown'</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">guardian_agent_id</span><span class="w"> </span><span class="nb">TEXT</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">steward_agent_id</span><span class="w"> </span><span class="nb">TEXT</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="n">created_at</span><span class="w"> </span><span class="n">TIMESTAMPTZ</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="n">NOW</span><span class="p">(),</span>
|
||||
<span class="w"> </span><span class="n">updated_at</span><span class="w"> </span><span class="n">TIMESTAMPTZ</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="n">NOW</span><span class="p">()</span>
|
||||
<span class="p">);</span>
|
||||
</code></pre></div>
|
||||
|
||||
<h3 id="c3-node1node2-nodes">✅ C3. NODE1/NODE2 у nodes<a class="headerlink" href="#c3-node1node2-nodes" title="Permanent link">¶</a></h3>
|
||||
<p>Додано INSERT з ON CONFLICT DO UPDATE:
|
||||
- <code>node-1-hetzner-gex44</code> → <code>dao_daarion</code>, production
|
||||
- <code>node-2-macbook-m4max</code> → <code>dao_daarion</code>, development</p>
|
||||
<hr />
|
||||
<h2 id="d-backend-fixes">D) Backend Fixes<a class="headerlink" href="#d-backend-fixes" title="Permanent link">¶</a></h2>
|
||||
<h3 id="d1-apiagents-dais-home_node-owner_microdao">✅ D1. /api/agents/* (DAIS, home_node, owner_microdao)<a class="headerlink" href="#d1-apiagents-dais-home_node-owner_microdao" title="Permanent link">¶</a></h3>
|
||||
<p>Виправлено в <code>routes_city.py</code> та <code>repo_city.py</code>:
|
||||
- Додано <code>gov_level</code>, <code>dais_identity_id</code>
|
||||
- Додано <code>home_microdao_id</code>, <code>home_microdao_name</code>, <code>home_microdao_slug</code></p>
|
||||
<h3 id="d2-apimicrodaoidrooms">✅ D2. /api/microdao/:id/rooms<a class="headerlink" href="#d2-apimicrodaoidrooms" title="Permanent link">¶</a></h3>
|
||||
<p>Вже існує: <code>GET /city/microdao/{slug}/rooms</code></p>
|
||||
<h3 id="d3-apinodesiddashboard">✅ D3. /api/nodes/:id/dashboard<a class="headerlink" href="#d3-apinodesiddashboard" title="Permanent link">¶</a></h3>
|
||||
<p>Вже існує: <code>GET /api/v1/nodes/{node_id}/dashboard</code></p>
|
||||
<hr />
|
||||
<h2 id="_1">Змінені файли<a class="headerlink" href="#_1" title="Permanent link">¶</a></h2>
|
||||
<h3 id="backend-city-service">Backend (city-service)<a class="headerlink" href="#backend-city-service" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li><code>repo_city.py</code> — додано gov_level, dais_identity_id, home_microdao до SQL</li>
|
||||
<li><code>models_city.py</code> — розширено AgentSummary</li>
|
||||
<li><code>routes_city.py</code> — передача нових полів в API</li>
|
||||
<li><code>migrations.py</code> — створення таблиці nodes, INSERT NODE1/NODE2</li>
|
||||
</ul>
|
||||
<h3 id="frontend-appsweb">Frontend (apps/web)<a class="headerlink" href="#frontend-appsweb" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li><code>src/lib/types/agents.ts</code> — додано gov_level, dais_identity_id, home_microdao, хелпери</li>
|
||||
<li><code>src/lib/agent-dashboard.ts</code> — розширено AgentProfile</li>
|
||||
<li><code>src/app/agents/page.tsx</code> — gov-level badge у списку</li>
|
||||
<li><code>src/components/agent-dashboard/AgentSummaryCard.tsx</code> — gov-level, DAIS ID, home microDAO</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h2 id="_2">Наступні кроки (рекомендації)<a class="headerlink" href="#_2" title="Permanent link">¶</a></h2>
|
||||
<ol>
|
||||
<li><strong>Деплой</strong>: Перезапустити <code>daarion-city-service</code> на NODE1 для застосування міграцій</li>
|
||||
<li><strong>Тестування</strong>: Перевірити UI на https://daarion.space/agents та /nodes</li>
|
||||
<li><strong>Розширення</strong>: Додати DAIS emails/wallets до API (поки тільки dais_identity_id)</li>
|
||||
<li><strong>Metrics</strong>: Підключити реальні метрики до Node Dashboard (Prometheus/NATS)</li>
|
||||
</ol>
|
||||
<hr />
|
||||
<p><strong>Status: COMPLETED</strong>
|
||||
<strong>Date: 2025-12-01</strong></p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="md-footer">
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-copyright">
|
||||
|
||||
|
||||
Made with
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||
Material for MkDocs
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
<div class="md-dialog" data-md-component="dialog">
|
||||
<div class="md-dialog__inner md-typeset"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
696
site/debug/mvp_dagi_integration_report_20251130/index.html
Normal file
696
site/debug/mvp_dagi_integration_report_20251130/index.html
Normal file
@@ -0,0 +1,696 @@
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/debug/mvp_dagi_integration_report_20251130/">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
|
||||
|
||||
|
||||
|
||||
<title>MVP DAGI Integration Report — 2025-11-30 - DAARION Documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||||
|
||||
|
||||
|
||||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body dir="ltr">
|
||||
|
||||
|
||||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||
<label class="md-overlay" for="__drawer"></label>
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#mvp-dagi-integration-report-2025-11-30" class="md-skip">
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div data-md-component="announce">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="md-header md-header--shadow" data-md-component="header">
|
||||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
<label class="md-header__button md-icon" for="__drawer">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||||
</label>
|
||||
<div class="md-header__title" data-md-component="header-title">
|
||||
<div class="md-header__ellipsis">
|
||||
<div class="md-header__topic">
|
||||
<span class="md-ellipsis">
|
||||
DAARION Documentation
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
MVP DAGI Integration Report — 2025-11-30
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||||
|
||||
|
||||
|
||||
<label class="md-header__button md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
</label>
|
||||
<div class="md-search" data-md-component="search" role="dialog">
|
||||
<label class="md-search__overlay" for="__search"></label>
|
||||
<div class="md-search__inner" role="search">
|
||||
<form class="md-search__form" name="search">
|
||||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||||
<label class="md-search__icon md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</label>
|
||||
<nav class="md-search__options" aria-label="Search">
|
||||
|
||||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
</form>
|
||||
<div class="md-search__output">
|
||||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||||
<div class="md-search-result" data-md-component="search-result">
|
||||
<div class="md-search-result__meta">
|
||||
Initializing search
|
||||
</div>
|
||||
<ol class="md-search-result__list" role="presentation"></ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<div class="md-container" data-md-component="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="md-main" data-md-component="main">
|
||||
<div class="md-main__inner md-grid">
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
DAARION Documentation
|
||||
</label>
|
||||
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Home
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/getting-started/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Getting Started
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/architecture-overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Architecture
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
DAIS & DAOS
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Internal
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Internal
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_1">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Infra
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra Automation Pack v1
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Monitoring Overview
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Nodes Registry v0
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Specs
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_2">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Specs
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Matrix Presence Aggregator
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
City Map Spec
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Node Join Protocol (Draft)
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#agents" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Agents
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#microdao" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
MicroDAO
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#nodes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Nodes
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#summary" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Summary
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="mvp-dagi-integration-report-2025-11-30">MVP DAGI Integration Report — 2025-11-30<a class="headerlink" href="#mvp-dagi-integration-report-2025-11-30" title="Permanent link">¶</a></h1>
|
||||
<h2 id="agents">Agents<a class="headerlink" href="#agents" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><strong>Документи</strong>: <code>DAARION_Ontology_Core_v1</code>, <code>Agent_Governance_Protocol_v1</code>, <code>DAARION_Identity_And_Access_Draft_v1</code>.</li>
|
||||
<li><strong>Бекенд / DAGI</strong>: <code>services/city-service</code> (<code>/city/agents/*</code>, <code>/api/v1/agents/*</code>). Дані з таблиць <code>agents</code>, <code>microdao_members</code>, <code>dais_*</code>. Взаємодія з DAGI через gov-level, DAIS identity, node bindings.</li>
|
||||
<li><strong>Фронтенд</strong>: сторінки <code>/agents</code> та <code>/agents/[agentId]</code>, API-виклики через <code>/api/agents/*</code> -> rewrites -> city-service.</li>
|
||||
<li><strong>Знахідки</strong>:</li>
|
||||
<li>Gov-level, DAIS identity, microDAO membership присутні на бекенді та частково в UI (gov-level є у даних, але не всюди відображений). </li>
|
||||
<li>Node binding (НОДА1/НОДА2) показується в AgentCard.</li>
|
||||
<li>TODO: додати явне відображення DAIS identity та gov-level у UI, а також поля home_microdao_id (частина агентів core_team ще без нього). </li>
|
||||
</ul>
|
||||
<h2 id="microdao">MicroDAO<a class="headerlink" href="#microdao" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><strong>Документи</strong>: <code>Technical_Description_microdao_PATCH_Ontology</code>, <code>microdao_Data_Model_UPDATE_v1</code>, <code>microdao_Event_Catalog_EXTENDED_v1</code>, <code>MicroDAO_Interface_Architecture_v1</code>.</li>
|
||||
<li><strong>Бекенд / DAGI</strong>: ендпоїнти <code>/city/microdao/*</code>, <code>/api/v1/microdao/*</code>. Дані в <code>microdaos</code>, <code>microdao_agents</code>, <code>microdao_channels</code>. Події в <code>event_outbox</code> підготовлені, але не всі використовуються в UI.</li>
|
||||
<li><strong>Фронтенд</strong>: <code>/microdao</code> і <code>/governance</code> (Next.js) — показують список microDAO, базові деталі оркестратора, але не всі канали/кімнати.</li>
|
||||
<li><strong>Знахідки</strong>:</li>
|
||||
<li>У БД є 9 активних microDAO (DAARION, Clan, Druid, Eonarch, ENERGYUNION, GREENFOOD, Nutra, SOUL, Yaromir).</li>
|
||||
<li>UI відображає базові поля, але ще немає повного Interface Architecture (канали, citizens).</li>
|
||||
<li>TODO: завершити MicroDAO Dashboard (канали, rooms, citizens) згідно з документами.</li>
|
||||
</ul>
|
||||
<h2 id="nodes">Nodes<a class="headerlink" href="#nodes" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><strong>Документи</strong>: <code>Nodes_Interface_Architecture_UPDATE_v1</code>, <code>Nodes_Profile_Core_Invariant_PATCH_v1</code>, <code>TASK_PHASE_NODE_RUNTIME_AUDIT_NODE1_NODE2</code>.</li>
|
||||
<li><strong>Бекенд / DAGI</strong>: <code>/public/nodes</code>, <code>/api/nodes/*</code>, <code>/city/agents/{id}/dashboard</code>. Дані беруться з <code>node_cache</code> + agent summaries.</li>
|
||||
<li><strong>Фронтенд</strong>: <code>/nodes</code>, <code>/nodes/[nodeId]</code>. Відображають 4 шари частково (metrics/ownership/orchestration). </li>
|
||||
<li><strong>Знахідки</strong>:</li>
|
||||
<li>У <code>node_cache</code> є NODE1 (prod) і NODE2 (dev) з guardian/steward агентами.</li>
|
||||
<li>UI показує базову інформацію, але Models Layer (Swapper/моделі) ще stub (банер “dashboard WIP”).</li>
|
||||
<li>TODO: додати повний Node Dashboard (metrics graf, models list) згідно PATCH v1.</li>
|
||||
</ul>
|
||||
<h2 id="summary">Summary<a class="headerlink" href="#summary" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><strong>Agents</strong>: Код ↔ деплой ↔ UI працюють; потрібно лише додати повне відображення gov-level, DAIS і microDAO membership у UI.</li>
|
||||
<li><strong>MicroDAO</strong>: Дані та API готові; UI ще не покриває всі елементи Interface Architecture (канали, citizens, room map).</li>
|
||||
<li><strong>Nodes</strong>: Архітектура (4 шари + Node Core Agents) вже реалізується; UI потребує розширення (metrics/models), а в БД треба додати окрему таблицю <code>nodes</code> із microDAO owner для повного інваріанту.</li>
|
||||
</ul>
|
||||
<p>Рекомендації: сформувати <code>TASK_PHASE_MVP_DAGI_INTEGRATION_FIX_202512XX.md</code> із конкретними фронтенд/бекенд доопрацюваннями (відображення gov-level/DAIS, Node Dashboard, MicroDAO Dashboard) та створити міграцію <code>nodes</code> з полем owner_microdao.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="md-footer">
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-copyright">
|
||||
|
||||
|
||||
Made with
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||
Material for MkDocs
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
<div class="md-dialog" data-md-component="dialog">
|
||||
<div class="md-dialog__inner md-typeset"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
33
site/debug/node1_containers_20251130.txt
Normal file
33
site/debug/node1_containers_20251130.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}' | grep -E '(dagi-|daarion-|gateway)' @ NODE1 (2025-11-30)
|
||||
|
||||
Names Image Status
|
||||
daarion-web daarion-web:latest Up 11 minutes
|
||||
daarion-city-service daarion-city-service:latest Up 11 minutes (healthy)
|
||||
dagi-postgres postgres:15-alpine Up 39 minutes
|
||||
dagi-rbac microdao-daarion-rbac Up 49 minutes (healthy)
|
||||
dagi-devtools microdao-daarion-devtools Up 49 minutes (healthy)
|
||||
dagi-crewai microdao-daarion-crewai Up 49 minutes (healthy)
|
||||
dagi-rag-service microdao-daarion-rag-service Restarting (1) 9 seconds ago
|
||||
dagi-vector-db-service vector-db-service-vector-db-service Up 17 hours (healthy)
|
||||
dagi-web-search-service web-search-service-web-search-service Up 17 hours (healthy)
|
||||
dagi-ocr-service ocr-service-ocr-service Up 24 hours (unhealthy)
|
||||
dagi-stt-service stt-service-stt-service Up 24 hours (healthy)
|
||||
dagi-router dagi-router:latest Up 25 hours (healthy)
|
||||
dagi-node-registry 405a26a6f184 Up 2 days (healthy)
|
||||
daarion-agents-service daarion-agents-service:latest Up 15 hours
|
||||
daarion-matrix-gateway daarion-matrix-gateway:latest Up 2 days
|
||||
daarion-auth daarion-auth Up 3 days (healthy)
|
||||
daarion-synapse matrixdotorg/synapse:latest Up 3 days (healthy)
|
||||
daarion-element vectorim/element-web:latest Up 3 days (healthy)
|
||||
daarion-secondme-service daarion-secondme-service:latest Up 4 days
|
||||
daarion-microdao-service daarion-microdao-service:latest Up 4 days
|
||||
daarion-redis redis:7-alpine Up 4 days
|
||||
dagi-tts daarion-tts:latest Up 6 days (healthy)
|
||||
dagi-memory-service bbe7e4fe7343 Up 6 days (healthy)
|
||||
dagi-neo4j-exporter microdao-daarion-neo4j-exporter Up 7 days (healthy)
|
||||
dagi-neo4j neo4j:5.15-community Up 7 days (healthy)
|
||||
dagi-nats nats:2-alpine Up 14 hours (healthy)
|
||||
dagi-image-gen microdao-daarion-image-gen-service Up 8 days (unhealthy)
|
||||
dagi-qdrant qdrant/qdrant:v1.7.4 Up 9 days
|
||||
dagi-prometheus prom/prometheus:latest Up 9 days (healthy)
|
||||
dagi-parser-service microdao-daarion-parser-service Up 9 days (healthy)
|
||||
23
site/debug/node1_health_20251130.txt
Normal file
23
site/debug/node1_health_20251130.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
NODE1 healthcheck (2025-11-30)
|
||||
|
||||
[city-service]
|
||||
CMD: curl -s http://localhost:7001/health
|
||||
OUT: {"status":"healthy","service":"city-service"}
|
||||
STATUS: OK
|
||||
|
||||
[gateway]
|
||||
CMD: curl -s http://localhost:9300/health
|
||||
OUT: (connection refused)
|
||||
STATUS: FAIL (service not reachable on localhost:9300)
|
||||
|
||||
[NATS]
|
||||
CMD: nc -z localhost 4222
|
||||
OUT: Connection succeeded
|
||||
STATUS: OK
|
||||
|
||||
[Postgres]
|
||||
CMD: docker exec dagi-postgres psql -U postgres -d postgres -c 'SELECT 1'
|
||||
OUT: 1
|
||||
STATUS: OK
|
||||
|
||||
Notes: matrix/gateway health endpoint недоступний за localhost:9300 і через DNS-імена; потрібно уточнити адресу сервісу або додати health endpoint.
|
||||
722
site/debug/node2_config_audit_20251130/index.html
Normal file
722
site/debug/node2_config_audit_20251130/index.html
Normal file
@@ -0,0 +1,722 @@
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/debug/node2_config_audit_20251130/">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
|
||||
|
||||
|
||||
|
||||
<title>NODE2 Config & Isolation Audit — 2025-11-30 - DAARION Documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||||
|
||||
|
||||
|
||||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body dir="ltr">
|
||||
|
||||
|
||||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||
<label class="md-overlay" for="__drawer"></label>
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#node2-config-isolation-audit-2025-11-30" class="md-skip">
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div data-md-component="announce">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="md-header md-header--shadow" data-md-component="header">
|
||||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
<label class="md-header__button md-icon" for="__drawer">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||||
</label>
|
||||
<div class="md-header__title" data-md-component="header-title">
|
||||
<div class="md-header__ellipsis">
|
||||
<div class="md-header__topic">
|
||||
<span class="md-ellipsis">
|
||||
DAARION Documentation
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
NODE2 Config & Isolation Audit — 2025-11-30
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||||
|
||||
|
||||
|
||||
<label class="md-header__button md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
</label>
|
||||
<div class="md-search" data-md-component="search" role="dialog">
|
||||
<label class="md-search__overlay" for="__search"></label>
|
||||
<div class="md-search__inner" role="search">
|
||||
<form class="md-search__form" name="search">
|
||||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||||
<label class="md-search__icon md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</label>
|
||||
<nav class="md-search__options" aria-label="Search">
|
||||
|
||||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
</form>
|
||||
<div class="md-search__output">
|
||||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||||
<div class="md-search-result" data-md-component="search-result">
|
||||
<div class="md-search-result__meta">
|
||||
Initializing search
|
||||
</div>
|
||||
<ol class="md-search-result__list" role="presentation"></ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<div class="md-container" data-md-component="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="md-main" data-md-component="main">
|
||||
<div class="md-main__inner md-grid">
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
DAARION Documentation
|
||||
</label>
|
||||
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Home
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/getting-started/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Getting Started
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/architecture-overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Architecture
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
DAIS & DAOS
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Internal
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Internal
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_1">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Infra
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra Automation Pack v1
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Monitoring Overview
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Nodes Registry v0
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Specs
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_2">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Specs
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Matrix Presence Aggregator
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
City Map Spec
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Node Join Protocol (Draft)
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#context" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Context
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#database" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Database
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#nats" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
NATS
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#gateway-matrix-bots" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Gateway / Matrix / Bots
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#_1" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Інші секрети / сервіси
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#summary" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Summary
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="node2-config-isolation-audit-2025-11-30">NODE2 Config & Isolation Audit — 2025-11-30<a class="headerlink" href="#node2-config-isolation-audit-2025-11-30" title="Permanent link">¶</a></h1>
|
||||
<h2 id="context">Context<a class="headerlink" href="#context" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>Host: локальна dev-нода (MacBook Pro M4 Max).</li>
|
||||
<li>Ціль: підтвердити, що NODE2 використовує власні сервіси і не звертається до прод-конфігів NODE1.</li>
|
||||
<li>Перевіряли тільки запущені контейнери <code>docker ps</code> (див. <code>docs/debug/node2_containers_20251130.txt</code>).</li>
|
||||
</ul>
|
||||
<hr />
|
||||
<h2 id="database">Database<a class="headerlink" href="#database" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><code>dagi-postgres</code> запущений локально з <code>POSTGRES_DB=daarion_memory</code>, <code>POSTGRES_USER=postgres</code>, <code>POSTGRES_PASSWORD=postgres</code>.</li>
|
||||
<li>Жоден контейнер не використовує <code>postgres://...@dagi-postgres:5432/daarion</code> (прод-БД).</li>
|
||||
<li><code>dagi-rag-service</code> має <code>PG_DSN=postgresql+psycopg2://postgres:postgres@city-db:5432/daarion_city</code>, але контейнера <code>city-db</code> на NODE2 немає → сервіс перезапускається. Потрібно або створити локальний <code>city-db</code>, або замінити DSN на <code>dagi-postgres</code>/dev-БД.</li>
|
||||
</ul>
|
||||
<h2 id="nats">NATS<a class="headerlink" href="#nats" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>Локальний контейнер <code>dagi-nats</code> (<code>nats:2-alpine</code>).</li>
|
||||
<li>У <code>dagi-rag-service</code> <code>NATS_URL=nats://nats:4222</code> (вказує на локальний контейнер, не на NODE1).</li>
|
||||
<li>Інших згадок про прод-URL нема.</li>
|
||||
</ul>
|
||||
<h2 id="gateway-matrix-bots">Gateway / Matrix / Bots<a class="headerlink" href="#gateway-matrix-bots" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><code>dagi-gateway</code> використовує локальний <code>ROUTER_URL=http://router:9102</code>.</li>
|
||||
<li>Телеграм-токени:</li>
|
||||
<li><code>DAARWIZZ_TELEGRAM_BOT_TOKEN</code> не задано.</li>
|
||||
<li><code>HELION_TELEGRAM_BOT_TOKEN=8112062582:...</code> (dev-токен; перевірити вручну, чи він відрізняється від прод).</li>
|
||||
<li><code>TELEGRAM_BOT_TOKEN=your_daarwizz_token_here</code> — placeholder, фактично бот не під'єднаний.</li>
|
||||
<li>Matrix / gateway env змінних не виявлено (немає <code>MATRIX_GATEWAY_URL</code>).</li>
|
||||
</ul>
|
||||
<h2 id="_1">Інші секрети / сервіси<a class="headerlink" href="#_1" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><code>olagi-router</code>, <code>swapper-service</code>, <code>stt-service</code>, <code>ocr-service</code>, <code>image-gen</code> працюють суто локально (<code>router</code>, <code>host.docker.internal</code>, тощо).</li>
|
||||
<li>Немає <code>daarion-city-service</code> та <code>INTERNAL_API_URL</code> → dev-нода не запускає міський бекенд.</li>
|
||||
<li>Більшість контейнерів у стані <code>unhealthy</code> або <code>Restarting</code>, але це локальні сервіси; вони не звертаються до NODE1.</li>
|
||||
</ul>
|
||||
<h2 id="summary">Summary<a class="headerlink" href="#summary" title="Permanent link">¶</a></h2>
|
||||
<ol>
|
||||
<li><strong>Перетинів з прод-БД/NATS не виявлено.</strong> Весь стек використовує локальні сервіси.</li>
|
||||
<li><strong>RAG-service</strong> намагається підключитись до неіснуючого <code>city-db</code> → слід оновити <code>PG_DSN</code> на локальну БД або вимкнути контейнер.</li>
|
||||
<li><strong>Gateway токени</strong>: Helion bot має конкретний токен. Потрібно перевірити, чи це dev- або prod-ключ. Якщо це dev — залишити; якщо прод — винести зі stack.</li>
|
||||
<li><strong>Рекомендації:</strong></li>
|
||||
<li>створити <code>city-db</code> (dev) або переписати <code>PG_DSN</code> → <code>postgresql+psycopg2://postgres:postgres@dagi-postgres:5432/daarion_memory</code>.</li>
|
||||
<li>задокументувати dev-токени в secret manager (щоб не плутати з prod).</li>
|
||||
<li>за можливості привести назви контейнерів (nats, router) до <code>dev-*</code>, щоб було очевидно, що це dev-стек.</li>
|
||||
</ol>
|
||||
<p>Отже, NODE2 має власний DAGI-стек і не зачіпає прод-конфіги NODE1, але потребує дрібних виправлень (RAG DSN, ревізія токенів).</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="md-footer">
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-copyright">
|
||||
|
||||
|
||||
Made with
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||
Material for MkDocs
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
<div class="md-dialog" data-md-component="dialog">
|
||||
<div class="md-dialog__inner md-typeset"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
23
site/debug/node2_containers_20251130.txt
Normal file
23
site/debug/node2_containers_20251130.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}' @ NODE2 (2025-11-30)
|
||||
|
||||
NAMES IMAGE STATUS
|
||||
dagı-rag-service microdao3-rag-service Restarting (1) 37 seconds ago
|
||||
dagı-router microdao3-router Up 39 minutes (healthy)
|
||||
dagı-devtools microdao3-devtools Up 39 minutes (healthy)
|
||||
dagı-rbac microdao3-rbac Up 39 minutes (healthy)
|
||||
dagı-crewai microdao3-crewai Up 39 minutes (healthy)
|
||||
dagı-image-gen microdao3-image-gen-service Up 43 minutes (unhealthy)
|
||||
dagı-tts-service microdao3-tts-service Up 4 hours (unhealthy)
|
||||
dagı-nats nats:2-alpine Up 5 hours (unhealthy)
|
||||
dagı-stt-service microdao3-stt-service Up 5 hours (unhealthy)
|
||||
dagı-prometheus prom/prometheus:latest Up 5 hours (healthy)
|
||||
dagı-neo4j-exporter microdao3-neo4j-exporter Restarting (0) 25 seconds ago
|
||||
dagı-neo4j neo4j:5.15-community Restarting (1) 6 seconds ago
|
||||
o cr-service ocr-service:latest Up 2 days (unhealthy)
|
||||
swapper-service swapper-service:latest Up 2 days
|
||||
dagı-web-search-service web-search-service-web-search-service Up 6 days (unhealthy)
|
||||
dagı-postgres postgres:15-alpine Up 6 days (healthy)
|
||||
dagı-gateway fa7472f3a8c3 Up 6 days (healthy)
|
||||
jupyter-lab jupyter/datascience-notebook:latest Up 6 days (healthy)
|
||||
qdrant-vector-db qdrant/qdrant:latest Up 6 days (unhealthy)
|
||||
meilisearch-search getmeili/meilisearch:v1.11 Up 6 days (healthy)
|
||||
704
site/debug/node_stack_mismatch_20251130/index.html
Normal file
704
site/debug/node_stack_mismatch_20251130/index.html
Normal file
@@ -0,0 +1,704 @@
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/debug/node_stack_mismatch_20251130/">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
|
||||
|
||||
|
||||
|
||||
<title>Node Stack Mismatch — 2025-11-30 - DAARION Documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||||
|
||||
|
||||
|
||||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body dir="ltr">
|
||||
|
||||
|
||||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||
<label class="md-overlay" for="__drawer"></label>
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#node-stack-mismatch-2025-11-30" class="md-skip">
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div data-md-component="announce">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="md-header md-header--shadow" data-md-component="header">
|
||||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
<label class="md-header__button md-icon" for="__drawer">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||||
</label>
|
||||
<div class="md-header__title" data-md-component="header-title">
|
||||
<div class="md-header__ellipsis">
|
||||
<div class="md-header__topic">
|
||||
<span class="md-ellipsis">
|
||||
DAARION Documentation
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Node Stack Mismatch — 2025-11-30
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||||
|
||||
|
||||
|
||||
<label class="md-header__button md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
</label>
|
||||
<div class="md-search" data-md-component="search" role="dialog">
|
||||
<label class="md-search__overlay" for="__search"></label>
|
||||
<div class="md-search__inner" role="search">
|
||||
<form class="md-search__form" name="search">
|
||||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||||
<label class="md-search__icon md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</label>
|
||||
<nav class="md-search__options" aria-label="Search">
|
||||
|
||||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
</form>
|
||||
<div class="md-search__output">
|
||||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||||
<div class="md-search-result" data-md-component="search-result">
|
||||
<div class="md-search-result__meta">
|
||||
Initializing search
|
||||
</div>
|
||||
<ol class="md-search-result__list" role="presentation"></ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<div class="md-container" data-md-component="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="md-main" data-md-component="main">
|
||||
<div class="md-main__inner md-grid">
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
DAARION Documentation
|
||||
</label>
|
||||
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Home
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/getting-started/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Getting Started
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/architecture-overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Architecture
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
DAIS & DAOS
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Internal
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Internal
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_1">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Infra
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra Automation Pack v1
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Monitoring Overview
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Nodes Registry v0
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Specs
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_2">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Specs
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Matrix Presence Aggregator
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
City Map Spec
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Node Join Protocol (Draft)
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#summary" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Summary
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#node1-node-1-hetzner-gex44" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
NODE1 (node-1-hetzner-gex44)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#node2-node-2-macbook-m4max" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
NODE2 (node-2-macbook-m4max)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#recommended-actions" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Recommended Actions
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="node-stack-mismatch-2025-11-30">Node Stack Mismatch — 2025-11-30<a class="headerlink" href="#node-stack-mismatch-2025-11-30" title="Permanent link">¶</a></h1>
|
||||
<h2 id="summary">Summary<a class="headerlink" href="#summary" title="Permanent link">¶</a></h2>
|
||||
<p>Під час виконання <code>TASK_PHASE_NODE_RUNTIME_AUDIT_NODE1_NODE2</code> знайдені відхилення між фактичними контейнерами та очікуваними профілями нод.</p>
|
||||
<h2 id="node1-node-1-hetzner-gex44">NODE1 (node-1-hetzner-gex44)<a class="headerlink" href="#node1-node-1-hetzner-gex44" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><strong>Mandatory services</strong>: більшість prod-сервісів присутні (<code>daarion-city-service</code>, <code>daarion-web</code>, <code>dagi-router</code>, <code>dagi-postgres</code>, <code>dagi-nats</code>, stt/ocr/web-search/rag/vector-db, parser, image-gen тощо).</li>
|
||||
<li><strong>Issues</strong>:</li>
|
||||
<li><code>dagi-rag-service</code> у стані <code>Restarting</code> → потребує фіксу/перезапуску, інакше DAGI-аналітика/LLM ingestion не працює.</li>
|
||||
<li><code>dagi-ocr-service</code> і <code>dagi-image-gen</code> позначені як <code>unhealthy</code> → треба прогнати healthchecks/логи.</li>
|
||||
<li>HTTP health <code>http://localhost:9300/health</code> (matrix/gateway) недоступний → потрібно або оновити endpoint, або задокументувати реальну адресу.</li>
|
||||
<li>У профайлі очікується <code>dagi-gateway</code>, а фактично працює <code>daarion-matrix-gateway</code>. Потрібно оновити Node Profile або привести іменування в доку до фактичного контейнера.</li>
|
||||
</ul>
|
||||
<h2 id="node2-node-2-macbook-m4max">NODE2 (node-2-macbook-m4max)<a class="headerlink" href="#node2-node-2-macbook-m4max" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li><strong>Очікуваний стек</strong>: dev/models (ollama/vllm, experimental services, core-team runtime). Не повинно бути прод-сервісів.</li>
|
||||
<li><strong>Фактичний стан</strong> (локальна машина):</li>
|
||||
<li>Запущені <code>dagi-router</code>, <code>dagi-postgres</code>, <code>dagi-rbac</code>, <code>dagi-devtools</code>, <code>dagi-gateway</code>, <code>dagi-prometheus</code>, <code>nats</code>, <code>stt-service</code>, <code>ocr-service</code>, <code>web-search-service</code> тощо — це прод-сервіси, які за профілем мають жити на NODE1.</li>
|
||||
<li>Більшість контейнерів у стані <code>unhealthy</code> або <code>Restarting</code> (rag-service, neo4j, nats, stt, tts, web-search).</li>
|
||||
<li>Висновок: NODE2 зараз тримає повний стек DAGI, а не лише dev/models. Потрібно або:<ul>
|
||||
<li>перемістити ці сервіси на NODE1 / іншу інфру (для прод-ролі);</li>
|
||||
<li>або оновити профіль NODE2 (якщо вирішено мати прод-сервіси на MacBook, що малоймовірно).</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h2 id="recommended-actions">Recommended Actions<a class="headerlink" href="#recommended-actions" title="Permanent link">¶</a></h2>
|
||||
<ol>
|
||||
<li><strong>NODE1</strong></li>
|
||||
<li>Розібратися з <code>dagi-rag-service</code> (перебудувати образ, перевірити залежності Postgres/NATS/Vector DB).</li>
|
||||
<li>Перевірити <code>dagi-ocr-service</code>, <code>dagi-image-gen</code> (health endpoints та логи).</li>
|
||||
<li>Уточнити адресу healthcheck для gateway (чи є окремий endpoint, чи потрібен reverse proxy).</li>
|
||||
<li>
|
||||
<p>Оновити Node Profile, щоб узгодити назви (<code>daarion-matrix-gateway</code>).</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>NODE2</strong></p>
|
||||
</li>
|
||||
<li>Зупинити продакшн-сервіси (<code>dagi-router</code>, <code>dagi-postgres</code>, <code>dagi-gateway</code>, <code>nats</code>, <code>stt</code>, <code>ocr</code>, <code>web-search</code>, тощо) або перенести їх у dev-версії з чітким неймінгом <code>dev-*</code>.</li>
|
||||
<li>За потреби залишити тільки dev/models runtime (ollama, swapper, experimental RAG) та відповідно оновити документацію.</li>
|
||||
<li>
|
||||
<p>Перевірити/почистити контейнери, що зависли в <code>unhealthy</code> / <code>Restarting</code> стані.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Документація</strong></p>
|
||||
</li>
|
||||
<li>Відобразити реальний стан у <code>Node Profiles</code> + додати посилання на цей файл як доказ невідповідності.</li>
|
||||
</ol>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="md-footer">
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-copyright">
|
||||
|
||||
|
||||
Made with
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||
Material for MkDocs
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
<div class="md-dialog" data-md-component="dialog">
|
||||
<div class="md-dialog__inner md-typeset"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
744
site/debug/orphans_20251130/index.html
Normal file
744
site/debug/orphans_20251130/index.html
Normal file
@@ -0,0 +1,744 @@
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/debug/orphans_20251130/">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
|
||||
|
||||
|
||||
|
||||
<title>Orphans Audit — 2025-11-30 - DAARION Documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||||
|
||||
|
||||
|
||||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body dir="ltr">
|
||||
|
||||
|
||||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||
<label class="md-overlay" for="__drawer"></label>
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#orphans-audit-2025-11-30" class="md-skip">
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div data-md-component="announce">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="md-header md-header--shadow" data-md-component="header">
|
||||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
<label class="md-header__button md-icon" for="__drawer">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||||
</label>
|
||||
<div class="md-header__title" data-md-component="header-title">
|
||||
<div class="md-header__ellipsis">
|
||||
<div class="md-header__topic">
|
||||
<span class="md-ellipsis">
|
||||
DAARION Documentation
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Orphans Audit — 2025-11-30
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||||
|
||||
|
||||
|
||||
<label class="md-header__button md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
</label>
|
||||
<div class="md-search" data-md-component="search" role="dialog">
|
||||
<label class="md-search__overlay" for="__search"></label>
|
||||
<div class="md-search__inner" role="search">
|
||||
<form class="md-search__form" name="search">
|
||||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||||
<label class="md-search__icon md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</label>
|
||||
<nav class="md-search__options" aria-label="Search">
|
||||
|
||||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
</form>
|
||||
<div class="md-search__output">
|
||||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||||
<div class="md-search-result" data-md-component="search-result">
|
||||
<div class="md-search-result__meta">
|
||||
Initializing search
|
||||
</div>
|
||||
<ol class="md-search-result__list" role="presentation"></ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<div class="md-container" data-md-component="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="md-main" data-md-component="main">
|
||||
<div class="md-main__inner md-grid">
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
DAARION Documentation
|
||||
</label>
|
||||
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Home
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/getting-started/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Getting Started
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/architecture-overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Architecture
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
DAIS & DAOS
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Internal
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Internal
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_1">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Infra
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra Automation Pack v1
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Monitoring Overview
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Nodes Registry v0
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Specs
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_2">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Specs
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Matrix Presence Aggregator
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
City Map Spec
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Node Join Protocol (Draft)
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1-nodes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
1. Nodes
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#2-agents" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2. Agents
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#3-microdao" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
3. MicroDAO
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#4-rooms" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4. Rooms
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#summary" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
Summary
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="orphans-audit-2025-11-30">Orphans Audit — 2025-11-30<a class="headerlink" href="#orphans-audit-2025-11-30" title="Permanent link">¶</a></h1>
|
||||
<p>Production DB: <code>daarion</code> (NODE1)<br />
|
||||
Ref task: <code>docs/tasks/TASK_PHASE_MVP_VERIFY_NO_ORPHANS.md</code></p>
|
||||
<hr />
|
||||
<h2 id="1-nodes">1. Nodes<a class="headerlink" href="#1-nodes" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>Технічна таблиця <code>nodes</code> у поточній БД відсутня (використовується <code>node_cache</code>).</li>
|
||||
<li><code>node_cache</code> не містить <code>microdao_id</code>, тому перевірка <em>“нода без microDAO”</em> наразі неактуальна (TODO у схемі).</li>
|
||||
<li><code>node_cache</code> містить <code>guardian_agent_id</code> / <code>steward_agent_id</code> — обидві ноди мають заповнені значення.</li>
|
||||
</ul>
|
||||
<h2 id="2-agents">2. Agents<a class="headerlink" href="#2-agents" title="Permanent link">¶</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Перевірка</th>
|
||||
<th>SQL</th>
|
||||
<th>Результат</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Агенти без <code>home_microdao_id</code> (крім city-level)</td>
|
||||
<td><code>SELECT id FROM agents WHERE home_microdao_id IS NULL ...</code></td>
|
||||
<td>0 rows</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Governance агенти без DAIS identity</td>
|
||||
<td><code>SELECT id FROM agents WHERE dais_identity_id IS NULL AND gov_level IN (...)</code></td>
|
||||
<td>0 rows</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="3-microdao">3. MicroDAO<a class="headerlink" href="#3-microdao" title="Permanent link">¶</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Перевірка</th>
|
||||
<th>Результат</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>microdaos</code> без orchestrator</td>
|
||||
<td>0 rows</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Orchestrator не знайдений у <code>agents</code></td>
|
||||
<td>0 rows</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="4-rooms">4. Rooms<a class="headerlink" href="#4-rooms" title="Permanent link">¶</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Перевірка</th>
|
||||
<th>Результат</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>rooms</code> без owner (<code>owner_id IS NULL</code>)</td>
|
||||
<td>0 rows</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>City/District rooms без <code>primary_agent_id</code></td>
|
||||
<td>0 rows</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<hr />
|
||||
<h2 id="summary">Summary<a class="headerlink" href="#summary" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>Основні інваріанти виконані: орфанів у <code>agents</code>, <code>microdaos</code>, <code>rooms</code> — немає.</li>
|
||||
<li>Для <code>nodes</code> потрібно доробити схему (додати <code>microdao_id</code> або окрему таблицю), наразі замість цього використовується <code>node_cache</code>.</li>
|
||||
<li>UI <code>/nodes</code>, <code>/agents</code>, <code>/microdao</code> працюють на актуальних даних.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="md-footer">
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-copyright">
|
||||
|
||||
|
||||
Made with
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||
Material for MkDocs
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
<div class="md-dialog" data-md-component="dialog">
|
||||
<div class="md-dialog__inner md-typeset"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
905
site/debug/presence_layer_report_20251130/index.html
Normal file
905
site/debug/presence_layer_report_20251130/index.html
Normal file
@@ -0,0 +1,905 @@
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/debug/presence_layer_report_20251130/">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
|
||||
|
||||
|
||||
|
||||
<title>Presence Layer — Звіт про виконання - DAARION Documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||||
|
||||
|
||||
|
||||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body dir="ltr">
|
||||
|
||||
|
||||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||
<label class="md-overlay" for="__drawer"></label>
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#presence-layer" class="md-skip">
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div data-md-component="announce">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="md-header md-header--shadow" data-md-component="header">
|
||||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
<label class="md-header__button md-icon" for="__drawer">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||||
</label>
|
||||
<div class="md-header__title" data-md-component="header-title">
|
||||
<div class="md-header__ellipsis">
|
||||
<div class="md-header__topic">
|
||||
<span class="md-ellipsis">
|
||||
DAARION Documentation
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Presence Layer — Звіт про виконання
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||||
|
||||
|
||||
|
||||
<label class="md-header__button md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
</label>
|
||||
<div class="md-search" data-md-component="search" role="dialog">
|
||||
<label class="md-search__overlay" for="__search"></label>
|
||||
<div class="md-search__inner" role="search">
|
||||
<form class="md-search__form" name="search">
|
||||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||||
<label class="md-search__icon md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</label>
|
||||
<nav class="md-search__options" aria-label="Search">
|
||||
|
||||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
</form>
|
||||
<div class="md-search__output">
|
||||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||||
<div class="md-search-result" data-md-component="search-result">
|
||||
<div class="md-search-result__meta">
|
||||
Initializing search
|
||||
</div>
|
||||
<ol class="md-search-result__list" role="presentation"></ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<div class="md-container" data-md-component="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="md-main" data-md-component="main">
|
||||
<div class="md-main__inner md-grid">
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
DAARION Documentation
|
||||
</label>
|
||||
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Home
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/getting-started/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Getting Started
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/architecture-overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Architecture
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
DAIS & DAOS
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Internal
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Internal
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_1">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Infra
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra Automation Pack v1
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Monitoring Overview
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Nodes Registry v0
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Specs
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_2">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Specs
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Matrix Presence Aggregator
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
City Map Spec
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Node Join Protocol (Draft)
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
1. Мета
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#2" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2. Виконані роботи
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="2. Виконані роботи">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#21-matrix-gateway" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.1. Matrix Gateway ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#22-city-service" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.2. City Service ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#3-api" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
3. API Тести
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="3. API Тести">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#31-matrix-gateway-presence" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
3.1. Matrix Gateway Presence
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#32-agent-presence" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
3.2. Agent Presence
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#4-frontend" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4. Інтеграція з Frontend
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="4. Інтеграція з Frontend">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#41" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4.1. Наявні компоненти
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#42" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4.2. Рекомендації для повної інтеграції
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#5" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
5. Наступні кроки
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="5. Наступні кроки">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#51-frontend-todo" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
5.1. Frontend інтеграція (TODO)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#52-agent-matrix-users-todo" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
5.2. Agent Matrix Users (TODO)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#6" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
6. Архітектура
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#7" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
7. Команди для перевірки
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="presence-layer">Presence Layer — Звіт про виконання<a class="headerlink" href="#presence-layer" title="Permanent link">¶</a></h1>
|
||||
<p><strong>Дата:</strong> 2025-11-30
|
||||
<strong>Статус:</strong> ВИКОНАНО (Backend 100%)</p>
|
||||
<h2 id="1">1. Мета<a class="headerlink" href="#1" title="Permanent link">¶</a></h2>
|
||||
<p>Впровадити повний Presence Layer у DAARION.city для відображення online/offline/away статусів агентів.</p>
|
||||
<h2 id="2">2. Виконані роботи<a class="headerlink" href="#2" title="Permanent link">¶</a></h2>
|
||||
<h3 id="21-matrix-gateway">2.1. Matrix Gateway ✅<a class="headerlink" href="#21-matrix-gateway" title="Permanent link">¶</a></h3>
|
||||
<p>Нові endpoints:</p>
|
||||
<div class="codehilite"><pre><span></span><code><span class="k">GET</span><span class="w"> </span><span class="o">/</span><span class="n">internal</span><span class="o">/</span><span class="n">matrix</span><span class="o">/</span><span class="n">presence</span><span class="o">/</span><span class="err">{</span><span class="n">matrix_user_id</span><span class="err">}</span>
|
||||
<span class="k">GET</span><span class="w"> </span><span class="o">/</span><span class="n">internal</span><span class="o">/</span><span class="n">matrix</span><span class="o">/</span><span class="n">presence</span><span class="o">/</span><span class="k">bulk</span><span class="vm">?</span><span class="n">user_ids</span><span class="o">=</span><span class="nv">@user1</span><span class="err">:</span><span class="p">...,</span><span class="nv">@user2</span><span class="err">:</span><span class="p">...</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p><strong>Приклад відповіді:</strong></p>
|
||||
<div class="codehilite"><pre><span></span><code><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"user_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"@daarion_admin:daarion.space"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"presence"</span><span class="p">:</span><span class="w"> </span><span class="s2">"offline"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"last_active_ago_ms"</span><span class="p">:</span><span class="w"> </span><span class="mi">415845</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"status_msg"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p><strong>Нормалізація:</strong>
|
||||
- Matrix <code>online</code> → <code>"online"</code>
|
||||
- Matrix <code>unavailable</code> → <code>"away"</code>
|
||||
- Matrix <code>offline</code> / not found → <code>"offline"</code></p>
|
||||
<h3 id="22-city-service">2.2. City Service ✅<a class="headerlink" href="#22-city-service" title="Permanent link">¶</a></h3>
|
||||
<p>Новий endpoint:</p>
|
||||
<div class="codehilite"><pre><span></span><code>GET /api/v1/agents/{agent_id}/presence
|
||||
</code></pre></div>
|
||||
|
||||
<p><strong>Приклад відповіді:</strong></p>
|
||||
<div class="codehilite"><pre><span></span><code><span class="p">{</span>
|
||||
<span class="w"> </span><span class="nt">"agent_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"daarwizz"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"display_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"DAARWIZZ"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"matrix_user_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"@agent_daarwizz:daarion.space"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"presence"</span><span class="p">:</span><span class="w"> </span><span class="s2">"offline"</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"last_active_ago_ms"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
||||
<span class="w"> </span><span class="nt">"status_msg"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
|
||||
<span class="p">}</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p><strong>Логіка:</strong>
|
||||
1. Отримує агента з БД
|
||||
2. Генерує Matrix user ID: <code>@agent_{slug}:daarion.space</code>
|
||||
3. Запитує presence у Matrix Gateway
|
||||
4. Повертає нормалізований результат</p>
|
||||
<h2 id="3-api">3. API Тести<a class="headerlink" href="#3-api" title="Permanent link">¶</a></h2>
|
||||
<h3 id="31-matrix-gateway-presence">3.1. Matrix Gateway Presence<a class="headerlink" href="#31-matrix-gateway-presence" title="Permanent link">¶</a></h3>
|
||||
<div class="codehilite"><pre><span></span><code>curl<span class="w"> </span>-s<span class="w"> </span><span class="s1">'http://localhost:7025/internal/matrix/presence/@daarion_admin:daarion.space'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span><span class="s1">'.'</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p><strong>Результат:</strong> ✅ Повертає presence статус</p>
|
||||
<h3 id="32-agent-presence">3.2. Agent Presence<a class="headerlink" href="#32-agent-presence" title="Permanent link">¶</a></h3>
|
||||
<div class="codehilite"><pre><span></span><code>curl<span class="w"> </span>-s<span class="w"> </span><span class="s1">'http://localhost:7001/api/v1/agents/daarwizz/presence'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span><span class="s1">'.'</span>
|
||||
</code></pre></div>
|
||||
|
||||
<p><strong>Результат:</strong> ✅ Повертає presence агента</p>
|
||||
<h2 id="4-frontend">4. Інтеграція з Frontend<a class="headerlink" href="#4-frontend" title="Permanent link">¶</a></h2>
|
||||
<h3 id="41">4.1. Наявні компоненти<a class="headerlink" href="#41" title="Permanent link">¶</a></h3>
|
||||
<p>Файл <code>apps/web/src/components/ui/AgentPresenceBadge.tsx</code> вже існує і використовує:
|
||||
- <code>useAgentPresence</code> hook
|
||||
- <code>globalPresenceClient</code> для SSE</p>
|
||||
<h3 id="42">4.2. Рекомендації для повної інтеграції<a class="headerlink" href="#42" title="Permanent link">¶</a></h3>
|
||||
<ol>
|
||||
<li>
|
||||
<p><strong>Оновити <code>useAgentPresence</code></strong> для використання нового API:
|
||||
<code>typescript
|
||||
const fetchPresence = async (agentId: string) => {
|
||||
const res = await fetch(`/api/v1/agents/${agentId}/presence`);
|
||||
return res.json();
|
||||
};</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Додати <code>PresenceDot</code> компонент</strong> (якщо ще немає):
|
||||
<code>typescript
|
||||
<PresenceDot state="online|offline|away" /></code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><strong>Інтегрувати у сторінки:</strong></p>
|
||||
</li>
|
||||
<li><code>/agents</code> — біля кожного агента</li>
|
||||
<li><code>/agents/:id</code> — під аватаркою</li>
|
||||
<li><code>/nodes/:nodeId</code> — для Guardian/Steward</li>
|
||||
<li><code>/microdao/:slug</code> — для Orchestrator</li>
|
||||
</ol>
|
||||
<h2 id="5">5. Наступні кроки<a class="headerlink" href="#5" title="Permanent link">¶</a></h2>
|
||||
<h3 id="51-frontend-todo">5.1. Frontend інтеграція (TODO)<a class="headerlink" href="#51-frontend-todo" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li>[ ] Оновити <code>AgentPresenceBadge</code> для нового API</li>
|
||||
<li>[ ] Додати auto-refresh кожні 30 секунд</li>
|
||||
<li>[ ] Інтегрувати у Chat Widget</li>
|
||||
</ul>
|
||||
<h3 id="52-agent-matrix-users-todo">5.2. Agent Matrix Users (TODO)<a class="headerlink" href="#52-agent-matrix-users-todo" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li>[ ] Створити Matrix users для агентів</li>
|
||||
<li>[ ] Налаштувати агентів для відправки heartbeat</li>
|
||||
</ul>
|
||||
<h2 id="6">6. Архітектура<a class="headerlink" href="#6" title="Permanent link">¶</a></h2>
|
||||
<div class="codehilite"><pre><span></span><code>Frontend → City Service → Matrix Gateway → Synapse
|
||||
↓
|
||||
Agent DB
|
||||
</code></pre></div>
|
||||
|
||||
<p><strong>Flow:</strong>
|
||||
1. Frontend запитує <code>/api/v1/agents/{id}/presence</code>
|
||||
2. City Service знаходить агента в БД
|
||||
3. City Service генерує Matrix user ID
|
||||
4. City Service запитує Gateway
|
||||
5. Gateway запитує Synapse
|
||||
6. Результат повертається назад</p>
|
||||
<h2 id="7">7. Команди для перевірки<a class="headerlink" href="#7" title="Permanent link">¶</a></h2>
|
||||
<div class="codehilite"><pre><span></span><code><span class="c1"># Matrix Gateway presence</span>
|
||||
curl<span class="w"> </span>-s<span class="w"> </span><span class="s1">'http://localhost:7025/internal/matrix/presence/@daarion_admin:daarion.space'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span><span class="s1">'.'</span>
|
||||
|
||||
<span class="c1"># Agent presence</span>
|
||||
curl<span class="w"> </span>-s<span class="w"> </span><span class="s1">'http://localhost:7001/api/v1/agents/daarwizz/presence'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span><span class="s1">'.'</span>
|
||||
|
||||
<span class="c1"># Bulk presence</span>
|
||||
curl<span class="w"> </span>-s<span class="w"> </span><span class="s1">'http://localhost:7025/internal/matrix/presence/bulk?user_ids=@daarion_admin:daarion.space'</span><span class="w"> </span><span class="p">|</span><span class="w"> </span>jq<span class="w"> </span><span class="s1">'.'</span>
|
||||
</code></pre></div>
|
||||
|
||||
<hr />
|
||||
<p><strong>Автор:</strong> Cursor AI
|
||||
<strong>Таск:</strong> <code>TASK_PHASE_PRESENCE_LAYER_v1.md</code></p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="md-footer">
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-copyright">
|
||||
|
||||
|
||||
Made with
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||
Material for MkDocs
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
<div class="md-dialog" data-md-component="dialog">
|
||||
<div class="md-dialog__inner md-typeset"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
874
site/debug/rooms_layer_restore_report_20251130/index.html
Normal file
874
site/debug/rooms_layer_restore_report_20251130/index.html
Normal file
@@ -0,0 +1,874 @@
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en" class="no-js">
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
|
||||
|
||||
<link rel="canonical" href="https://IvanTytar.github.io/microdao-daarion/debug/rooms_layer_restore_report_20251130/">
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="icon" href="../../assets/images/favicon.png">
|
||||
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
|
||||
|
||||
|
||||
|
||||
<title>Rooms Layer Restore — Звіт про виконання - DAARION Documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||||
|
||||
|
||||
|
||||
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body dir="ltr">
|
||||
|
||||
|
||||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||||
<label class="md-overlay" for="__drawer"></label>
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#rooms-layer-restore" class="md-skip">
|
||||
Skip to content
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div data-md-component="announce">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<header class="md-header md-header--shadow" data-md-component="header">
|
||||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||||
<a href="../.." title="DAARION Documentation" class="md-header__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
<label class="md-header__button md-icon" for="__drawer">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
|
||||
</label>
|
||||
<div class="md-header__title" data-md-component="header-title">
|
||||
<div class="md-header__ellipsis">
|
||||
<div class="md-header__topic">
|
||||
<span class="md-ellipsis">
|
||||
DAARION Documentation
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Rooms Layer Restore — Звіт про виконання
|
||||
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||||
|
||||
|
||||
|
||||
<label class="md-header__button md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
</label>
|
||||
<div class="md-search" data-md-component="search" role="dialog">
|
||||
<label class="md-search__overlay" for="__search"></label>
|
||||
<div class="md-search__inner" role="search">
|
||||
<form class="md-search__form" name="search">
|
||||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||||
<label class="md-search__icon md-icon" for="__search">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</label>
|
||||
<nav class="md-search__options" aria-label="Search">
|
||||
|
||||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
|
||||
</button>
|
||||
</nav>
|
||||
|
||||
</form>
|
||||
<div class="md-search__output">
|
||||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||||
<div class="md-search-result" data-md-component="search-result">
|
||||
<div class="md-search-result__meta">
|
||||
Initializing search
|
||||
</div>
|
||||
<ol class="md-search-result__list" role="presentation"></ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<div class="md-container" data-md-component="container">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<main class="md-main" data-md-component="main">
|
||||
<div class="md-main__inner md-grid">
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||||
<label class="md-nav__title" for="__drawer">
|
||||
<a href="../.." title="DAARION Documentation" class="md-nav__button md-logo" aria-label="DAARION Documentation" data-md-component="logo">
|
||||
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
|
||||
|
||||
</a>
|
||||
DAARION Documentation
|
||||
</label>
|
||||
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Home
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/getting-started/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Getting Started
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/architecture-overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Architecture
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../public/daiS_daos_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
DAIS & DAOS
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Internal
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Internal
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_1" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_1" id="__nav_5_1_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_1_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_1">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Infra
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/INFRA_AUTOMATION_PACK_V1/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Infra Automation Pack v1
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/monitoring_overview/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Monitoring Overview
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/infra/nodes_registry_v0/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Nodes Registry v0
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" >
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Specs
|
||||
</span>
|
||||
|
||||
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5_2">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Specs
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/matrix_presence_aggregator/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Matrix Presence Aggregator
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/city_map_spec/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
City Map Spec
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../internal/specs/node_join_protocol_draft/" class="md-nav__link">
|
||||
|
||||
|
||||
<span class="md-ellipsis">
|
||||
Node Join Protocol (Draft)
|
||||
</span>
|
||||
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||||
<div class="md-sidebar__scrollwrap">
|
||||
<div class="md-sidebar__inner">
|
||||
|
||||
|
||||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__title" for="__toc">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
Table of contents
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
1. Мета
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#2" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2. Виконані роботи
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="2. Виконані роботи">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#21-city-rooms" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.1. City Rooms ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#22-microdao-rooms" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.2. MicroDAO Rooms ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#23-node-support-rooms" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.3. Node Support Rooms ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#24-citizens-layer" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
2.4. Citizens Layer ✅
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#3-daarionspace" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
3. Перевірка на DAARION.space
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#4" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4. Що залишилось
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="4. Що залишилось">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#41-matrix-integration-todo" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4.1. Matrix Integration (TODO)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#42-agentnode-chat-rooms-auto-create-todo" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4.2. Agent/Node Chat Rooms Auto-Create (TODO)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#43-city-rooms-list-api-todo" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
4.3. City Rooms List API (TODO)
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#5-sql-queries" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
5. SQL Queries для перевірки
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#6" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
6. Наступні кроки
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-content" data-md-component="content">
|
||||
<article class="md-content__inner md-typeset">
|
||||
|
||||
|
||||
|
||||
|
||||
<h1 id="rooms-layer-restore">Rooms Layer Restore — Звіт про виконання<a class="headerlink" href="#rooms-layer-restore" title="Permanent link">¶</a></h1>
|
||||
<p><strong>Дата:</strong> 2025-11-30
|
||||
<strong>Статус:</strong> ЧАСТКОВО ВИКОНАНО</p>
|
||||
<h2 id="1">1. Мета<a class="headerlink" href="#1" title="Permanent link">¶</a></h2>
|
||||
<p>Відновити Rooms Layer у MVP згідно з <code>TASK_PHASE_ROOMS_LAYER_RESTORE_AND_MATRIX_INTEGRATION.md</code>.</p>
|
||||
<h2 id="2">2. Виконані роботи<a class="headerlink" href="#2" title="Permanent link">¶</a></h2>
|
||||
<h3 id="21-city-rooms">2.1. City Rooms ✅<a class="headerlink" href="#21-city-rooms" title="Permanent link">¶</a></h3>
|
||||
<p><strong>Seed 8 City Rooms:</strong>
|
||||
- <code>general</code> - Main city chat room
|
||||
- <code>welcome</code> - Welcome new citizens
|
||||
- <code>leadership-hall</code> - City governance discussions
|
||||
- <code>builders</code> - Builders community
|
||||
- <code>science-lab</code> - Research and AI discussions
|
||||
- <code>security-bureau</code> - Security discussions
|
||||
- <code>economics-square</code> - Economics and tokenomics
|
||||
- <code>announcements</code> - Official announcements</p>
|
||||
<p><strong>Результат:</strong> Кімнати відображаються на <code>/city</code> (Мапа view).</p>
|
||||
<h3 id="22-microdao-rooms">2.2. MicroDAO Rooms ✅<a class="headerlink" href="#22-microdao-rooms" title="Permanent link">¶</a></h3>
|
||||
<p><strong>Seed 5 MicroDAO Rooms для DAARION:</strong>
|
||||
- <code>daarion-lobby</code> - Main lobby (primary)
|
||||
- <code>daarion-governance</code> - Governance and voting
|
||||
- <code>daarion-news</code> - News and updates
|
||||
- <code>daarion-builders</code> - Development discussions
|
||||
- <code>daarion-help</code> - Help and support</p>
|
||||
<p><strong>Результат:</strong> Кімнати відображаються на <code>/microdao/daarion</code>.</p>
|
||||
<h3 id="23-node-support-rooms">2.3. Node Support Rooms ✅<a class="headerlink" href="#23-node-support-rooms" title="Permanent link">¶</a></h3>
|
||||
<p><strong>Seed 2 Node Support Rooms:</strong>
|
||||
- <code>node-support-node1</code> - NODE1 Support
|
||||
- <code>node-support-node2</code> - NODE2 Support</p>
|
||||
<p><strong>Результат:</strong> Кімнати створені в БД, відображаються на City Map.</p>
|
||||
<h3 id="24-citizens-layer">2.4. Citizens Layer ✅<a class="headerlink" href="#24-citizens-layer" title="Permanent link">¶</a></h3>
|
||||
<p><strong>Оновлено фільтр публічних агентів:</strong>
|
||||
- Прибрано строгі вимоги (<code>node_id IS NOT NULL</code>, <code>EXISTS microdao_agents</code>)
|
||||
- Додано фільтр по <code>gov_level</code> та <code>kind</code>
|
||||
- Оновлено <code>public_slug</code> для всіх публічних агентів</p>
|
||||
<p><strong>Результат:</strong> <code>/citizens</code> показує 14 громадян.</p>
|
||||
<h2 id="3-daarionspace">3. Перевірка на DAARION.space<a class="headerlink" href="#3-daarionspace" title="Permanent link">¶</a></h2>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Сторінка</th>
|
||||
<th>Статус</th>
|
||||
<th>Примітки</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>/city</code> (Мапа)</td>
|
||||
<td>✅ Працює</td>
|
||||
<td>Всі кімнати відображаються</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/city</code> (Список)</td>
|
||||
<td>⚠️ Частково</td>
|
||||
<td>Потребує перевірки API</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/citizens</code></td>
|
||||
<td>✅ Працює</td>
|
||||
<td>14 громадян</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/microdao/daarion</code></td>
|
||||
<td>✅ Працює</td>
|
||||
<td>5 кімнат</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/agents/:id</code></td>
|
||||
<td>✅ Працює</td>
|
||||
<td>Chat widget є</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>/nodes/:id</code></td>
|
||||
<td>✅ Працює</td>
|
||||
<td>Chat widget є</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="4">4. Що залишилось<a class="headerlink" href="#4" title="Permanent link">¶</a></h2>
|
||||
<h3 id="41-matrix-integration-todo">4.1. Matrix Integration (TODO)<a class="headerlink" href="#41-matrix-integration-todo" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li>Кімнати створені в БД, але <code>matrix_room_id</code> = NULL</li>
|
||||
<li>Потрібно створити Matrix rooms через gateway</li>
|
||||
<li>Потрібно записати <code>matrix_room_id</code> в БД</li>
|
||||
</ul>
|
||||
<h3 id="42-agentnode-chat-rooms-auto-create-todo">4.2. Agent/Node Chat Rooms Auto-Create (TODO)<a class="headerlink" href="#42-agentnode-chat-rooms-auto-create-todo" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li>API <code>/chat-room</code> повертає дані</li>
|
||||
<li>Але <code>chat_available = false</code> бо немає Matrix rooms</li>
|
||||
</ul>
|
||||
<h3 id="43-city-rooms-list-api-todo">4.3. City Rooms List API (TODO)<a class="headerlink" href="#43-city-rooms-list-api-todo" title="Permanent link">¶</a></h3>
|
||||
<ul>
|
||||
<li><code>/city/rooms</code> повертає дані</li>
|
||||
<li>Але UI "Список" може не використовувати правильний endpoint</li>
|
||||
</ul>
|
||||
<h2 id="5-sql-queries">5. SQL Queries для перевірки<a class="headerlink" href="#5-sql-queries" title="Permanent link">¶</a></h2>
|
||||
<div class="codehilite"><pre><span></span><code><span class="c1">-- City Rooms</span>
|
||||
<span class="k">SELECT</span><span class="w"> </span><span class="n">slug</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">owner_type</span><span class="p">,</span><span class="w"> </span><span class="n">space_scope</span><span class="p">,</span><span class="w"> </span><span class="n">is_public</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">city_rooms</span><span class="w"> </span>
|
||||
<span class="k">WHERE</span><span class="w"> </span><span class="n">space_scope</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'city'</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">sort_order</span><span class="p">;</span>
|
||||
|
||||
<span class="c1">-- MicroDAO Rooms</span>
|
||||
<span class="k">SELECT</span><span class="w"> </span><span class="n">slug</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">owner_type</span><span class="p">,</span><span class="w"> </span><span class="n">owner_id</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">city_rooms</span><span class="w"> </span>
|
||||
<span class="k">WHERE</span><span class="w"> </span><span class="n">owner_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'microdao'</span><span class="p">;</span>
|
||||
|
||||
<span class="c1">-- Node Rooms</span>
|
||||
<span class="k">SELECT</span><span class="w"> </span><span class="n">slug</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="n">owner_type</span><span class="p">,</span><span class="w"> </span><span class="n">owner_id</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">city_rooms</span><span class="w"> </span>
|
||||
<span class="k">WHERE</span><span class="w"> </span><span class="n">owner_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'node'</span><span class="p">;</span>
|
||||
|
||||
<span class="c1">-- Public Agents (Citizens)</span>
|
||||
<span class="k">SELECT</span><span class="w"> </span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">display_name</span><span class="p">,</span><span class="w"> </span><span class="n">is_public</span><span class="p">,</span><span class="w"> </span><span class="n">gov_level</span><span class="p">,</span><span class="w"> </span><span class="n">public_slug</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">agents</span><span class="w"> </span>
|
||||
<span class="k">WHERE</span><span class="w"> </span><span class="n">is_public</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">true</span><span class="w"> </span><span class="k">LIMIT</span><span class="w"> </span><span class="mi">20</span><span class="p">;</span>
|
||||
</code></pre></div>
|
||||
|
||||
<h2 id="6">6. Наступні кроки<a class="headerlink" href="#6" title="Permanent link">¶</a></h2>
|
||||
<ol>
|
||||
<li><strong>Matrix Room Creation</strong> — створити Matrix кімнати для всіх city_rooms</li>
|
||||
<li><strong>Gateway Integration</strong> — підключити agents до кімнат</li>
|
||||
<li><strong>Chat Widget Fix</strong> — забезпечити <code>chat_available = true</code></li>
|
||||
<li><strong>City List View</strong> — перевірити та виправити UI</li>
|
||||
</ol>
|
||||
<hr />
|
||||
<p><strong>Автор:</strong> Cursor AI
|
||||
<strong>Таск:</strong> <code>TASK_PHASE_ROOMS_LAYER_RESTORE_AND_MATRIX_INTEGRATION.md</code></p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
||||
</div>
|
||||
|
||||
|
||||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||||
</div>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="md-footer">
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
<div class="md-copyright">
|
||||
|
||||
|
||||
Made with
|
||||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||||
Material for MkDocs
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
<div class="md-dialog" data-md-component="dialog">
|
||||
<div class="md-dialog__inner md-typeset"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.instant", "content.code.copy"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||||
|
||||
|
||||
<script src="../../assets/javascripts/bundle.3220b9d7.min.js"></script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user