277 lines
64 KiB
HTML
277 lines
64 KiB
HTML
<!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>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="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/">
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<link rel="canonical" href="https://nodedc.dctouch.ru/knowledge/">
|
||
<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":"CollectionPage","headline":"Knowledge","description":"Материалы о NODE.DC, агентных модулях, интеграциях, цифровых двойниках и рабочих контурах платформы.","url":"https://nodedc.dctouch.ru/knowledge/","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="{"placeholder":"Поиск"}">
|
||
<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/" aria-current="page" 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/" 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-zdes-lezhit" 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="#kak-ispolzovat" 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="#materialy" 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-zdes-lezhit" 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="#kak-ispolzovat" 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="#materialy" 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">Knowledge</h1>
|
||
<div class="sl-markdown-content"><p>Knowledge - библиотека материалов NODE.DC о платформе, агентных контурах, интеграциях и прикладных модулях. Здесь собраны не инструкции ради инструкций, а объяснения: как устроены слои системы, где появляются данные, как они попадают в задачи и какие сценарии можно собирать поверх общей инфраструктуры.</p>
|
||
<div class="sl-heading-wrapper level-h2"><h2 id="chto-zdes-lezhit">Что здесь лежит</h2><a class="sl-anchor-link" href="#chto-zdes-lezhit"><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>Раздел помогает быстро разобраться в NODE.DC как в единой операционной платформе: от Hub, Engine и Ops до тендерного агента, интеграции с 1С, цифровых двойников, беспилотников и SEO-модуля.</p>
|
||
<div class="sl-heading-wrapper level-h2"><h2 id="kak-ispolzovat">Как использовать</h2><a class="sl-anchor-link" href="#kak-ispolzovat"><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>
|
||
<p><a class="knowledge-button" href="/#applied-modules">Перейти к модулям на лендинге</a></p><div class="sl-heading-wrapper level-h2"><h2 id="materialy">Материалы</h2><a class="sl-anchor-link" href="#materialy"><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 class="knowledge-card-list"><li><a href="/knowledge/platform/">NODE.DC</a> — Обзор платформы NODE.DC: данные, процессы, агенты, Hub, Engine, Ops и прикладные контуры предприятия.</li><li><a href="/knowledge/platform/hub/">Hub</a> — NODE.DC Hub: единая точка входа, каталог приложений, роли, группы, доступы и рабочие пространства.</li><li><a href="/knowledge/platform/engine/">Engine</a> — NODE.DC Engine: нодовый слой для сборки процессов, интеграций, интерфейсов и агентных сценариев.</li><li><a href="/knowledge/platform/ops/">Ops</a> — NODE.DC Ops: операционный слой для задач, статусов, отчётов, инженерных данных и результатов агентов.</li><li><a href="/knowledge/agent-context/">Агентный контур</a> — Как в NODE.DC устроена агентная автоматизация: контекст, права, задачи, данные и передача результатов между модулями.</li><li><a href="/knowledge/modules/">Прикладные модули</a> — Прикладные модули NODE.DC: отраслевые и корпоративные контуры поверх общей платформенной инфраструктуры.</li><li><a href="/knowledge/modules/tender-agent/">Тендерный агент</a> — Как тендерный агент NODE.DC помогает искать закупки, анализировать требования, риски, документы и передавать задачи в смежные контуры.</li><li><a href="/knowledge/modules/1c-integration/">Интеграция с 1С</a> — Как NODE.DC связывает 1С с задачами, агентами, закупками, документами, складами и операционными процессами.</li><li><a href="/knowledge/modules/drone-management/">Управление беспилотниками</a> — Цифровой контур NODE.DC для беспилотных систем: телеметрия, IoT-состояния, видеопотоки, события и операторский интерфейс.</li><li><a href="/knowledge/modules/city-digital-twins/">Цифровые двойники городов</a> — Как NODE.DC может выступать точкой входа в городской цифровой двойник: 3DGS, карта, BIM, облака точек и единый контекст.</li><li><a href="/knowledge/modules/industrial-contour/">Промышленный контур</a> — Цифровой двойник промышленного предприятия в NODE.DC: состояния цехов, оборудование, облака точек, BIM и эксплуатационные данные.</li><li><a href="/knowledge/modules/enterprise-management/">Управление предприятием</a> — Ситуационный и мониторинговый режим NODE.DC для управленческого контура предприятия.</li></ul></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("&", "&")
|
||
.replaceAll("<", "<")
|
||
.replaceAll(">", ">")
|
||
.replaceAll('"', """)
|
||
.replaceAll("'", "'");
|
||
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>
|