Files
microdao-daarion/site/foundation/GREENFOOD_District_Protocol_v1/index.html
Apple ef3473db21 snapshot: NODE1 production state 2026-02-09
Complete snapshot of /opt/microdao-daarion/ from NODE1 (144.76.224.179).
This represents the actual running production code that has diverged
significantly from the previous main branch.

Key changes from old main:
- Gateway (http_api.py): expanded from ~40KB to 164KB with full agent support
- Router: new /v1/agents/{id}/infer endpoint with vision + DeepSeek routing
- Behavior Policy: SOWA v2.2 (3-level: FULL/ACK/SILENT)
- Agent Registry: config/agent_registry.yml as single source of truth
- 13 agents configured (was 3)
- Memory service integration
- CrewAI teams and roles

Excluded from snapshot: venv/, .env, data/, backups, .tgz archives

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 08:46:46 -08:00

1283 lines
37 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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/foundation/GREENFOOD_District_Protocol_v1/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.18">
<title>GREENFOOD District Protocol v1 - 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="#greenfood-district-protocol-v1" 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">
GREENFOOD District Protocol v1
</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="#daarioncity-industryops-supply-chain-district" class="md-nav__link">
<span class="md-ellipsis">
DAARION.city — IndustryOps / Supply-Chain District
</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="greenfood-district-protocol-v1">GREENFOOD District Protocol v1<a class="headerlink" href="#greenfood-district-protocol-v1" title="Permanent link">&para;</a></h1>
<h2 id="daarioncity-industryops-supply-chain-district">DAARION.city — IndustryOps / Supply-Chain District<a class="headerlink" href="#daarioncity-industryops-supply-chain-district" title="Permanent link">&para;</a></h2>
<p><strong>Version:</strong> 1.0<br />
<strong>Status:</strong> MVP Architecture<br />
<strong>Scope:</strong> Повна специфікація платформенного District GREENFOOD у межах DAARION Ontology</p>
<hr />
<h1 id="1">1. Вступ<a class="headerlink" href="#1" title="Permanent link">&para;</a></h1>
<p>GREENFOOD — це галузевий District типу <strong>IndustryOps</strong>, який об'єднує:</p>
<ul>
<li>крафтових виробників,</li>
<li>постачальників,</li>
<li>склади,</li>
<li>логістичні мережі,</li>
<li>торгові хаби,</li>
<li>оптові та роздрібні канали,</li>
<li>AI-агентів ERP та аналітики.</li>
</ul>
<p>Цей документ визначає архітектуру, правила, протоколи та інтеграції GREENFOOD District у DAARION.city.</p>
<hr />
<h1 id="2-greenfood-daarion-ontology">2. Роль GREENFOOD у DAARION Ontology<a class="headerlink" href="#2-greenfood-daarion-ontology" title="Permanent link">&para;</a></h1>
<p>GREENFOOD є <strong>District-платформою</strong>:</p>
<ul>
<li>рівень: <code>district</code></li>
<li>parent: <code>root-city (DAARION)</code></li>
<li>orchestrator agent: <strong>GREENFOOD ERP Agent</strong></li>
<li>governance scope: <code>district:greenfood</code></li>
</ul>
<p>GREENFOOD взаємодіє з:</p>
<ul>
<li>City Layer (портал, публічні кімнати),</li>
<li>DAIS Identity Layer,</li>
<li>Rooms Layer,</li>
<li>MicroDAO Layer (комітенти = виробники),</li>
<li>Warehouse &amp; Logistics Layer,</li>
<li>AI Agents Layer.</li>
</ul>
<p>Немає заздалегідь створених нод — <strong>всі ноди реєструються вручну та динамічно</strong>, коли виробник або інфраструктурний партнер приєднує свій сервер/пристрій.</p>
<hr />
<h1 id="3-greenfood-district">3. Архітектура GREENFOOD District<a class="headerlink" href="#3-greenfood-district" title="Permanent link">&para;</a></h1>
<p>GREENFOOD District складається з 6 модулів:</p>
<ol>
<li><strong>Product Module</strong> </li>
<li><strong>Batch &amp; Inventory Module</strong> </li>
<li><strong>Warehouse Module</strong> </li>
<li><strong>Logistics Module</strong></li>
<li><strong>Finance Module</strong></li>
<li>
<p><strong>Retail Hub Module</strong></p>
</li>
<li>
<p><strong>AI Automation Layer</strong> (ERP Agent, QA Agent, Logistics Planner, Analytics Agent)</p>
</li>
</ol>
<hr />
<h1 id="4">4. Ключові агенти і ролі<a class="headerlink" href="#4" title="Permanent link">&para;</a></h1>
<table>
<thead>
<tr>
<th>Агент</th>
<th>Роль</th>
<th>Рівень</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>GREENFOOD ERP Agent</strong></td>
<td>District Lead</td>
<td>AGENT_LEVEL_DISTRICT_LEAD</td>
</tr>
<tr>
<td>Producer Agent</td>
<td>Комітент (виробник)</td>
<td>AGENT_LEVEL_MEMBER / WORKER</td>
</tr>
<tr>
<td>Warehouse Manager Agent</td>
<td>Оператор складу</td>
<td>WORKER / CORE-TEAM</td>
</tr>
<tr>
<td>Logistics Agent</td>
<td>Планування марштрутів</td>
<td>WORKER</td>
</tr>
<tr>
<td>Retail Hub Agent</td>
<td>Управління роздрібом</td>
<td>WORKER</td>
</tr>
<tr>
<td>QA Agent</td>
<td>Сертифікація / контроль</td>
<td>CORE-TEAM</td>
</tr>
<tr>
<td>Compliance Agent</td>
<td>Документи, якості</td>
<td>CORE-TEAM</td>
</tr>
<tr>
<td>Analytics Agent</td>
<td>ML-прогнози</td>
<td>CORE-TEAM</td>
</tr>
</tbody>
</table>
<p>Всі агенти отримують DAIS-ідентичність.<br />
Жоден агент не прив'язаний до конкретної ноди за замовчуванням.</p>
<hr />
<h1 id="5-supply-chain-modules">5. Supply-Chain Modules<a class="headerlink" href="#5-supply-chain-modules" title="Permanent link">&para;</a></h1>
<h2 id="51-product-protocol">5.1 Product Protocol<a class="headerlink" href="#51-product-protocol" title="Permanent link">&para;</a></h2>
<p>Джерела:<br />
- Документація CRM<br />
- ТЗ ERP<br />
- Промт Комітента<br />
- Аналіз функцій ERP агента </p>
<h3 id="_1">Структура картки товару (з документів)<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3>
<ul>
<li>Назва </li>
<li>SKU (8-значний код) </li>
<li>Виробник </li>
<li>Одиниці виміру </li>
<li>Категорія </li>
<li>Група </li>
<li>Фото / медіа </li>
<li>Складські умови </li>
<li>Термін придатності </li>
<li>Примітки </li>
<li>Ціна закупівлі / виробнича собівартість </li>
</ul>
<p>AI ERP Agent зобов'язаний:</p>
<ul>
<li>перевіряти повноту полів,</li>
<li>уніфікувати назви,</li>
<li>пропонувати категорії,</li>
<li>генерувати SKU.</li>
</ul>
<hr />
<h2 id="52-batch-protocol">5.2 Batch Protocol (партії)<a class="headerlink" href="#52-batch-protocol" title="Permanent link">&para;</a></h2>
<p>Партія — ключова сутність.</p>
<h3 id="erp">Статуси (узгоджено з ТЗ ERP):<a class="headerlink" href="#erp" title="Permanent link">&para;</a></h3>
<ol>
<li><code>new</code> </li>
<li><code>awaiting_pickup</code> </li>
<li><code>in_transit</code> </li>
<li><code>received</code> </li>
<li><code>rejected</code> </li>
<li><code>returned</code> </li>
<li><code>archived</code></li>
</ol>
<p>ERP Agent контролює:</p>
<ul>
<li>генерування партій,</li>
<li>оновлення статусів,</li>
<li>логіку списання,</li>
<li>терміни придатності,</li>
<li>відповідність товару картці.</li>
</ul>
<hr />
<h2 id="53-warehouse-protocol">5.3 Warehouse Protocol<a class="headerlink" href="#53-warehouse-protocol" title="Permanent link">&para;</a></h2>
<p>GREENFOOD має три типи складів:</p>
<ul>
<li><strong>Shared Warehouse</strong> (спільний склад District)</li>
<li><strong>Private Warehouse</strong> (комітент)</li>
<li><strong>Transit Point</strong> (логістичні хаби)</li>
</ul>
<p>AI Warehouse Agent:</p>
<ul>
<li>веде облік залишків,</li>
<li>синхронізує партії,</li>
<li>попереджає про критичні залишки,</li>
<li>перевіряє терміни придатності,</li>
<li>контролює "віртуальні склади" в системі.</li>
</ul>
<hr />
<h2 id="54-logistics-protocol">5.4 Logistics Protocol<a class="headerlink" href="#54-logistics-protocol" title="Permanent link">&para;</a></h2>
<p>Компоненти:</p>
<ul>
<li>планування маршрутів,</li>
<li>створення накладних,</li>
<li>завантаження водіїв,</li>
<li>трекінг статусів,</li>
<li>формування партій "до відправлення".</li>
</ul>
<p>AI Logistics Agent:</p>
<ul>
<li>аналізує кількість поставок,</li>
<li>підказує оптимальні маршрути,</li>
<li>формує групові відправки,</li>
<li>знаходить найкращий час доставки.</li>
</ul>
<hr />
<h2 id="55-retail-hub-protocol">5.5 Retail Hub Protocol<a class="headerlink" href="#55-retail-hub-protocol" title="Permanent link">&para;</a></h2>
<p>Retail Hub = "роздрібний торговий центр".</p>
<p>Включає:</p>
<ul>
<li>модуль акцій/знижок,</li>
<li>роздрібні ціни,</li>
<li>автоматичні перерахунки,</li>
<li>рекомендації ML.</li>
</ul>
<p>Retail Agent:</p>
<ul>
<li>генерує пропозиції,</li>
<li>відстежує залишки,</li>
<li>оновлює роздрібні ціни залежно від оптової закупівлі + витрат.</li>
</ul>
<hr />
<h2 id="56-finance-protocol">5.6 Finance Protocol<a class="headerlink" href="#56-finance-protocol" title="Permanent link">&para;</a></h2>
<p>Компоненти:</p>
<ul>
<li>Баланси комітентів </li>
<li>Операції: списання, зарахування </li>
<li>Резерви </li>
<li>Акцептовані накладні </li>
<li>Мультивалютність (грн, USDT, DAAR) </li>
<li>Рахунки оплат </li>
<li>Централізовані звіти </li>
</ul>
<p>AI Finance Agent:</p>
<ul>
<li>веде баланси,</li>
<li>аналізує транзакції,</li>
<li>робить прогноз касових потоків,</li>
<li>пропонує оптимальні фінансові рішення.</li>
</ul>
<hr />
<h2 id="57-compliance-protocol">5.7 Compliance Protocol (сертифікація)<a class="headerlink" href="#57-compliance-protocol" title="Permanent link">&para;</a></h2>
<p>Обов'язкові сутності:</p>
<ul>
<li>сертифікати,</li>
<li>результати перевірок,</li>
<li>пакети документів,</li>
<li>контроль термінів дії.</li>
</ul>
<p>AI Compliance Agent:</p>
<ul>
<li>нагадує про оновлення,</li>
<li>валідує документи,</li>
<li>веде історію.</li>
</ul>
<hr />
<h1 id="6-ai-layer">6. AI Layer<a class="headerlink" href="#6-ai-layer" title="Permanent link">&para;</a></h1>
<p>AI Layer — серце GREENFOOD District.</p>
<h2 id="61-erp-agent">6.1 ERP Agent<a class="headerlink" href="#61-erp-agent" title="Permanent link">&para;</a></h2>
<p>Повна логіка описана в: "Системний промт ERP агенту".</p>
<p>ERP Agent робить:</p>
<ul>
<li>валідацію карток товарів, </li>
<li>підказки щодо категорій,</li>
<li>аналіз партій,</li>
<li>контроль складів,</li>
<li>оптимізацію логістики,</li>
<li>ризик-моніторинг партій,</li>
<li>аналіз роздрібу,</li>
<li>фінансові підказки.</li>
</ul>
<h2 id="62-analytical-agent">6.2 Analytical Agent<a class="headerlink" href="#62-analytical-agent" title="Permanent link">&para;</a></h2>
<p>Аналітика:</p>
<ul>
<li>сезонність продажів,</li>
<li>ML-прогнози,</li>
<li>ризики порчі,</li>
<li>моделі попиту.</li>
</ul>
<h2 id="63-logistics-planner">6.3 Logistics Planner<a class="headerlink" href="#63-logistics-planner" title="Permanent link">&para;</a></h2>
<p>AI, що планує маршрути.</p>
<h2 id="64-qa-agent">6.4 QA Agent<a class="headerlink" href="#64-qa-agent" title="Permanent link">&para;</a></h2>
<p>Контроль якості продуктів.</p>
<hr />
<h1 id="7-city-integration">7. City Integration<a class="headerlink" href="#7-city-integration" title="Permanent link">&para;</a></h1>
<h2 id="71-greenfood-portal-city-square">7.1 Greenfood Portal у City Square<a class="headerlink" href="#71-greenfood-portal-city-square" title="Permanent link">&para;</a></h2>
<ul>
<li>публічна кімната District </li>
<li>доступ до презентації District </li>
<li>коротка витримка цін, складів, новин</li>
</ul>
<h2 id="72-greenfood-rooms">7.2 Greenfood Rooms<a class="headerlink" href="#72-greenfood-rooms" title="Permanent link">&para;</a></h2>
<ul>
<li><code>greenfood-lobby</code> </li>
<li><code>greenfood-news</code> </li>
<li><code>greenfood-help</code> </li>
<li><code>greenfood-retail</code> </li>
<li><code>greenfood-warehouses</code> </li>
<li><code>greenfood-logistics</code> </li>
<li>приватні кімнати комітентів</li>
</ul>
<h2 id="73-greenfood-district-map">7.3 Greenfood District Map<a class="headerlink" href="#73-greenfood-district-map" title="Permanent link">&para;</a></h2>
<p><strong>Без нод.</strong><br />
Тільки логічна карта:</p>
<ul>
<li>склади (віртуальні і реальні) </li>
<li>офіси </li>
<li>торговий хаб </li>
<li>логістичні точки </li>
</ul>
<p>Мапа набуває реальних точок, коли MicroDAO-комітенти додають свої об'єкти.</p>
<hr />
<h1 id="8-node-integration">8. Node Integration<a class="headerlink" href="#8-node-integration" title="Permanent link">&para;</a></h1>
<blockquote>
<p>⚠️ Універсальна модель, без конкретних нод</p>
</blockquote>
<p>GREENFOOD District підтримує <strong>динамічне підключення нод</strong>:</p>
<ul>
<li>ERP нода </li>
<li>аналітична нода </li>
<li>складські IoT ноди </li>
<li>логістичні трекери </li>
</ul>
<p><strong>Правило:</strong></p>
<blockquote>
<p><strong>Нода зʼявляється тільки після фактичного підключення користувачем / партнером.<br />
Жодної статично вигаданої ноди.</strong></p>
</blockquote>
<p>Node Protocol:</p>
<ul>
<li><code>/nodes/register</code> </li>
<li>DAIS binding </li>
<li>scope: <code>district:greenfood</code> </li>
<li>capabilities (warehouse, erp, analytics, logistics)</li>
</ul>
<hr />
<h1 id="9-security-dais">9. Security &amp; DAIS<a class="headerlink" href="#9-security-dais" title="Permanent link">&para;</a></h1>
<p>GREENFOOD повністю покладається на:</p>
<ul>
<li>DAIS identity </li>
<li>DAIS wallet </li>
<li>DAIS keys </li>
<li>Agent Governance Protocol </li>
<li>District-level permissions </li>
</ul>
<p>Права комітента = права його агенту.<br />
Права складу = права warehouse-агента.<br />
Права логістики = права logistic-agent.</p>
<hr />
<h1 id="10-governance">10. Governance<a class="headerlink" href="#10-governance" title="Permanent link">&para;</a></h1>
<h3 id="district-lead">District Lead<a class="headerlink" href="#district-lead" title="Permanent link">&para;</a></h3>
<p>— GREENFOOD ERP Agent<br />
Рівень доступу: <code>AGENT_LEVEL_DISTRICT_LEAD</code>.</p>
<p>Повноваження:</p>
<ul>
<li>управління District Rooms </li>
<li>управління суб-DAO виробників </li>
<li>створення warehouse agents </li>
<li>підтвердження фінансових операцій </li>
<li>створення аналітичних/логістичних агентів </li>
</ul>
<h3 id="microdao">MicroDAO (Комітенти)<a class="headerlink" href="#microdao" title="Permanent link">&para;</a></h3>
<p>Кожний виробник → microDAO типу "vendor".</p>
<h3 id="core-team">Core-team<a class="headerlink" href="#core-team" title="Permanent link">&para;</a></h3>
<p>Сюди входять:</p>
<ul>
<li>warehouse manager agents </li>
<li>logistics agents </li>
<li>finance agents </li>
<li>QA agents </li>
<li>analytics agents </li>
</ul>
<hr />
<h1 id="11-appendix-data-structures">11. Appendix: Data Structures<a class="headerlink" href="#11-appendix-data-structures" title="Permanent link">&para;</a></h1>
<h2 id="productcard">ProductCard<a class="headerlink" href="#productcard" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Поле</th>
<th>Тип</th>
<th>Опис</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>UUID</td>
<td>Унікальний ідентифікатор</td>
</tr>
<tr>
<td>sku</td>
<td>VARCHAR(8)</td>
<td>8-значний SKU код</td>
</tr>
<tr>
<td>name</td>
<td>TEXT</td>
<td>Назва товару</td>
</tr>
<tr>
<td>producer_id</td>
<td>UUID</td>
<td>FK → microdaos (комітент)</td>
</tr>
<tr>
<td>category</td>
<td>TEXT</td>
<td>Категорія товару</td>
</tr>
<tr>
<td>group</td>
<td>TEXT</td>
<td>Група товару</td>
</tr>
<tr>
<td>unit</td>
<td>TEXT</td>
<td>Одиниці виміру</td>
</tr>
<tr>
<td>storage_conditions</td>
<td>TEXT</td>
<td>Умови зберігання</td>
</tr>
<tr>
<td>shelf_life_days</td>
<td>INTEGER</td>
<td>Термін придатності (дні)</td>
</tr>
<tr>
<td>base_price</td>
<td>DECIMAL</td>
<td>Базова ціна</td>
</tr>
<tr>
<td>media_urls</td>
<td>JSONB</td>
<td>Масив URL медіа</td>
</tr>
<tr>
<td>metadata</td>
<td>JSONB</td>
<td>Додаткові поля</td>
</tr>
</tbody>
</table>
<h2 id="batch">Batch<a class="headerlink" href="#batch" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Поле</th>
<th>Тип</th>
<th>Опис</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>UUID</td>
<td>Унікальний ідентифікатор</td>
</tr>
<tr>
<td>product_id</td>
<td>UUID</td>
<td>FK → products</td>
</tr>
<tr>
<td>quantity</td>
<td>DECIMAL</td>
<td>Кількість</td>
</tr>
<tr>
<td>status</td>
<td>ENUM</td>
<td>new, awaiting_pickup, in_transit, received, rejected, returned, archived</td>
</tr>
<tr>
<td>production_date</td>
<td>DATE</td>
<td>Дата виробництва</td>
</tr>
<tr>
<td>expiry_date</td>
<td>DATE</td>
<td>Дата закінчення терміну</td>
</tr>
<tr>
<td>warehouse_id</td>
<td>UUID</td>
<td>FK → warehouses</td>
</tr>
<tr>
<td>metadata</td>
<td>JSONB</td>
<td>Додаткові поля</td>
</tr>
</tbody>
</table>
<h2 id="warehouse">Warehouse<a class="headerlink" href="#warehouse" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Поле</th>
<th>Тип</th>
<th>Опис</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>UUID</td>
<td>Унікальний ідентифікатор</td>
</tr>
<tr>
<td>name</td>
<td>TEXT</td>
<td>Назва складу</td>
</tr>
<tr>
<td>type</td>
<td>ENUM</td>
<td>shared, private, transit</td>
</tr>
<tr>
<td>owner_microdao_id</td>
<td>UUID</td>
<td>FK → microdaos</td>
</tr>
<tr>
<td>location</td>
<td>JSONB</td>
<td>Координати, адреса</td>
</tr>
<tr>
<td>capacity</td>
<td>DECIMAL</td>
<td>Ємність</td>
</tr>
<tr>
<td>metadata</td>
<td>JSONB</td>
<td>Додаткові поля</td>
</tr>
</tbody>
</table>
<h2 id="financeaccount">FinanceAccount<a class="headerlink" href="#financeaccount" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Поле</th>
<th>Тип</th>
<th>Опис</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>UUID</td>
<td>Унікальний ідентифікатор</td>
</tr>
<tr>
<td>microdao_id</td>
<td>UUID</td>
<td>FK → microdaos</td>
</tr>
<tr>
<td>currency</td>
<td>ENUM</td>
<td>UAH, USDT, DAAR</td>
</tr>
<tr>
<td>balance</td>
<td>DECIMAL</td>
<td>Поточний баланс</td>
</tr>
<tr>
<td>reserved</td>
<td>DECIMAL</td>
<td>Зарезервовано</td>
</tr>
<tr>
<td>updated_at</td>
<td>TIMESTAMP</td>
<td>Час останнього оновлення</td>
</tr>
</tbody>
</table>
<h2 id="certificate">Certificate<a class="headerlink" href="#certificate" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Поле</th>
<th>Тип</th>
<th>Опис</th>
</tr>
</thead>
<tbody>
<tr>
<td>id</td>
<td>UUID</td>
<td>Унікальний ідентифікатор</td>
</tr>
<tr>
<td>product_id</td>
<td>UUID</td>
<td>FK → products</td>
</tr>
<tr>
<td>type</td>
<td>TEXT</td>
<td>Тип сертифікату</td>
</tr>
<tr>
<td>issued_at</td>
<td>DATE</td>
<td>Дата видачі</td>
</tr>
<tr>
<td>expires_at</td>
<td>DATE</td>
<td>Дата закінчення</td>
</tr>
<tr>
<td>document_url</td>
<td>TEXT</td>
<td>URL документа</td>
</tr>
<tr>
<td>verified</td>
<td>BOOLEAN</td>
<td>Перевірено AI</td>
</tr>
</tbody>
</table>
<hr />
<h1 id="12-cross-references">12. Cross-References<a class="headerlink" href="#12-cross-references" title="Permanent link">&para;</a></h1>
<ul>
<li><strong>DAARION_Ontology_Core_v1.md</strong> — базова онтологія</li>
<li><strong>District_Interface_Architecture_v1.md</strong> — архітектура District UI</li>
<li><strong>Agent_Governance_Protocol_v1.md</strong> — права та ролі агентів</li>
<li><strong>DAIS_Layer_Architecture_v1.md</strong> — система ідентичності</li>
<li><strong>Rooms_Layer_Architecture_v1.md</strong> — архітектура кімнат</li>
</ul>
<hr />
<h1 id="13-mvp-scope">13. MVP Scope<a class="headerlink" href="#13-mvp-scope" title="Permanent link">&para;</a></h1>
<h2 id="mvp">Входить до MVP:<a class="headerlink" href="#mvp" title="Permanent link">&para;</a></h2>
<ul>
<li>Реєстрація District GREENFOOD</li>
<li>Portal у City Square</li>
<li>District Rooms (5 базових)</li>
<li>ERP Agent (базова логіка)</li>
<li>Product Module</li>
<li>Batch Module</li>
<li>Warehouse Module (базовий)</li>
<li>Finance Module (баланси)</li>
</ul>
<h2 id="mvp_1">Не входить до MVP:<a class="headerlink" href="#mvp_1" title="Permanent link">&para;</a></h2>
<ul>
<li>Повна логістика з ML</li>
<li>Retail Hub з рекомендаціями</li>
<li>Compliance automation</li>
<li>IoT інтеграція</li>
<li>Multi-warehouse routing</li>
</ul>
<hr />
<p><strong>Document Status:</strong> ✅ Ready for Implementation</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>