NODEDC_SITE/knowledge/agent-context/index.html

282 lines
63 KiB
HTML
Raw Permalink 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="ru" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-ept3ui5y">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Агентный контур | NODE.DC Knowledge</title>
<link rel="shortcut icon" href="/assets/vendor/ssscript-docs/favicon.svg" type="image/svg+xml">
<meta name="generator" content="Astro v5.18.0">
<meta name="generator" content="Starlight v0.37.7">
<meta name="description" content="Как в NODE.DC устроена агентная автоматизация: контекст, права, задачи, данные и передача результатов между модулями.">
<meta name="robots" content="index,follow,max-image-preview:large">
<meta property="og:title" content="Агентный контур | NODE.DC Knowledge">
<meta property="og:type" content="article">
<meta property="og:locale" content="ru">
<meta property="og:description" content="Как в NODE.DC устроена агентная автоматизация: контекст, права, задачи, данные и передача результатов между модулями.">
<meta property="og:site_name" content="NODE.DC">
<meta property="og:url" content="https://nodedc.dctouch.ru/knowledge/agent-context/">
<meta name="twitter:card" content="summary_large_image">
<link rel="canonical" href="https://nodedc.dctouch.ru/knowledge/agent-context/">
<script>
window.StarlightThemeProvider = (() => {
const storedTheme = typeof localStorage !== "undefined" && localStorage.getItem("starlight-theme");
const theme = storedTheme || "dark";
document.documentElement.dataset.theme = theme === "auto" ? (window.matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark") : theme;
return {
updatePickers(theme = storedTheme || "dark") {
document.querySelectorAll("starlight-theme-select").forEach((picker) => {
const select = picker.querySelector("select");
if (select) select.value = theme;
const tmpl = document.querySelector("#theme-icons");
const newIcon = tmpl && tmpl.content.querySelector("." + theme);
if (newIcon) {
const oldIcon = picker.querySelector("svg.label-icon");
if (oldIcon) oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes);
}
});
},
};
})();
</script>
<template id="theme-icons"><svg aria-hidden="true" class="light astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/></svg><svg aria-hidden="true" class="dark astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/></svg><svg aria-hidden="true" class="auto astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg></template>
<link rel="stylesheet" href="/assets/vendor/ssscript-docs/_astro/print.DNXP8c50.css" media="print">
<link rel="stylesheet" href="/assets/vendor/ssscript-docs/_astro/index.Bh6uiXgK.css">
<link rel="stylesheet" href="/assets/custom/css/knowledge.css">
<script type="module" src="/assets/vendor/ssscript-docs/_astro/page.B1D-nYk3.js"></script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","headline":"Агентный контур | NODE.DC Knowledge","description":"Как в NODE.DC устроена агентная автоматизация: контекст, права, задачи, данные и передача результатов между модулями.","url":"https://nodedc.dctouch.ru/knowledge/agent-context/","author":{"@type":"Organization","name":"DCTOUCH"},"publisher":{"@type":"Organization","name":"DCTOUCH"}}</script>
</head>
<body class="astro-ept3ui5y">
<a href="#_top" class="astro-yr4ykvqi">К содержанию</a>
<div class="page sl-flex astro-iyrf6vv4">
<header class="header astro-iyrf6vv4">
<div class="max-md:flex gap-(--sl-nav-gap) justify-between items-center h-full header-grid astro-3ef6ksr2">
<div class="overflow-clip p-1 -m-1 min-w-0 sl-flex title-wrapper astro-3ef6ksr2">
<a href="/" class="flex items-center gap-(--sl-nav-gap) font-semibold no-underline whitespace-nowrap min-w-0 site-title astro-idrpryed">
<span class="site-title-logo inline-flex items-center shrink-0 astro-idrpryed" aria-hidden="true"><img src="/assets/uploads/images/static-elements/dclogo_darck-mquq1l13-transparent.png" alt="главная"></span>
<span class="overflow-hidden astro-idrpryed" translate="no">Knowledge</span>
</a>
</div>
<div class="sl-flex print:hidden search-wrapper justify-center astro-3ef6ksr2" data-search>
<site-search class="astro-3ef6ksr2 astro-2f6du2pg" data-translations="{&quot;placeholder&quot;:&quot;Поиск&quot;}">
<button data-open-modal aria-label="Поиск" aria-keyshortcuts="Meta+K" class="astro-2f6du2pg" type="button"><svg aria-hidden="true" class="astro-2f6du2pg astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.71 20.29 18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 0-14 7 7 0 0 1 0 14Z"/></svg><span class="sl-hidden md:sl-block astro-2f6du2pg" aria-hidden="true">Поиск</span><kbd class="sl-hidden md:sl-flex astro-2f6du2pg"><kbd class="astro-2f6du2pg"></kbd><kbd class="astro-2f6du2pg">K</kbd></kbd></button>
</site-search>
<div class="knowledge-search-popover" data-search-popover hidden>
<input class="knowledge-search-input" type="search" placeholder="Поиск" autocomplete="off" data-search-input>
<div class="knowledge-search-results" data-search-results></div>
</div>
</div>
<div class="sl-hidden md:sl-flex print:hidden flex gap-4 items-center right-group astro-3ef6ksr2">
<div class="sl-flex gap-4 items-center social-icons astro-3ef6ksr2"></div>
<a href="#" class="inline-flex items-center gap-2 font-medium no-underline whitespace-nowrap transition-[color,filter] duration-150 download-cta knowledge-download-placeholder py-[0.3rem] px-[0.5rem] pl-[0.4rem] text-sm rounded-[8px] astro-sle7k2hz" aria-hidden="true" tabindex="-1"><span class="inline-flex items-center justify-center flex-shrink-0 w-6 h-6 astro-sle7k2hz"></span><span class="astro-sle7k2hz">Download</span></a>
<starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-47nlhtql"><span class="sr-only astro-47nlhtql">Выбор темы</span><svg aria-hidden="true" class="icon label-icon astro-47nlhtql astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-47nlhtql"><option value="dark" class="astro-47nlhtql">Dark</option><option value="light" class="astro-47nlhtql">Light</option><option value="auto" class="astro-47nlhtql">Auto</option></select><svg aria-hidden="true" class="icon caret astro-47nlhtql astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select>
</div>
</div>
</header>
<nav class="sidebar print:hidden astro-iyrf6vv4" aria-label="Основная навигация">
<starlight-menu-button class="print:hidden astro-yrbfzory">
<button aria-expanded="false" aria-label="Меню" aria-controls="starlight__sidebar" class="sl-flex md:sl-hidden astro-yrbfzory"><svg aria-hidden="true" class="open-menu astro-yrbfzory astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M3 8h18a1 1 0 1 0 0-2H3a1 1 0 0 0 0 2Zm18 8H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Zm0-5H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Z"/></svg><svg aria-hidden="true" class="close-menu astro-yrbfzory astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="m13.41 12 6.3-6.29a1.004 1.004 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1.004 1.004 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 0 1.42.998.998 0 0 0 1.42 0l6.29-6.3 6.29 6.3a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.42L13.41 12Z"/></svg></button>
</starlight-menu-button>
<div id="starlight__sidebar" class="sidebar-pane astro-iyrf6vv4">
<div class="sidebar-content sl-flex astro-iyrf6vv4">
<sl-sidebar-state-persist data-hash="nodedc-knowledge" class="astro-fouifdpt">
<ul class="top-level astro-j63poqv6">
<li class="astro-j63poqv6"><a href="/knowledge/" class="large astro-j63poqv6"><span class="astro-j63poqv6">Knowledge</span></a></li><li class="astro-j63poqv6"><details open class="astro-j63poqv6"><summary class="astro-j63poqv6"><span class="group-label astro-j63poqv6"><a href="/knowledge/platform/" class="knowledge-summary-link astro-j63poqv6"><span class="large astro-j63poqv6">NODE.DC</span></a></span><svg aria-hidden="true" class="caret astro-j63poqv6 astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="0"></sl-sidebar-restore><ul class="astro-j63poqv6"><li class="astro-j63poqv6"><a href="/knowledge/platform/hub/" class="astro-j63poqv6"><span class="astro-j63poqv6">Hub</span></a></li><li class="astro-j63poqv6"><a href="/knowledge/platform/engine/" class="astro-j63poqv6"><span class="astro-j63poqv6">Engine</span></a></li><li class="astro-j63poqv6"><a href="/knowledge/platform/ops/" class="astro-j63poqv6"><span class="astro-j63poqv6">Ops</span></a></li></ul></details></li><li class="astro-j63poqv6"><a href="/knowledge/agent-context/" aria-current="page" class="large astro-j63poqv6"><span class="astro-j63poqv6">Агентный контур</span></a></li><li class="astro-j63poqv6"><details open class="astro-j63poqv6"><summary class="astro-j63poqv6"><span class="group-label astro-j63poqv6"><a href="/knowledge/modules/" class="knowledge-summary-link astro-j63poqv6"><span class="large astro-j63poqv6">Прикладные модули</span></a></span><svg aria-hidden="true" class="caret astro-j63poqv6 astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="1"></sl-sidebar-restore><ul class="astro-j63poqv6"><li class="astro-j63poqv6"><a href="/knowledge/modules/tender-agent/" class="astro-j63poqv6"><span class="astro-j63poqv6">Тендерный агент</span></a></li><li class="astro-j63poqv6"><a href="/knowledge/modules/1c-integration/" class="astro-j63poqv6"><span class="astro-j63poqv6">Интеграция с 1С</span></a></li><li class="astro-j63poqv6"><a href="/knowledge/modules/drone-management/" class="astro-j63poqv6"><span class="astro-j63poqv6">Управление беспилотниками</span></a></li><li class="astro-j63poqv6"><a href="/knowledge/modules/city-digital-twins/" class="astro-j63poqv6"><span class="astro-j63poqv6">Цифровые двойники городов</span></a></li><li class="astro-j63poqv6"><a href="/knowledge/modules/industrial-contour/" class="astro-j63poqv6"><span class="astro-j63poqv6">Промышленный контур</span></a></li><li class="astro-j63poqv6"><a href="/knowledge/modules/enterprise-management/" class="astro-j63poqv6"><span class="astro-j63poqv6">Управление предприятием</span></a></li><li class="astro-j63poqv6"><a href="/knowledge/modules/construction-contour/" class="astro-j63poqv6"><span class="astro-j63poqv6">Строительный контур</span></a></li><li class="astro-j63poqv6"><a href="/knowledge/modules/seo-module/" class="astro-j63poqv6"><span class="astro-j63poqv6">SEO модуль</span></a></li></ul></details></li>
</ul>
</sl-sidebar-state-persist>
<div class="md:sl-hidden">
<div class="mobile-preferences sl-flex astro-22fp5ct5">
<div class="social-icons astro-22fp5ct5"></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-47nlhtql"><span class="sr-only astro-47nlhtql">Выбор темы</span><svg aria-hidden="true" class="icon label-icon astro-47nlhtql astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-47nlhtql"><option value="dark" class="astro-47nlhtql">Dark</option><option value="light" class="astro-47nlhtql">Light</option><option value="auto" class="astro-47nlhtql">Auto</option></select><svg aria-hidden="true" class="icon caret astro-47nlhtql astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select>
</div>
</div>
</div>
</div>
</nav>
<div class="main-frame astro-iyrf6vv4">
<div class="lg:sl-flex astro-6ptv7odt">
<aside class="right-sidebar-container print:hidden astro-6ptv7odt">
<div class="right-sidebar astro-6ptv7odt">
<script type="module" src="/assets/vendor/ssscript-docs/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.hwBsy0Mo.js"></script>
<script type="module" src="/assets/vendor/ssscript-docs/_astro/TableOfContents.astro_astro_type_script_index_0_lang.FuRcXuRY.js"></script>
<div class="lg:sl-hidden astro-auw6kndz">
<mobile-starlight-toc data-min-h="2" data-max-h="3" class="astro-2zbszx3p">
<nav aria-labelledby="starlight__on-this-page--mobile" class="astro-2zbszx3p">
<details id="starlight__mobile-toc" class="astro-2zbszx3p">
<summary id="starlight__on-this-page--mobile" class="sl-flex astro-2zbszx3p"><span class="toggle sl-flex astro-2zbszx3p">На этой странице<svg aria-hidden="true" class="caret astro-2zbszx3p astro-fr7meb3z" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></span><span class="display-current astro-2zbszx3p"></span></summary>
<div class="dropdown astro-2zbszx3p"><ul class="isMobile astro-uehw6aht" style="--depth: 0;"><li class="astro-uehw6aht" style="--depth: 0;"><a href="#_top" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Обзор</span></a></li><li class="astro-uehw6aht" style="--depth: 0;"><a href="#chto-peredaetsya-agentam" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Что передаётся агентам</span></a></li><li class="astro-uehw6aht" style="--depth: 0;"><a href="#kontekst-i-prava" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Контекст и права</span></a></li><li class="astro-uehw6aht" style="--depth: 0;"><a href="#peredacha-rezultata" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Передача результата</span></a></li><li class="astro-uehw6aht" style="--depth: 0;"><a href="#pochemu-eto-infrastruktura" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Почему это инфраструктура</span></a></li></ul></div>
</details>
</nav>
</mobile-starlight-toc>
</div>
<div class="right-sidebar-panel sl-hidden lg:sl-block astro-auw6kndz">
<div class="sl-container astro-auw6kndz">
<starlight-toc data-min-h="2" data-max-h="3">
<nav aria-labelledby="starlight__on-this-page">
<h2 id="starlight__on-this-page">На этой странице</h2>
<ul class="astro-uehw6aht" style="--depth: 0;"><li class="astro-uehw6aht" style="--depth: 0;"><a href="#_top" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Обзор</span></a></li><li class="astro-uehw6aht" style="--depth: 0;"><a href="#chto-peredaetsya-agentam" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Что передаётся агентам</span></a></li><li class="astro-uehw6aht" style="--depth: 0;"><a href="#kontekst-i-prava" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Контекст и права</span></a></li><li class="astro-uehw6aht" style="--depth: 0;"><a href="#peredacha-rezultata" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Передача результата</span></a></li><li class="astro-uehw6aht" style="--depth: 0;"><a href="#pochemu-eto-infrastruktura" class="astro-uehw6aht" style="--depth: 0;"><span class="astro-uehw6aht" style="--depth: 0;">Почему это инфраструктура</span></a></li></ul>
</nav>
</starlight-toc>
</div>
</div>
</div>
</aside>
<div class="main-pane astro-6ptv7odt">
<main data-pagefind-body class="astro-ept3ui5y" lang="ru" dir="ltr">
<div class="content-panel astro-hxjpthjh">
<div class="sl-container astro-hxjpthjh">
<h1 id="_top" data-page-title class="astro-gldynaio">Агентный контур</h1>
<div class="sl-markdown-content">
<p>Агентный контур NODE.DC - рабочая среда для сборки, запуска и контроля цифровых агентов внутри единой операционной платформы. Здесь агентная автоматизация не является набором отдельных скриптов: она встроена в процессы, роли, данные и задачи компании.</p>
<div class="sl-heading-wrapper level-h2"><h2 id="chto-peredaetsya-agentam">Что передаётся агентам</h2><a class="sl-anchor-link" href="#chto-peredaetsya-agentam"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Раздел «Что передаётся агентам»</span></a></div>
<p>Агентам можно отдавать повторяющиеся и трудоёмкие операции: поиск, отбор, классификацию, разбор документов, подготовку отчётов, сверку данных и запуск следующих шагов. Человек остаётся владельцем решения, а агент снимает рутину и ускоряет подготовку материалов.</p>
<div class="sl-heading-wrapper level-h2"><h2 id="kontekst-i-prava">Контекст и права</h2><a class="sl-anchor-link" href="#kontekst-i-prava"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Раздел «Контекст и права»</span></a></div>
<p>Агент работает только в доступном ему контексте. Он видит задачи, документы, модели, сервисы и историю действий в рамках настроенных прав. Это важно для enterprise-сценариев, где один и тот же процесс может касаться разных подразделений и уровней доступа.</p>
<div class="sl-heading-wrapper level-h2"><h2 id="peredacha-rezultata">Передача результата</h2><a class="sl-anchor-link" href="#peredacha-rezultata"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Раздел «Передача результата»</span></a></div>
<ul><li>результат может стать подзадачей в Ops;</li><li>может уйти в юридический, закупочный или инженерный модуль;</li><li>может запустить согласование или проверку;</li><li>может лечь в отчёт, карточку объекта или рабочий дашборд.</li></ul>
<div class="sl-heading-wrapper level-h2"><h2 id="pochemu-eto-infrastruktura">Почему это инфраструктура</h2><a class="sl-anchor-link" href="#pochemu-eto-infrastruktura"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Раздел «Почему это инфраструктура»</span></a></div>
<p>Главная ценность агентного слоя в том, что он поднимает автоматизацию с уровня отдельного инструмента до уровня рабочей инфраструктуры. События, причины, решения и действия остаются в одном контуре и могут быть проверены позже.</p>
</div>
<footer class="sl-flex astro-vcuyfr7s"><div class="meta sl-flex astro-vcuyfr7s"></div></footer>
</div>
</div>
</main>
</div>
</div>
</div>
</div>
<script type="application/json" id="knowledge-search-index">[{"title":"NODE.DC","description":"Обзор платформы NODE.DC: данные, процессы, агенты, Hub, Engine, Ops и прикладные контуры предприятия.","url":"/knowledge/platform/","text":"NODE.DC - операционная платформа, которая связывает распределённые объекты, данные и действия в едином контуре управления. Она подключает физические источники, цифровые сервисы, бизнес-системы и прикладные модули, превращая разрозненные сигналы в воспроизводимые потоки событий. Смысл платформы В основе NODE.DC лежит модель объектов: сущности, паспорта, связи, состояния, события и допустимые действия. Эта структура даёт общую картину того, что происходит в компании, где это происходит, с чем связано и какие следующие действия доступны. Три базовых слоя Hub отвечает за вход, роли, группы, рабочие пространства и каталог приложений. Engine собирает процессы, интеграции, обработчики данных, интерфейсы и агентные сценарии. Ops принимает задачи, статусы, отчёты, согласования и результаты работы модулей. Агентный интеллектуальный слой Поверх данных работает AIS - агентный слой платформы. Он анализирует историю и текущее состояние, выявляет отклонения, формирует объяснения, предлагает действия и запускает сценарии строго в рамках прав доступа и контекста. Где применяется NODE.DC полезен там, где важно быстро перейти от наблюдения к действию: в закупках, проектном офисе, инженерных данных, производстве, строительстве, цифровых двойниках, робототехнике и интеграциях с учётными системами. Посмотреть платформу на лендинге"},{"title":"Hub","description":"NODE.DC Hub: единая точка входа, каталог приложений, роли, группы, доступы и рабочие пространства.","url":"/knowledge/platform/hub/","text":"NODE.DC Hub - единая точка доступа к среде NODE.DC. Он показывает пользователю доступные приложения, рабочие пространства и сервисы платформы с учётом роли, группы и настроек конкретного контура. Что делает Hub собирает каталог приложений и микромодулей в одном интерфейсе; управляет ролями, группами, отделами и правами доступа; разделяет рабочие контуры для инженерных, финансовых, юридических, закупочных и производственных команд; даёт администраторам понятную точку настройки платформы. Enterprise-сценарий В корпоративном контуре администратор может назначать типовые конфигурации доступа для подразделений и отдельно расширять права конкретным пользователям. За счёт этого платформа не превращается в общий склад кнопок: каждый видит только те инструменты, которые относятся к его работе. Связь с другими слоями Из Hub пользователь переходит в Engine, Ops и прикладные приложения. Все переходы сохраняют контекст прав доступа, поэтому один и тот же модуль может выглядеть по-разному для руководителя проекта, инженера, закупщика или внешнего подрядчика. Посмотреть демо"},{"title":"Engine","description":"NODE.DC Engine: нодовый слой для сборки процессов, интеграций, интерфейсов и агентных сценариев.","url":"/knowledge/platform/engine/","text":"NODE.DC Engine - рабочий слой для проектирования и запуска процессов внутри платформы. Здесь создаются интеграции сервисов, обработчики данных, диспетчерские панели, сценарии роботизации и внутренние автоматизации для бизнеса. Нодовый редактор Процессы собираются в узловом редакторе. Узлы описывают источники данных, преобразования, действия, визуализацию, проверки, внешние API и пользовательские интерфейсы. Такой подход позволяет быстро добавлять новые сценарии без переписывания всей системы. Роль ИИ-агентов Сценарий можно собрать вручную или с помощью агента: пользователь описывает задачу, а агент предлагает архитектуру решения, добавляет необходимые узлы и готовит схему для подключения к интерфейсу. Что можно собирать интеграции с 1С, CRM, ERP, API и webhooks; операционные панели и диспетчерские интерфейсы; потоки обработки документов, телеметрии и событий; агентные цепочки для анализа, отбора, классификации и маршрутизации задач. Передача в Ops Результат работы Engine не остаётся схемой в редакторе. Он передаётся в операционный слой: создаёт задачи, обновляет статусы, прикладывает отчёты, запускает согласования или отдаёт данные в другой модуль. Посмотреть демо"},{"title":"Ops","description":"NODE.DC Ops: операционный слой для задач, статусов, отчётов, инженерных данных и результатов агентов.","url":"/knowledge/platform/ops/","text":"NODE.DC Ops - операционный слой платформы. В него сводятся проекты, процессы, задачи, инженерные данные, статусы, отчёты, согласования и результаты работы прикладных контуров. Единая рабочая среда Ops объединяет людей, агентов и цифровые контуры предприятия. Задачи можно ставить, уточнять, декомпозировать, передавать между подразделениями, контролировать по этапам и связывать с результатами из других слоёв NODE.DC. Ассистент внутри процесса Сквозной ассистент работает не как справочная кнопка, а как интерфейс к рабочему контексту: задачам, проектным материалам, кодовой базе, инженерным данным, отчётам и действиям агентов. При наличии прав он может готовить материалы, создавать подзадачи и инициировать изменения в сервисах. Форматы представления проектные дашборды и карточки задач; календарные планы и таблицы; графики, отчёты и рабочие области; просмотр BIM, STEP, STL, 3DGS, LAS и других инженерных материалов. Зачем это нужно Ops делает работу наблюдаемой: каждое действие, решение и отклонение получает место в общем контуре, а не теряется в чатах, таблицах и разрозненных файлах. Посмотреть демо"},{"title":"Агентный контур","description":"Как в NODE.DC устроена агентная автоматизация: контекст, права, задачи, данные и передача результатов между модулями.","url":"/knowledge/agent-context/","text":"Агентный контур NODE.DC - рабочая среда для сборки, запуска и контроля цифровых агентов внутри единой операционной платформы. Здесь агентная автоматизация не является набором отдельных скриптов: она встроена в процессы, роли, данные и задачи компании. Что передаётся агентам Агентам можно отдавать повторяющиеся и трудоёмкие операции: поиск, отбор, классификацию, разбор документов, подготовку отчётов, сверку данных и запуск следующих шагов. Человек остаётся владельцем решения, а агент снимает рутину и ускоряет подготовку материалов. Контекст и права Агент работает только в доступном ему контексте. Он видит задачи, документы, модели, сервисы и историю действий в рамках настроенных прав. Это важно для enterprise-сценариев, где один и тот же процесс может касаться разных подразделений и уровней доступа. Передача результата результат может стать подзадачей в Ops; может уйти в юридический, закупочный или инженерный модуль; может запустить согласование или проверку; может лечь в отчёт, карточку объекта или рабочий дашборд. Почему это инфраструктура Главная ценность агентного слоя в том, что он поднимает автоматизацию с уровня отдельного инструмента до уровня рабочей инфраструктуры. События, причины, решения и действия остаются в одном контуре и могут быть проверены позже."},{"title":"Прикладные модули","description":"Прикладные модули NODE.DC: отраслевые и корпоративные контуры поверх общей платформенной инфраструктуры.","url":"/knowledge/modules/","text":"Прикладные модули NODE.DC закрывают конкретные функции предприятия: закупки, тендеры, 1С, производство, строительство, цифровые двойники, беспилотники, SEO и внутренние инструменты разработки. Задача прикладного слоя Смысл модулей - адаптировать платформу под специфику компании. В одном контуре можно связать учётные системы, роли, задачи, файлы, инженерные данные, агентов, отчёты и интерфейсы без разрыва между приложениями. Что можно добавить модуль под отдельный отдел или процесс; интеграцию с внешней системой, API, 1С, CRM или ERP; операционный дашборд и рабочий интерфейс; агента для поиска, анализа, сверки или подготовки материалов; инструмент разработки и администрирования для внутренней команды. Единый контекст Модуль не живёт отдельно. Он подключается к ролям, данным, задачам и сквозному ассистенту NODE.DC. Поэтому результат работы тендерного агента может попасть в Ops, данные из 1С могут участвовать в закупочной проверке, а инженерная модель может быть связана с задачей, отчётом и согласованием. Смотреть прикладные модули"},{"title":"Тендерный агент","description":"Как тендерный агент NODE.DC помогает искать закупки, анализировать требования, риски, документы и передавать задачи в смежные контуры.","url":"/knowledge/modules/tender-agent/","text":"Тендерный агент NODE.DC закрывает рабочий контур тендерного отдела. В одном интерфейсе объединяются поиск и агрегация закупок, первичный отбор, AI-анализ конкретных тендеров и передача материалов в смежные модули. Что делает агент собирает и нормализует закупочный поток с тендерных площадок; выделяет требования, ограничения, сроки, финансовые параметры и рисковые зоны; сопоставляет условия закупки с внутренними данными компании; готовит выжимки, чек-листы и материалы для ответственных специалистов; передаёт задачи в юридический, закупочный или операционный контур. Поведенческий поиск Система учитывает действия специалиста: какие закупки он открывает, какие отклоняет, по каким признакам принимает решение. На этой базе формируются устойчивые паттерны отбора, а релевантные тендеры находятся точнее. Роль человека Специалист тендерного отдела остаётся оператором решения. Агент сокращает ручной перебор, готовит анализ и подсвечивает риски, но финальное решение, подача и коммуникация остаются под контролем команды. Связь с платформой Материалы тендера могут стать задачами в Ops, данными для юридического анализа, входом для 1С-интеграции или основанием для закупочной цепочки. Посмотреть демо на лендинге"},{"title":"Интеграция с 1С","description":"Как NODE.DC связывает 1С с задачами, агентами, закупками, документами, складами и операционными процессами.","url":"/knowledge/modules/1c-integration/","text":"Интеграция с 1С связывает учётный контур предприятия с задачами, агентами и рабочими модулями NODE.DC. 1С остаётся источником фактов, а NODE.DC добавляет операционный, аналитический и агентный слой поверх этих данных. Какие данные подключаются справочники, контрагенты, номенклатура и статусы; документы, счета, акты, заявки и закупочные позиции; остатки, движение товаров, складские события и производственные данные; связанные задачи, согласования и внутренние комментарии. Типовые сценарии Команда может использовать данные из 1С для сверки тендерных требований, контроля закупок, подготовки отчётов, запуска согласований, проверки остатков, анализа поставщиков и передачи результата в Ops. 1С агент 1С агент помогает не просто показать данные, а ответить на рабочий вопрос: найти документ, объяснить статус, собрать выборку, подготовить задачу или подсказать следующий шаг. При этом действия выполняются в рамках прав доступа и фиксируются в операционном контуре. Почему это важно Без интеграции учётная система часто остаётся отдельным окном. NODE.DC связывает её с процессами: данные становятся частью задач, отчётов, агентов и модулей, а не отдельной ручной проверкой."},{"title":"Управление беспилотниками","description":"Цифровой контур NODE.DC для беспилотных систем: телеметрия, IoT-состояния, видеопотоки, события и операторский интерфейс.","url":"/knowledge/modules/drone-management/","text":"В NODE.DC может быть реализован интеграционный слой для работы с беспилотными решениями. Платформа становится цифровым контуром вокруг системы управления: собирает телеметрию, анализирует состояние IoT-компонентов, обрабатывает события и помогает оператору принимать решения. Что контролирует платформа состояние узлов, датчиков и исполнительных компонентов; параметры движения, маршруты и эксплуатационные ограничения; историю событий, уведомления и отклонения; видеопотоки, классификацию объектов и признаки нештатных ситуаций. ИИ-модули Отдельное направление - анализ видеопотоков, оценка окружения, выявление препятствий, контроль состояния маршрута и подготовка кратких сводок для оператора. Опыт и переносимость Подход применим к разным автономным комплексам: курьерским решениям, гусеничным наземным платформам, распределённой технике и мониторинговым сценариям. В каждом случае NODE.DC отвечает за данные, события, наблюдаемость, интерфейс и агентное сопровождение. Результат Оператор видит не набор сырых сигналов, а понятную картину: что произошло, насколько это критично, какие действия доступны и какие данные уже собраны системой."},{"title":"Цифровые двойники городов","description":"Как NODE.DC может выступать точкой входа в городской цифровой двойник: 3DGS, карта, BIM, облака точек и единый контекст.","url":"/knowledge/modules/city-digital-twins/","text":"NODE.DC может работать как вход в цифровой двойник города или крупной территории. Пользователь получает единое пространственное окружение, где обзор, аналитика и инженерный разбор связаны геопривязкой, API и общим контекстом. Три масштаба Обзорный слой 3DGS-сцены дают быстрый вход внутрь локации: прогулку от третьего лица, совместное присутствие, наблюдение других участников и естественное понимание пространства. Городской слой Карта местности становится навигацией и агрегатором слоёв: транспорт, экология, инфраструктура, распределённые объекты, статусы и события. Инженерный слой BIM-модели, облака точек и технические материалы позволяют перейти к детальному анализу объекта, конструкции, помещений и инженерных систем. Единый маршрут пользователя Человек может начать с общего обзора, перейти к городской аналитике, затем открыть конкретный объект и посмотреть его инженерную структуру без разрыва пространственной логики. Связь с Ops Любое наблюдение, отклонение или задача из цифрового двойника может быть связано с карточкой в Ops, ответственным исполнителем, сроком, материалами и историей действий."},{"title":"Промышленный контур","description":"Цифровой двойник промышленного предприятия в NODE.DC: состояния цехов, оборудование, облака точек, BIM и эксплуатационные данные.","url":"/knowledge/modules/industrial-contour/","text":"Промышленный контур NODE.DC помогает хранить и сопоставлять состояния производственных помещений, оборудования и инженерной инфраструктуры во времени. Это не только визуализация, а рабочий инструмент поддержки решений. Цифровой архив состояний Регулярная фиксация состояния предприятия позволяет сравнивать цеха, оборудование и инженерные зоны за разные периоды. На этой базе можно выявлять деформации, износ, перегрузки и отклонения. Что входит BIM-данные, облака точек и фотореалистичные слои; паспорта помещений, цехов и оборудования; связь с ERP/1С, складами и производственными статусами; карта-навигация для сотрудников и подрядчиков; история изменений и материалы модернизации. Оптимизация процессов Когда пространственные данные связаны с производственными узлами, легче находить причины износа, перегрузок и простоев. Решение принимается не по отдельной фотографии или таблице, а по контексту объекта. Планирование модернизаций Цифровой двойник фиксирует промежуточные состояния предприятия как живую историю объекта. Это снижает риск ошибок при проектировании, ремонте, реконструкции и внедрении нового оборудования."},{"title":"Управление предприятием","description":"Ситуационный и мониторинговый режим NODE.DC для управленческого контура предприятия.","url":"/knowledge/modules/enterprise-management/","text":"Управленческий контур NODE.DC собирает в одном рабочем пространстве финансовые показатели, производственные статусы, распределённые объекты, логистику, поставщиков, отклонения и выводы агентных систем. Единое экранное пространство Вместо разрозненных отчётов формируется живая картина предприятия. Каждый блок интерфейса связан с конкретным объектом, процессом, узлом данных или рабочим полем. Что можно выводить финансовые и операционные показатели; производственные статусы и риски; состояние объектов, складов, техники и инфраструктуры; логистику, поставщиков и закупочный поток; аналитические сводки агентов и рекомендации по действиям. Не витрина, а рабочая проекция Ценность режима в том, что он связан с действующей архитектурой процессов. Из показателя можно перейти в задачу, из задачи - в материалы, из материалов - в ответственного, а из отклонения - в сценарий реакции. Роль руководителя Руководитель видит не только итоговый отчёт, но и причинно-следственную цепочку: от источника события до текущего статуса и следующего действия."},{"title":"Строительный контур","description":"NODE.DC для строительства: BIM, полевые отчёты, подрядчики, дефекты, сроки, модели и операционный контроль.","url":"/knowledge/modules/construction-contour/","text":"Строительный контур NODE.DC связывает проектные данные, площадку, подрядчиков, BIM-модели, полевые отчёты, дефекты, сроки и согласования в одной рабочей системе. Что объединяется BIM-модели, чертежи, облака точек и фотофиксация; задачи, замечания, дефекты и исполнительная документация; подрядчики, ответственные, сроки и этапы работ; полевые отчёты и мобильные сценарии инспекций; связь с закупками, складами и финансовыми контурами. Переход от модели к действию Инженерная модель становится не отдельным файлом, а источником рабочих действий. Элемент модели можно связать с задачей, актом, замечанием, фотографией, сроком или ответственным исполнителем. Контроль изменений Для стройки важна история: что было запланировано, что изменилось, кто согласовал, какие материалы приложены и почему задача перешла в новый статус. Ops сохраняет эту цепочку в операционном контуре. Агентное сопровождение Агенты могут готовить сводки по дефектам, искать просрочки, сравнивать отчёты, собирать материалы к совещанию и подсвечивать зоны риска."},{"title":"SEO модуль","description":"SEO Farm как модуль NODE.DC: аудит сайта, Wordstat, карта ключей, редактор правок, media SEO и ручной apply через changeset.","url":"/knowledge/modules/seo-module/","text":"SEO модуль NODE.DC строится как локальный редакторский контур для работы с существующими сайтами. Его задача - не автоматически публиковать тексты и не забивать страницу ключами, а дать управляемый процесс для редактора, дизайнера и SEO-специалиста. Основной сценарий проект сканируется как папка сайта или рабочий источник; собирается индекс страниц, секций, медиа и технических файлов; выполняется baseline audit по структуре, заголовкам, описаниям, видимым текстам и медиа; из текста извлекаются смыслы, seed-запросы и потенциальные интенты; через Wordstat собираются реальные запросы и частотность; формируется карта ключей по секциям; редактор утверждает правки, проверяет переспам и применяет изменения через changeset. Что проверяется title, description, h1/h2 и порядок заголовков; видимый текст, секции и смысловые дубли; изображения, видео, posters, alt, title, aria-label и контекст вокруг медиа; риски переспама, конкурирующие смыслы, тон и ограничения по длине. Почему не автопостинг Модуль работает с рабочей копией текста. Исходный сайт не меняется до ручного Apply. Перед применением пользователь видит план, варианты правок, проверки качества и итоговый changeset. Связь с Knowledge Этот раздел Knowledge сам является хорошим кандидатом для SEO-модуля: каждая статья имеет отдельный URL, понятный заголовок, описание, структуру H2/H3 и может проходить через тот же редакторский контур."}]</script>
<script type="module">
const themeKey = "starlight-theme";
const defaultTheme = "dark";
const normalizeTheme = (value) => value === "auto" || value === "dark" || value === "light" ? value : defaultTheme;
const readTheme = () => normalizeTheme(typeof localStorage !== "undefined" && localStorage.getItem(themeKey));
const systemTheme = () => matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark";
function storeTheme(theme) {
if (typeof localStorage !== "undefined") localStorage.setItem(themeKey, theme);
}
function applyTheme(theme) {
StarlightThemeProvider.updatePickers(theme);
document.documentElement.dataset.theme = theme === "auto" ? systemTheme() : theme;
storeTheme(theme);
}
matchMedia("(prefers-color-scheme: light)").addEventListener("change", () => {
if (readTheme() === "auto") applyTheme("auto");
});
class StarlightThemeSelect extends HTMLElement {
constructor() {
super();
applyTheme(readTheme());
this.querySelector("select")?.addEventListener("change", (event) => {
if (event.currentTarget instanceof HTMLSelectElement) applyTheme(normalizeTheme(event.currentTarget.value));
});
}
}
if (!customElements.get("starlight-theme-select")) customElements.define("starlight-theme-select", StarlightThemeSelect);
class StarlightMenuButton extends HTMLElement {
constructor() {
super();
this.btn = this.querySelector("button");
this.btn?.addEventListener("click", () => this.toggleExpanded());
const nav = this.closest("nav");
nav?.addEventListener("keyup", (event) => this.closeOnEscape(event));
}
setExpanded(expanded) {
this.setAttribute("aria-expanded", String(expanded));
this.btn?.setAttribute("aria-expanded", String(expanded));
document.body.toggleAttribute("data-mobile-menu-expanded", expanded);
}
toggleExpanded() {
this.setExpanded(this.getAttribute("aria-expanded") !== "true");
}
closeOnEscape(event) {
if (event.code === "Escape") {
this.setExpanded(false);
this.btn?.focus();
}
}
}
if (!customElements.get("starlight-menu-button")) customElements.define("starlight-menu-button", StarlightMenuButton);
const sidebar = document.getElementById("starlight__sidebar");
const persist = sidebar?.querySelector("sl-sidebar-state-persist");
const storageKey = "sl-sidebar-state:nodedc-knowledge";
const readState = () => {
try {
return JSON.parse(sessionStorage.getItem(storageKey) || "{}");
} catch {
return {};
}
};
const writeState = () => {
if (!sidebar || !persist) return;
const details = [...persist.querySelectorAll("details")];
try {
sessionStorage.setItem(storageKey, JSON.stringify({ open: details.map((item) => item.open), scroll: sidebar.scrollTop }));
} catch {}
};
if (sidebar && persist && matchMedia("(min-width: 50em)").matches) {
const state = readState();
if (Array.isArray(state.open)) {
[...persist.querySelectorAll("details")].forEach((details, index) => {
if (typeof state.open[index] === "boolean") details.open = state.open[index];
});
}
if (typeof state.scroll === "number") sidebar.scrollTop = state.scroll;
persist.addEventListener("toggle", writeState, true);
addEventListener("pagehide", writeState);
}
</script>
<script>
(() => {
const root = document.querySelector("[data-search]");
const button = root?.querySelector("[data-open-modal]");
const popover = root?.querySelector("[data-search-popover]");
const input = root?.querySelector("[data-search-input]");
const results = root?.querySelector("[data-search-results]");
const index = JSON.parse(document.getElementById("knowledge-search-index")?.textContent || "[]");
const escapeText = (value) => String(value ?? "")
.replaceAll("&", "&amp;")
.replaceAll("<", "&lt;")
.replaceAll(">", "&gt;")
.replaceAll('"', "&quot;")
.replaceAll("'", "&#39;");
const render = () => {
const query = input.value.trim().toLowerCase();
const matches = query
? index.filter((item) => [item.title, item.description, item.text].join(" ").toLowerCase().includes(query)).slice(0, 8)
: [];
results.innerHTML = !query
? '<div class="knowledge-search-result"><strong>Введите запрос</strong><span>Поиск идет по опубликованным материалам базы знаний.</span></div>'
: matches.length
? matches.map((item) => '<a class="knowledge-search-result" href="' + escapeText(item.url) + '"><strong>' + escapeText(item.title) + '</strong><span>' + escapeText(item.description) + '</span></a>').join("")
: '<div class="knowledge-search-result"><strong>Ничего не найдено</strong><span>Попробуйте другой запрос.</span></div>';
};
const open = () => {
if (!popover || !input) return;
popover.hidden = false;
render();
window.setTimeout(() => input.focus(), 0);
};
const close = () => {
if (popover) popover.hidden = true;
};
button?.addEventListener("click", () => {
if (popover?.hidden) open();
else close();
});
input?.addEventListener("input", render);
document.addEventListener("keydown", (event) => {
if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "k") {
event.preventDefault();
open();
}
if (event.key === "Escape") close();
});
document.addEventListener("click", (event) => {
if (root && !root.contains(event.target)) close();
});
})();
</script>
</body>
</html>