{"configuration":{},"description":"Социальная сеть Петрович. Архитектура","documentation":{"sections":[{"content":"\r\n## Все ключевые компоненты системы\r\nСвязи с инфраструктурными компонентами умышленно не указаны.\r\n![](embed:AllContainers)\r\n\r\n## Внутренние  компоненты (Internal group)\r\n![](embed:InternalContainers)\r\n\r\n### Сайт webui (Site UI)\r\nUI cайта Петрович.Network с основным функционалом системы.  \r\nСвязи с основными компонентами умышленно не указаны.\r\n\r\n### Server-рендеринг html, кэш и роутинг (SSR Web app)\r\nРендеринг страниц на сервере, генерация Html. Маршрутизация запросов, взаимодействие с Identity. Получение данных от бэкенд-сервисов. \r\nКэширование, оптимизация, проставление тегов и заголовков.  \r\nСвязи с основными компонентами указаны частично.\r\n\r\n### Admin webui (AdminUI)\r\nUI админки Петрович.Network. Управление CMS, Модерация, Удаление контента, Управление справочниками, Управление интеграциями, Управление AI в части автоматической генерации активности и прочего.  \r\nСвязи с основными компонентами умышленно не указаны\r\n\r\n### Админ панель API (Admin API)\r\nУправление CMS, Модерация, Удаление контента, Управление справочниками, Управление интеграциями, Управление AI\r\n\r\n### СУД Identity (Identity)\r\nСистема авторизации и управления токенами на основе [keycloak](https://www.keycloak.org/). В качестве UserStore provider система будет использовать сервис Profile, а так же взаимодействует с Petrovich.Id (OpenID Connect, OAuth 2.0) при регистрации и авторизации. UI получают токен из Identity, а все компоненты могут валидировать токен в Identity. При необходимости внутреннюю кроссервисную аутентификацию можно сделать через Identity.     \r\nСвязи с основными компонентами умышленно не указаны.\r\n![](embed:IdentityOnly)\r\n\r\n### Профили пользователей (Profile)\r\nРегистрация и авторизация, хранение данных пользователей и админов, управление ролями и настройками пользователей.  \r\n\r\n*Роли и доступы могут отличаться среди обычных пользователей?*\r\n\r\n### Портфолио. (Portfolio)\r\nСодержит интересные пользователю темы, закладки, основную инфу о пользователе, портфолио пользователя, то есть список работ, список статей, отзывы с оценкой, составной контент, картинки, видео.   \r\nИмеет функцию наполнения профиля из Petrovich.Id и других предопределенных внешних источников  \r\n\r\n*Составные данных хранит в контент-менеджере!?*     \r\n*Наполнение профиля из внешних источников с авторизацией?*\r\n![](embed:PortfolioOnly)\r\n\r\n\r\n### Лента новостей (Feed)\r\nПолнофункциональный модуль ленты с персональной подборкой, который выводит посты групп и пользователей, на которые ты подписан, а так же посты на интересные тебе темы, отправляет персональные уведомления при появлении новых постов, отображает элементы из Петрович.Маркет и Петрович.Знает.     \r\n\r\n*Что такое рекомендация профиля и как она работает?*\r\n![](embed:FeedOnly)\r\n\r\n### Модуль Поиск. Для статей, постов, портфолио, вопросов и др. (Search)\r\nПоиск по проекту: Умный поиск по контенту на сайте (Статьям / постам и т.д.), по рубрикам, по вопросам и ответам, по портфолио и мастерам и т.д.    \r\n\r\n*Позже: поиск по объявлениям / вакансиям, по ключевым словам*   \r\n*Нужно ли объединение с поиском в других сервисах Петровича?*\r\n\r\n### Создание контента - статьи, посты, элементы портфолио, вопросы (Content)\r\nСоздание статьи/поста/сториса, Комментирование статьи/поста\r\nОценка статьи (лайк) Пожаловаться на публикацию. Элементы для портфолио. Элементы для вопросы и ответы. Использование AI для улучшения контента, а так же AI может искуственно создавать активность в разных разделах контента.\r\n#### **Ререндеринг и сжатие контента (Media transformer)**\r\nСервис загрузки контента. Ререндеринг и сжатие. Обработка изображений и видео.\r\n![](embed:ContentOnly)\r\n\r\n### Сервис уведомлений (Notification)\r\nУведомления внутри сервиса по разным типам событий из ленты, из модуля вопросов, от модератора контента и тд. Уведомления по email. Гибкая настройка уведомлений.\r\n\r\n### Общий многофункциональный API-модуль (Common)\r\nМои подписки и подписчики. Другие функции, которые не имеют отдельного модуля.  \r\n~~Предложить заказ~~    \r\n\r\n*Позже Предложить мероприятие*\r\n\r\n### Вопрос-ответ (QA)\r\nСоздание вопросов, просмотр ответов, пожаловаться на вопрос, самые обсуждаемые вопросы и т.д.   \r\n    \r\n*Определить, какая доп. функциональность этого модуля отличает его от контента?*\r\n\r\n### AI-помощник (AI)\r\nМодуль взаимодействия с AI, который имеет предопределенный список промптов. Необходим для улучшения портфолио и статей пользователей, автоматического создания активности в статьях, вопросах и тд.\r\n![](embed:AIOnly)\r\n\r\n## Внешние компоненты (External group)\r\n![](embed:ExternalContainers)\r\n\r\n### S3. Файловое хранилище (S3)\r\nхранение загруженного контента - картинки, видео, файлы\r\n\r\n### Петрович.Id (Petrovich.Id)\r\nВнешняя регистрация, аутентификация, авторизация\r\n\r\n### Петрович знает (Petrovich.Know)\r\nСервис который по тематикам выдает список материалов для ленты и других разделов\r\n\r\n### Петрович - Биржа профессионалов (Petrovich.ProfMarket)\r\nПредоставляет портфолио работ, услуги, цены, избранные мастера\r\n\r\n### Петрович - магазин (Petrovich.Market)\r\nМагазин строительных материалов\r\n\r\n### Внешние интеграции Я.Услуги, Профи.ру, Авито, VK  (External)\r\nКлиенты внешних систем служат для переноса данных из внешних сервисов парсингом или через апи после авторизации.\r\nИз источников: Я.Услуги Профи.ру Авито ВК TenChat. Синхронизация рейтинга и отзывов по кнопке/таймеру   \r\n\r\n*Будет ли авторизация во всех сервисах или где-то придется парсить Html?*\r\n\r\n### Связи внутренних сервисов с внешними\r\n![](embed:ExternalRelations)","filename":"description.md","format":"Markdown","order":1,"title":""}]},"id":4,"lastModifiedAgent":"structurizr-cli/","lastModifiedDate":"2025-05-30T10:27:26Z","lastModifiedUser":"root@e7ab14e0dcdb","model":{"softwareSystems":[{"containers":[{"description":"UI панели управления администратора","documentation":{},"group":"Internal Services","id":"2","name":"Admin Panel UI","properties":{"structurizr.dsl.identifier":"adminui"},"relationships":[{"description":":","destinationId":"6","id":"35","sourceId":"2","tags":"Relationship","technology":"Получение токенов"}],"tags":"Element,Container,Web_UI","technology":"React"},{"description":"UI cайта Петрович.Network","documentation":{},"group":"Internal Services","id":"3","name":"Petrovich.Network Web UI","properties":{"structurizr.dsl.identifier":"webui"},"relationships":[{"description":":","destinationId":"4","id":"36","sourceId":"3","tags":"Relationship","technology":"Запросы html и данных"}],"tags":"Element,Container,Web_UI","technology":"React"},{"description":"Server-рендеринг html, кэш и роутинг","documentation":{},"group":"Internal Services","id":"4","name":"SSR Web app","properties":{"structurizr.dsl.identifier":"ssrwebapp"},"relationships":[{"description":":","destinationId":"6","id":"37","sourceId":"4","tags":"Relationship","technology":"Получение токенов аутентификации"},{"description":":","destinationId":"8","id":"38","sourceId":"4","tags":"Relationship","technology":"Запрос данных для рендеринга"},{"description":":","destinationId":"9","id":"39","sourceId":"4","tags":"Relationship","technology":"Запрос данных для рендеринга"},{"description":":","destinationId":"11","id":"40","sourceId":"4","tags":"Relationship","technology":"Запрос данных для рендеринга"}],"tags":"Element,Container,Internal","technology":"NodeJs"},{"description":"API панели управления администратора","documentation":{},"group":"Internal Services","id":"5","name":"Admin Panel API","properties":{"structurizr.dsl.identifier":"admin"},"relationships":[{"description":":","destinationId":"11","id":"29","sourceId":"5","tags":"Relationship","technology":"Модерация контента"},{"description":":","destinationId":"16","id":"30","sourceId":"5","tags":"Relationship","technology":"Управление ИИ-активностью"},{"description":":","destinationId":"13","id":"31","sourceId":"5","tags":"Relationship","technology":"уведомления об изменении/удалении контента"}],"tags":"Element,Container,Internal","technology":"Spring Boot"},{"description":"Система авторизации и управления токенами","documentation":{},"group":"Internal Services","id":"6","name":"Identity System","properties":{"structurizr.dsl.identifier":"identity"},"relationships":[{"description":":","destinationId":"7","id":"33","sourceId":"6","tags":"Relationship","technology":"Получает данные пользователей"},{"description":":","destinationId":"17","id":"34","sourceId":"6","tags":"Relationship","technology":"Регистрация и аутентификация пользователей"}],"tags":"Element,Container,Internal","technology":"Keycloak"},{"description":"Система управления пользователями","documentation":{},"group":"Internal Services","id":"7","name":"User Profiles","properties":{"structurizr.dsl.identifier":"profile"},"relationships":[{"description":":","destinationId":"8","id":"32","sourceId":"7","tags":"Relationship","technology":"Обмен данными"}],"tags":"Element,Container,Internal","technology":"Spring Boot"},{"description":"Система управления портфолио пользователей","documentation":{},"group":"Internal Services","id":"8","name":"Portfolio","properties":{"structurizr.dsl.identifier":"portfolio"},"relationships":[{"description":":","destinationId":"23","id":"24","sourceId":"8","tags":"Relationship","technology":"Аутентификация, данные для портфолио"},{"description":":","destinationId":"16","id":"25","sourceId":"8","tags":"Relationship","technology":"Получает рекомендации"},{"description":":","destinationId":"19","id":"26","sourceId":"8","tags":"Relationship","technology":"Получает данные портфолио"},{"description":":","destinationId":"11","id":"27","sourceId":"8","tags":"Relationship","technology":"Загружает и Получает контент"},{"description":":","destinationId":"14","id":"28","sourceId":"8","tags":"Relationship","technology":"Получает подписки и подписчиков"}],"tags":"Element,Container,Internal","technology":"Spring Boot"},{"description":"Лента новостей и рекомендаций","documentation":{},"group":"Internal Services","id":"9","name":"News Feed","properties":{"structurizr.dsl.identifier":"feed"},"relationships":[{"description":":","destinationId":"8","id":"41","sourceId":"9","tags":"Relationship","technology":"Получает данные"},{"description":":","destinationId":"14","id":"42","sourceId":"9","tags":"Relationship","technology":"Получает подписки"},{"description":":","destinationId":"11","id":"43","sourceId":"9","tags":"Relationship","technology":"Получает контент"},{"description":":","destinationId":"13","id":"44","sourceId":"9","tags":"Relationship","technology":"Отправляет обновления"},{"description":":","destinationId":"18","id":"45","sourceId":"9","tags":"Relationship","technology":"Получает рекомендации"},{"description":":","destinationId":"20","id":"46","sourceId":"9","tags":"Relationship","technology":"Получает популярные товары"}],"tags":"Element,Container,Internal","technology":"Spring Boot"},{"description":"Поисковая система","documentation":{},"group":"Internal Services","id":"10","name":"Search","properties":{"structurizr.dsl.identifier":"search"},"relationships":[{"description":":","destinationId":"11","id":"47","sourceId":"10","tags":"Relationship","technology":"Поиск контента"},{"description":":","destinationId":"8","id":"48","sourceId":"10","tags":"Relationship","technology":"Поиск портфолио"},{"description":":","destinationId":"15","id":"49","sourceId":"10","tags":"Relationship","technology":"Поиск вопросов"}],"tags":"Element,Container,Internal","technology":"Spring Boot + Elasticsearch"},{"description":"Система управления контентом","documentation":{},"group":"Internal Services","id":"11","name":"Content Management","properties":{"structurizr.dsl.identifier":"content"},"relationships":[{"description":":","destinationId":"16","id":"50","sourceId":"11","tags":"Relationship","technology":"Получает рекомендации"},{"description":":","destinationId":"18","id":"51","sourceId":"11","tags":"Relationship","technology":"Получает тематики"},{"description":":","destinationId":"20","id":"52","sourceId":"11","tags":"Relationship","technology":"Получает товары"},{"description":":","destinationId":"22","id":"53","sourceId":"11","tags":"Relationship","technology":"Команды на сжатие и ререндеринг"}],"tags":"Element,Container,Internal","technology":"Spring Boot"},{"description":"Сжатие и ререндеринг контента","documentation":{},"group":"Internal Services","id":"12","name":"Media Transformer","properties":{"structurizr.dsl.identifier":"mediatransformer"},"relationships":[{"description":":","destinationId":"21","id":"55","sourceId":"12","tags":"Relationship","technology":"Загружает медиа-файлы"},{"description":":","destinationId":"11","id":"56","sourceId":"12","tags":"Relationship","technology":"Результаты сжатия и ререндеринга, ссылки"}],"tags":"Element,Container,Internal","technology":"Spring Boot"},{"description":"Система уведомлений","documentation":{},"group":"Internal Services","id":"13","name":"Notifications","properties":{"structurizr.dsl.identifier":"notification"},"tags":"Element,Container,Internal","technology":"Spring Boot + WebSockets"},{"description":"Общий API-модуль","documentation":{},"group":"Internal Services","id":"14","name":"Common API","properties":{"structurizr.dsl.identifier":"common"},"tags":"Element,Container,Internal","technology":"Spring Boot"},{"description":"Модуль вопросов и ответов","documentation":{},"group":"Internal Services","id":"15","name":"Q&A Module","properties":{"structurizr.dsl.identifier":"qa"},"relationships":[{"description":":","destinationId":"11","id":"57","sourceId":"15","tags":"Relationship","technology":"Создает контент для вопросов"},{"description":":","destinationId":"13","id":"58","sourceId":"15","tags":"Relationship","technology":"Уведомления об ответах"},{"description":":","destinationId":"18","id":"59","sourceId":"15","tags":"Relationship","technology":"Получает тематики"},{"description":":","destinationId":"16","id":"60","sourceId":"15","tags":"Relationship","technology":"Получает ИИ-ответы"}],"tags":"Element,Container,Internal","technology":"Spring Boot"},{"description":"Искусственный интеллект","documentation":{},"group":"Internal Services","id":"16","name":"AI Assistant","properties":{"structurizr.dsl.identifier":"ai"},"relationships":[{"description":":","destinationId":"11","id":"61","sourceId":"16","tags":"Relationship","technology":"Создает активность"}],"tags":"Element,Container,Internal","technology":"ML Models"},{"description":"Система идентификации Петрович","documentation":{},"id":"17","name":"Petrovich.Id","properties":{"structurizr.dsl.identifier":"petrid"},"tags":"Element,Container,External,PetrovichExternal","technology":"OAuth2 Provider"},{"description":"Система знаний Петрович","documentation":{},"id":"18","name":"Petrovich.Know","properties":{"structurizr.dsl.identifier":"petrknow"},"tags":"Element,Container,External,PetrovichExternal","technology":"Recommendation Engine"},{"description":"Биржа профессионалов","documentation":{},"id":"19","name":"Petrovich.ProfMarket","properties":{"structurizr.dsl.identifier":"petrprofmarket"},"tags":"Element,Container,External,PetrovichExternal","technology":"REST API"},{"description":"Магазин товаров","documentation":{},"id":"20","name":"Petrovich.Market","properties":{"structurizr.dsl.identifier":"petrmarket"},"tags":"Element,Container,External,PetrovichExternal","technology":"eCommerce API"},{"description":"Облачное хранилище","documentation":{},"id":"21","name":"S3 Storage","properties":{"structurizr.dsl.identifier":"s3"},"tags":"Element,Container,External","technology":"AWS S3"},{"description":"Брокер очередей","documentation":{},"id":"22","name":"RabbitMq","properties":{"structurizr.dsl.identifier":"rabbit"},"relationships":[{"description":":","destinationId":"12","id":"54","sourceId":"22","tags":"Relationship","technology":"Команды на сжатие и ререндеринг"}],"tags":"Element,Container,External","technology":"RabbitMq(AMQP)"},{"description":"Внешние интеграции","documentation":{},"id":"23","name":"External Integrations","properties":{"structurizr.dsl.identifier":"externalintegrations"},"tags":"Element,Container,External","technology":"Я.Услуги, Профи.ру, Авито, VK"}],"description":"Многофункциональная платформа для профессионалов","documentation":{},"id":"1","location":"Unspecified","name":"Petrovich Platform","properties":{"structurizr.dsl.identifier":"system"},"tags":"Element,Software System"}]},"name":"Petrovich.Network Architecture","properties":{"structurizr.dsl":"d29ya3NwYWNlICJQZXRyb3ZpY2guTmV0d29yayBBcmNoaXRlY3R1cmUiICLQodC+0YbQuNCw0LvRjNC90LDRjyDRgdC10YLRjCDQn9C10YLRgNC+0LLQuNGHLiDQkNGA0YXQuNGC0LXQutGC0YPRgNCwIiB7CiAgICAhZG9jcyBkb2NzCgogICAgbW9kZWwgewogICAgICAgIHN5c3RlbSA9IHNvZnR3YXJlU3lzdGVtICJQZXRyb3ZpY2ggUGxhdGZvcm0iICLQnNC90L7Qs9C+0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90LDRjyDQv9C70LDRgtGE0L7RgNC80LAg0LTQu9GPINC/0YDQvtGE0LXRgdGB0LjQvtC90LDQu9C+0LIiIHsKCiAgICAgICAgICAgIGludGVybmFsU2VydmljZXMgPSBncm91cCAiSW50ZXJuYWwgU2VydmljZXMiIHsKICAgICAgICAgICAgICAgIC8vINCS0L3Rg9GC0YDQtdC90L3QuNC1INC60L7QvdGC0LXQudC90LXRgNGLCiAgICAgICAgICAgICAgICBhZG1pblVJID0gY29udGFpbmVyICJBZG1pbiBQYW5lbCBVSSIgIlVJINC/0LDQvdC10LvQuCDRg9C/0YDQsNCy0LvQtdC90LjRjyDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNCwIiB7CiAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiUmVhY3QiCiAgICAgICAgICAgICAgICAgICAgdGFncyAiV2ViX1VJIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2ViVUkgPSBjb250YWluZXIgIlBldHJvdmljaC5OZXR3b3JrIFdlYiBVSSIgIlVJIGPQsNC50YLQsCDQn9C10YLRgNC+0LLQuNGHLk5ldHdvcmsiIHsKICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJSZWFjdCIKICAgICAgICAgICAgICAgICAgICB0YWdzICJXZWJfVUkiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzc3JXZWJBcHAgPSBjb250YWluZXIgIlNTUiBXZWIgYXBwIiAiU2VydmVyLdGA0LXQvdC00LXRgNC40L3QsyBodG1sLCDQutGN0Ygg0Lgg0YDQvtGD0YLQuNC90LMiIHsKICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJOb2RlSnMiCiAgICAgICAgICAgICAgICAgICAgdGFncyAiSW50ZXJuYWwiCiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgYWRtaW4gPSBjb250YWluZXIgIkFkbWluIFBhbmVsIEFQSSIgIkFQSSDQv9Cw0L3QtdC70Lgg0YPQv9GA0LDQstC70LXQvdC40Y8g0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDQsCIgewogICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIlNwcmluZyBCb290IgogICAgICAgICAgICAgICAgICAgIHRhZ3MgIkludGVybmFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWRlbnRpdHkgPSBjb250YWluZXIgIklkZW50aXR5IFN5c3RlbSIgItCh0LjRgdGC0LXQvNCwINCw0LLRgtC+0YDQuNC30LDRhtC40Lgg0Lgg0YPQv9GA0LDQstC70LXQvdC40Y8g0YLQvtC60LXQvdCw0LzQuCIgewogICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIktleWNsb2FrIgogICAgICAgICAgICAgICAgICAgIHRhZ3MgIkludGVybmFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHJvZmlsZSA9IGNvbnRhaW5lciAiVXNlciBQcm9maWxlcyIgItCh0LjRgdGC0LXQvNCwINGD0L/RgNCw0LLQu9C10L3QuNGPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRj9C80LgiIHsKICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJTcHJpbmcgQm9vdCIKICAgICAgICAgICAgICAgICAgICB0YWdzICJJbnRlcm5hbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBvcnRmb2xpbyA9IGNvbnRhaW5lciAiUG9ydGZvbGlvIiAi0KHQuNGB0YLQtdC80LAg0YPQv9GA0LDQstC70LXQvdC40Y8g0L/QvtGA0YLRhNC+0LvQuNC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5IiB7CiAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiU3ByaW5nIEJvb3QiCiAgICAgICAgICAgICAgICAgICAgdGFncyAiSW50ZXJuYWwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmZWVkID0gY29udGFpbmVyICJOZXdzIEZlZWQiICLQm9C10L3RgtCwINC90L7QstC+0YHRgtC10Lkg0Lgg0YDQtdC60L7QvNC10L3QtNCw0YbQuNC5IiB7CiAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiU3ByaW5nIEJvb3QiCiAgICAgICAgICAgICAgICAgICAgdGFncyAiSW50ZXJuYWwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZWFyY2ggPSBjb250YWluZXIgIlNlYXJjaCIgItCf0L7QuNGB0LrQvtCy0LDRjyDRgdC40YHRgtC10LzQsCIgewogICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIlNwcmluZyBCb290ICsgRWxhc3RpY3NlYXJjaCIKICAgICAgICAgICAgICAgICAgICB0YWdzICJJbnRlcm5hbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250YWluZXIgIkNvbnRlbnQgTWFuYWdlbWVudCIgItCh0LjRgdGC0LXQvNCwINGD0L/RgNCw0LLQu9C10L3QuNGPINC60L7QvdGC0LXQvdGC0L7QvCIgewogICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIlNwcmluZyBCb290IgogICAgICAgICAgICAgICAgICAgIHRhZ3MgIkludGVybmFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbWVkaWFUcmFuc2Zvcm1lciA9IGNvbnRhaW5lciAiTWVkaWEgVHJhbnNmb3JtZXIiICLQodC20LDRgtC40LUg0Lgg0YDQtdGA0LXQvdC00LXRgNC40L3QsyDQutC+0L3RgtC10L3RgtCwIiB7CiAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiU3ByaW5nIEJvb3QiCiAgICAgICAgICAgICAgICAgICAgdGFncyAiSW50ZXJuYWwiCiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uID0gY29udGFpbmVyICJOb3RpZmljYXRpb25zIiAi0KHQuNGB0YLQtdC80LAg0YPQstC10LTQvtC80LvQtdC90LjQuSIgewogICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIlNwcmluZyBCb290ICsgV2ViU29ja2V0cyIKICAgICAgICAgICAgICAgICAgICB0YWdzICJJbnRlcm5hbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbW1vbiA9IGNvbnRhaW5lciAiQ29tbW9uIEFQSSIgItCe0LHRidC40LkgQVBJLdC80L7QtNGD0LvRjCIgewogICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIlNwcmluZyBCb290IgogICAgICAgICAgICAgICAgICAgIHRhZ3MgIkludGVybmFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcWEgPSBjb250YWluZXIgIlEmQSBNb2R1bGUiICLQnNC+0LTRg9C70Ywg0LLQvtC/0YDQvtGB0L7QsiDQuCDQvtGC0LLQtdGC0L7QsiIgewogICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIlNwcmluZyBCb290IgogICAgICAgICAgICAgICAgICAgIHRhZ3MgIkludGVybmFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWkgPSBjb250YWluZXIgIkFJIEFzc2lzdGFudCIgItCY0YHQutGD0YHRgdGC0LLQtdC90L3Ri9C5INC40L3RgtC10LvQu9C10LrRgiIgewogICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIk1MIE1vZGVscyIKICAgICAgICAgICAgICAgICAgICB0YWdzICJJbnRlcm5hbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIC8vINCS0L3QtdGI0L3QuNC1INGB0LjRgdGC0LXQvNGLCiAgICAgICAgICAgIC8vcGV0cm92aWNoU2VydmljZXMgPSBncm91cCAiUGV0cm92aWNoIFNlcnZpY2VzIiB7CiAgICAgICAgICAgICAgICBwZXRySWQgPSBjb250YWluZXIgIlBldHJvdmljaC5JZCIgItCh0LjRgdGC0LXQvNCwINC40LTQtdC90YLQuNGE0LjQutCw0YbQuNC4INCf0LXRgtGA0L7QstC40YciIHsKICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJPQXV0aDIgUHJvdmlkZXIiCiAgICAgICAgICAgICAgICAgICAgdGFncyAiRXh0ZXJuYWwsIFBldHJvdmljaEV4dGVybmFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGV0cktub3cgPSBjb250YWluZXIgIlBldHJvdmljaC5Lbm93IiAi0KHQuNGB0YLQtdC80LAg0LfQvdCw0L3QuNC5INCf0LXRgtGA0L7QstC40YciIHsKICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJSZWNvbW1lbmRhdGlvbiBFbmdpbmUiCiAgICAgICAgICAgICAgICAgICAgdGFncyAiRXh0ZXJuYWwsIFBldHJvdmljaEV4dGVybmFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGV0clByb2ZNYXJrZXQgPSBjb250YWluZXIgIlBldHJvdmljaC5Qcm9mTWFya2V0IiAi0JHQuNGA0LbQsCDQv9GA0L7RhNC10YHRgdC40L7QvdCw0LvQvtCyIiB7CiAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiUkVTVCBBUEkiCiAgICAgICAgICAgICAgICAgICAgdGFncyAiRXh0ZXJuYWwsIFBldHJvdmljaEV4dGVybmFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGV0ck1hcmtldCA9IGNvbnRhaW5lciAiUGV0cm92aWNoLk1hcmtldCIgItCc0LDQs9Cw0LfQuNC9INGC0L7QstCw0YDQvtCyIiB7CiAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiZUNvbW1lcmNlIEFQSSIKICAgICAgICAgICAgICAgICAgICB0YWdzICJFeHRlcm5hbCwgUGV0cm92aWNoRXh0ZXJuYWwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIC8vfQogICAgICAgICAgICBzMyA9IGNvbnRhaW5lciAiUzMgU3RvcmFnZSIgItCe0LHQu9Cw0YfQvdC+0LUg0YXRgNCw0L3QuNC70LjRidC1IiB7CiAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJBV1MgUzMiCiAgICAgICAgICAgICAgICB0YWdzICJFeHRlcm5hbCIKICAgICAgICAgICAgfQogICAgICAgICAgICByYWJiaXQgPSBjb250YWluZXIgIlJhYmJpdE1xIiAi0JHRgNC+0LrQtdGAINC+0YfQtdGA0LXQtNC10LkiIHsKICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIlJhYmJpdE1xKEFNUVApIgogICAgICAgICAgICAgICAgdGFncyAiRXh0ZXJuYWwiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXh0ZXJuYWxJbnRlZ3JhdGlvbnMgPSBjb250YWluZXIgIkV4dGVybmFsIEludGVncmF0aW9ucyIgItCS0L3QtdGI0L3QuNC1INC40L3RgtC10LPRgNCw0YbQuNC4IiB7CiAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICLQry7Qo9GB0LvRg9Cz0LgsINCf0YDQvtGE0Lgu0YDRgywg0JDQstC40YLQviwgVksiCiAgICAgICAgICAgICAgICB0YWdzICJFeHRlcm5hbCIKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8g0KHQstGP0LfQuCDQvNC10LbQtNGDINC60L7QvdGC0LXQudC90LXRgNCw0LzQuAogICAgICAgIHBvcnRmb2xpbyAtPiBleHRlcm5hbEludGVncmF0aW9ucyA6ICLQkNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNGPLCDQtNCw0L3QvdGL0LUg0LTQu9GPINC/0L7RgNGC0YTQvtC70LjQviIKICAgICAgICBwb3J0Zm9saW8gLT4gYWkgOiAi0J/QvtC70YPRh9Cw0LXRgiDRgNC10LrQvtC80LXQvdC00LDRhtC40LgiCiAgICAgICAgcG9ydGZvbGlvIC0+IHBldHJQcm9mTWFya2V0IDogItCf0L7Qu9GD0YfQsNC10YIg0LTQsNC90L3Ri9C1INC/0L7RgNGC0YTQvtC70LjQviIKICAgICAgICBwb3J0Zm9saW8gLT4gY29udGVudCA6ICLQl9Cw0LPRgNGD0LbQsNC10YIg0Lgg0J/QvtC70YPRh9Cw0LXRgiDQutC+0L3RgtC10L3RgiIKICAgICAgICBwb3J0Zm9saW8gLT4gY29tbW9uIDogItCf0L7Qu9GD0YfQsNC10YIg0L/QvtC00L/QuNGB0LrQuCDQuCDQv9C+0LTQv9C40YHRh9C40LrQvtCyIiAgICAgICAgCgogICAgICAgIGFkbWluIC0+IGNvbnRlbnQgOiAi0JzQvtC00LXRgNCw0YbQuNGPINC60L7QvdGC0LXQvdGC0LAiCiAgICAgICAgYWRtaW4gLT4gYWkgOiAi0KPQv9GA0LDQstC70LXQvdC40LUg0JjQmC3QsNC60YLQuNCy0L3QvtGB0YLRjNGOIiAgICAgICAgCiAgICAgICAgYWRtaW4gLT4gbm90aWZpY2F0aW9uIDogItGD0LLQtdC00L7QvNC70LXQvdC40Y8g0L7QsSDQuNC30LzQtdC90LXQvdC40Lgv0YPQtNCw0LvQtdC90LjQuCDQutC+0L3RgtC10L3RgtCwIgogICAgICAgIAogICAgICAgIHByb2ZpbGUgLT4gcG9ydGZvbGlvIDogItCe0LHQvNC10L0g0LTQsNC90L3Ri9C80LgiCgogICAgICAgIGlkZW50aXR5IC0+IHByb2ZpbGUgOiAi0J/QvtC70YPRh9Cw0LXRgiDQtNCw0L3QvdGL0LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkiCiAgICAgICAgaWRlbnRpdHkgLT4gcGV0cklkIDogItCg0LXQs9C40YHRgtGA0LDRhtC40Y8g0Lgg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjRjyDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSIKICAgICAgICBhZG1pblVJIC0+IGlkZW50aXR5IDogItCf0L7Qu9GD0YfQtdC90LjQtSDRgtC+0LrQtdC90L7QsiIKICAgICAgICAKICAgICAgICB3ZWJVSSAtPiBzc3JXZWJBcHAgOiAi0JfQsNC/0YDQvtGB0YsgaHRtbCDQuCDQtNCw0L3QvdGL0YUiCiAgICAgICAgc3NyV2ViQXBwIC0+IGlkZW50aXR5IDogItCf0L7Qu9GD0YfQtdC90LjQtSDRgtC+0LrQtdC90L7QsiDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4IgogICAgICAgIHNzcldlYkFwcCAtPiBwb3J0Zm9saW8gOiAi0JfQsNC/0YDQvtGBINC00LDQvdC90YvRhSDQtNC70Y8g0YDQtdC90LTQtdGA0LjQvdCz0LAiCiAgICAgICAgc3NyV2ViQXBwIC0+IGZlZWQgOiAi0JfQsNC/0YDQvtGBINC00LDQvdC90YvRhSDQtNC70Y8g0YDQtdC90LTQtdGA0LjQvdCz0LAiCiAgICAgICAgc3NyV2ViQXBwIC0+IGNvbnRlbnQgOiAi0JfQsNC/0YDQvtGBINC00LDQvdC90YvRhSDQtNC70Y8g0YDQtdC90LTQtdGA0LjQvdCz0LAiICAgICAgICAKCiAgICAgICAgZmVlZCAtPiBwb3J0Zm9saW8gOiAi0J/QvtC70YPRh9Cw0LXRgiDQtNCw0L3QvdGL0LUiCiAgICAgICAgZmVlZCAtPiBjb21tb24gOiAi0J/QvtC70YPRh9Cw0LXRgiDQv9C+0LTQv9C40YHQutC4IgogICAgICAgIGZlZWQgLT4gY29udGVudCA6ICLQn9C+0LvRg9GH0LDQtdGCINC60L7QvdGC0LXQvdGCIgogICAgICAgIGZlZWQgLT4gbm90aWZpY2F0aW9uIDogItCe0YLQv9GA0LDQstC70Y/QtdGCINC+0LHQvdC+0LLQu9C10L3QuNGPIgogICAgICAgIGZlZWQgLT4gcGV0cktub3cgOiAi0J/QvtC70YPRh9Cw0LXRgiDRgNC10LrQvtC80LXQvdC00LDRhtC40LgiCiAgICAgICAgZmVlZCAtPiBwZXRyTWFya2V0IDogItCf0L7Qu9GD0YfQsNC10YIg0L/QvtC/0YPQu9GP0YDQvdGL0LUg0YLQvtCy0LDRgNGLIgoKICAgICAgICBzZWFyY2ggLT4gY29udGVudCA6ICLQn9C+0LjRgdC6INC60L7QvdGC0LXQvdGC0LAiCiAgICAgICAgc2VhcmNoIC0+IHBvcnRmb2xpbyA6ICLQn9C+0LjRgdC6INC/0L7RgNGC0YTQvtC70LjQviIKICAgICAgICBzZWFyY2ggLT4gcWEgOiAi0J/QvtC40YHQuiDQstC+0L/RgNC+0YHQvtCyIgoKICAgICAgICBjb250ZW50IC0+IGFpIDogItCf0L7Qu9GD0YfQsNC10YIg0YDQtdC60L7QvNC10L3QtNCw0YbQuNC4IgogICAgICAgIGNvbnRlbnQgLT4gcGV0cktub3cgOiAi0J/QvtC70YPRh9Cw0LXRgiDRgtC10LzQsNGC0LjQutC4IgogICAgICAgIGNvbnRlbnQgLT4gcGV0ck1hcmtldCA6ICLQn9C+0LvRg9GH0LDQtdGCINGC0L7QstCw0YDRiyIKICAgICAgICBjb250ZW50IC0+IHJhYmJpdCA6ICLQmtC+0LzQsNC90LTRiyDQvdCwINGB0LbQsNGC0LjQtSDQuCDRgNC10YDQtdC90LTQtdGA0LjQvdCzIgogICAgICAgIHJhYmJpdCAtPiBtZWRpYVRyYW5zZm9ybWVyIDogItCa0L7QvNCw0L3QtNGLINC90LAg0YHQttCw0YLQuNC1INC4INGA0LXRgNC10L3QtNC10YDQuNC90LMiICAgICAgICAgICAgICAKICAgICAgICBtZWRpYVRyYW5zZm9ybWVyIC0+IHMzIDogItCX0LDQs9GA0YPQttCw0LXRgiDQvNC10LTQuNCwLdGE0LDQudC70YsiIAogICAgICAgIG1lZGlhVHJhbnNmb3JtZXIgLT4gY29udGVudCA6ICLQoNC10LfRg9C70YzRgtCw0YLRiyDRgdC20LDRgtC40Y8g0Lgg0YDQtdGA0LXQvdC00LXRgNC40L3Qs9CwLCDRgdGB0YvQu9C60LgiICAgICAgIAoKICAgICAgICBxYSAtPiBjb250ZW50IDogItCh0L7Qt9C00LDQtdGCINC60L7QvdGC0LXQvdGCINC00LvRjyDQstC+0L/RgNC+0YHQvtCyIgogICAgICAgIHFhIC0+IG5vdGlmaWNhdGlvbiA6ICLQo9Cy0LXQtNC+0LzQu9C10L3QuNGPINC+0LEg0L7RgtCy0LXRgtCw0YUiCiAgICAgICAgcWEgLT4gcGV0cktub3cgOiAi0J/QvtC70YPRh9Cw0LXRgiDRgtC10LzQsNGC0LjQutC4IgogICAgICAgIHFhIC0+IGFpIDogItCf0L7Qu9GD0YfQsNC10YIg0JjQmC3QvtGC0LLQtdGC0YsiCgogICAgICAgIGFpIC0+IGNvbnRlbnQgOiAi0KHQvtC30LTQsNC10YIg0LDQutGC0LjQstC90L7RgdGC0YwiCiAgICB9CgogICAgdmlld3MgewogICAgICAgIGNvbnRhaW5lciBzeXN0ZW0gIkFsbENvbnRhaW5lcnMiICLQktGB0LUg0LrQvtC90YLQtdC50L3QtdGA0YsiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGF1dG9MYXlvdXQgbHIKICAgICAgICB9CgogICAgICAgIGNvbnRhaW5lciBzeXN0ZW0gIkludGVybmFsQ29udGFpbmVycyIgItCS0L3Rg9GC0YDQtdC90L3QuNC1INC60L7QvdGC0LXQudC90LXRgNGLIiB7CiAgICAgICAgICAgIGluY2x1ZGUgKgogICAgICAgICAgICBleGNsdWRlICJlbGVtZW50LnRhZz09RXh0ZXJuYWwiCiAgICAgICAgICAgIGF1dG9MYXlvdXQgbHIKICAgICAgICB9CgogICAgICAgIGNvbnRhaW5lciBzeXN0ZW0gIkV4dGVybmFsQ29udGFpbmVycyIgItCS0L3QtdGI0L3QuNC1INC60L7QvdGC0LXQudC90LXRgNGLIiB7ICAgICAgICAgICAgCiAgICAgICAgICAgIGluY2x1ZGUgImVsZW1lbnQudGFnPT1FeHRlcm5hbCIKICAgICAgICAgICAgYXV0b0xheW91dCB0YgogICAgICAgIH0KCiAgICAgICAgY29udGFpbmVyIHN5c3RlbSAiUG9ydGZvbGlvT25seSIgItCh0LLRj9C30Lgg0J/QvtGA0YLRhNC+0LvQuNC+IiB7CiAgICAgICAgICAgIGluY2x1ZGUgIi0+cG9ydGZvbGlvIgogICAgICAgICAgICBpbmNsdWRlICJwb3J0Zm9saW8tPiIKICAgICAgICAgICAgYXV0b0xheW91dCBscgogICAgICAgIH0KCiAgICAgICAgY29udGFpbmVyIHN5c3RlbSAiRmVlZE9ubHkiICLQodCy0Y/Qt9C4INCb0LXQvdGC0YsiIHsKICAgICAgICAgICAgaW5jbHVkZSAiLT5mZWVkIgogICAgICAgICAgICBpbmNsdWRlICJmZWVkLT4iCiAgICAgICAgICAgIGF1dG9MYXlvdXQgbHIKICAgICAgICB9CgogICAgICAgIGNvbnRhaW5lciBzeXN0ZW0gIkNvbnRlbnRPbmx5IiAi0KHQstGP0LfQuCDQmtC+0L3RgtC10L3RgtCwIiB7CiAgICAgICAgICAgIGluY2x1ZGUgIi0+Y29udGVudCIKICAgICAgICAgICAgaW5jbHVkZSAiY29udGVudC0+IgogICAgICAgICAgICBpbmNsdWRlICItPm1lZGlhVHJhbnNmb3JtZXIiCiAgICAgICAgICAgIGluY2x1ZGUgIm1lZGlhVHJhbnNmb3JtZXItPiIKICAgICAgICAgICAgYXV0b0xheW91dCBscgogICAgICAgIH0KCiAgICAgICAgY29udGFpbmVyIHN5c3RlbSAiQUlPbmx5IiAi0KHQstGP0LfQuCBBSS3Qv9C+0LzQvtGJ0L3QuNC60LAiIHsKICAgICAgICAgICAgaW5jbHVkZSAiLT5haSIKICAgICAgICAgICAgaW5jbHVkZSAiYWktPiIKICAgICAgICAgICAgYXV0b0xheW91dCBscgogICAgICAgIH0KCiAgICAgICAgY29udGFpbmVyIHN5c3RlbSAiSWRlbnRpdHlPbmx5IiAi0KHQstGP0LfQuCBJZGVudGl0eSIgewogICAgICAgICAgICBpbmNsdWRlICItPmlkZW50aXR5IgogICAgICAgICAgICBpbmNsdWRlICJpZGVudGl0eS0+IgogICAgICAgICAgICBpbmNsdWRlICItPnNzcldlYkFwcCIKICAgICAgICAgICAgYXV0b0xheW91dCBscgogICAgICAgIH0KCiAgICAgICAgY29udGFpbmVyIHN5c3RlbSAiRXh0ZXJuYWxSZWxhdGlvbnMiICLQodCy0Y/Qt9C4IGMg0JLQvdC10YjQvdC40LzQuCDRgdC10YDQstC40YHQsNC80LgiIHsKICAgICAgICAgICAgaW5jbHVkZSAiLT5lbGVtZW50LnRhZz09RXh0ZXJuYWwiCiAgICAgICAgICAgIGluY2x1ZGUgImVsZW1lbnQudGFnPT1FeHRlcm5hbC0+IgogICAgICAgICAgICBhdXRvTGF5b3V0IGxyCiAgICAgICAgfQoKICAgICAgICBzdHlsZXMgewogICAgICAgICAgICBlbGVtZW50ICJFbGVtZW50IiB7CiAgICAgICAgICAgICAgICBzaGFwZSBSb3VuZGVkQm94CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxlbWVudCAiV2ViX1VJIiB7CiAgICAgICAgICAgICAgICBzaGFwZSBXZWJCcm93c2VyCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxlbWVudCAiSW50ZXJuYWwiIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQgIzAwOTk2NgogICAgICAgICAgICAgICAgY29sb3IgI2ZmZmZmZgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQgIkV4dGVybmFsIiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kICMwMDY2OTkKICAgICAgICAgICAgICAgIGNvbG9yICNmZmZmZmYKICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtZW50ICJDb250YWluZXIiIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQgIzQzOGRkNQogICAgICAgICAgICAgICAgY29sb3IgI2ZmZmZmZgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQgIkNvbXBvbmVudCIgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZCAjODViYmYwCiAgICAgICAgICAgICAgICBjb2xvciAjMDAwMDAwCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxlbWVudCAiUGV0cm92aWNoRXh0ZXJuYWwiewogICAgICAgICAgICAgICAgYmFja2dyb3VuZCAjRjNDRjAyCiAgICAgICAgICAgICAgICBjb2xvciAjMDAwMDAwCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0="},"views":{"configuration":{"branding":{},"styles":{"elements":[{"shape":"RoundedBox","tag":"Element"},{"shape":"WebBrowser","tag":"Web_UI"},{"background":"#009966","color":"#ffffff","tag":"Internal"},{"background":"#006699","color":"#ffffff","tag":"External"},{"background":"#438dd5","color":"#ffffff","tag":"Container"},{"background":"#85bbf0","color":"#000000","tag":"Component"},{"background":"#f3cf02","color":"#000000","tag":"PetrovichExternal"}]},"terminology":{}},"containerViews":[{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Все контейнеры","elements":[{"id":"2","x":0,"y":0},{"id":"3","x":0,"y":0},{"id":"4","x":0,"y":0},{"id":"5","x":0,"y":0},{"id":"6","x":0,"y":0},{"id":"7","x":0,"y":0},{"id":"8","x":0,"y":0},{"id":"9","x":0,"y":0},{"id":"10","x":0,"y":0},{"id":"11","x":0,"y":0},{"id":"12","x":0,"y":0},{"id":"13","x":0,"y":0},{"id":"14","x":0,"y":0},{"id":"15","x":0,"y":0},{"id":"16","x":0,"y":0},{"id":"17","x":0,"y":0},{"id":"18","x":0,"y":0},{"id":"19","x":0,"y":0},{"id":"20","x":0,"y":0},{"id":"21","x":0,"y":0},{"id":"22","x":0,"y":0},{"id":"23","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"AllContainers","order":1,"relationships":[{"id":"24"},{"id":"25"},{"id":"26"},{"id":"27"},{"id":"28"},{"id":"29"},{"id":"30"},{"id":"31"},{"id":"32"},{"id":"33"},{"id":"34"},{"id":"35"},{"id":"36"},{"id":"37"},{"id":"38"},{"id":"39"},{"id":"40"},{"id":"41"},{"id":"42"},{"id":"43"},{"id":"44"},{"id":"45"},{"id":"46"},{"id":"47"},{"id":"48"},{"id":"49"},{"id":"50"},{"id":"51"},{"id":"52"},{"id":"53"},{"id":"54"},{"id":"55"},{"id":"56"},{"id":"57"},{"id":"58"},{"id":"59"},{"id":"60"},{"id":"61"}],"softwareSystemId":"1"},{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Внутренние контейнеры","elements":[{"id":"2","x":0,"y":0},{"id":"3","x":0,"y":0},{"id":"4","x":0,"y":0},{"id":"5","x":0,"y":0},{"id":"6","x":0,"y":0},{"id":"7","x":0,"y":0},{"id":"8","x":0,"y":0},{"id":"9","x":0,"y":0},{"id":"10","x":0,"y":0},{"id":"11","x":0,"y":0},{"id":"12","x":0,"y":0},{"id":"13","x":0,"y":0},{"id":"14","x":0,"y":0},{"id":"15","x":0,"y":0},{"id":"16","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"InternalContainers","order":2,"relationships":[{"id":"25"},{"id":"27"},{"id":"28"},{"id":"29"},{"id":"30"},{"id":"31"},{"id":"32"},{"id":"33"},{"id":"35"},{"id":"36"},{"id":"37"},{"id":"38"},{"id":"39"},{"id":"40"},{"id":"41"},{"id":"42"},{"id":"43"},{"id":"44"},{"id":"47"},{"id":"48"},{"id":"49"},{"id":"50"},{"id":"56"},{"id":"57"},{"id":"58"},{"id":"60"},{"id":"61"}],"softwareSystemId":"1"},{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"TopBottom","rankSeparation":300,"vertices":false},"description":"Внешние контейнеры","elements":[{"id":"17","x":0,"y":0},{"id":"18","x":0,"y":0},{"id":"19","x":0,"y":0},{"id":"20","x":0,"y":0},{"id":"21","x":0,"y":0},{"id":"22","x":0,"y":0},{"id":"23","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"ExternalContainers","order":3,"softwareSystemId":"1"},{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Связи Портфолио","elements":[{"id":"4","x":0,"y":0},{"id":"7","x":0,"y":0},{"id":"8","x":0,"y":0},{"id":"9","x":0,"y":0},{"id":"10","x":0,"y":0},{"id":"11","x":0,"y":0},{"id":"14","x":0,"y":0},{"id":"16","x":0,"y":0},{"id":"19","x":0,"y":0},{"id":"23","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"PortfolioOnly","order":4,"relationships":[{"id":"24"},{"id":"25"},{"id":"26"},{"id":"27"},{"id":"28"},{"id":"32"},{"id":"38"},{"id":"39"},{"id":"40"},{"id":"41"},{"id":"42"},{"id":"43"},{"id":"47"},{"id":"48"},{"id":"50"},{"id":"61"}],"softwareSystemId":"1"},{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Связи Ленты","elements":[{"id":"4","x":0,"y":0},{"id":"8","x":0,"y":0},{"id":"9","x":0,"y":0},{"id":"11","x":0,"y":0},{"id":"13","x":0,"y":0},{"id":"14","x":0,"y":0},{"id":"18","x":0,"y":0},{"id":"20","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"FeedOnly","order":5,"relationships":[{"id":"27"},{"id":"28"},{"id":"38"},{"id":"39"},{"id":"40"},{"id":"41"},{"id":"42"},{"id":"43"},{"id":"44"},{"id":"45"},{"id":"46"},{"id":"51"},{"id":"52"}],"softwareSystemId":"1"},{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Связи Контента","elements":[{"id":"4","x":0,"y":0},{"id":"5","x":0,"y":0},{"id":"8","x":0,"y":0},{"id":"9","x":0,"y":0},{"id":"10","x":0,"y":0},{"id":"11","x":0,"y":0},{"id":"12","x":0,"y":0},{"id":"15","x":0,"y":0},{"id":"16","x":0,"y":0},{"id":"18","x":0,"y":0},{"id":"20","x":0,"y":0},{"id":"21","x":0,"y":0},{"id":"22","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"ContentOnly","order":6,"relationships":[{"id":"25"},{"id":"27"},{"id":"29"},{"id":"30"},{"id":"38"},{"id":"39"},{"id":"40"},{"id":"41"},{"id":"43"},{"id":"45"},{"id":"46"},{"id":"47"},{"id":"48"},{"id":"49"},{"id":"50"},{"id":"51"},{"id":"52"},{"id":"53"},{"id":"54"},{"id":"55"},{"id":"56"},{"id":"57"},{"id":"59"},{"id":"60"},{"id":"61"}],"softwareSystemId":"1"},{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Связи AI-помощника","elements":[{"id":"5","x":0,"y":0},{"id":"8","x":0,"y":0},{"id":"11","x":0,"y":0},{"id":"15","x":0,"y":0},{"id":"16","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"AIOnly","order":7,"relationships":[{"id":"25"},{"id":"27"},{"id":"29"},{"id":"30"},{"id":"50"},{"id":"57"},{"id":"60"},{"id":"61"}],"softwareSystemId":"1"},{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Связи Identity","elements":[{"id":"2","x":0,"y":0},{"id":"3","x":0,"y":0},{"id":"4","x":0,"y":0},{"id":"6","x":0,"y":0},{"id":"7","x":0,"y":0},{"id":"17","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"IdentityOnly","order":8,"relationships":[{"id":"33"},{"id":"34"},{"id":"35"},{"id":"36"},{"id":"37"}],"softwareSystemId":"1"},{"automaticLayout":{"applied":false,"edgeSeparation":0,"implementation":"Graphviz","nodeSeparation":300,"rankDirection":"LeftRight","rankSeparation":300,"vertices":false},"description":"Связи c Внешними сервисами","elements":[{"id":"6","x":0,"y":0},{"id":"8","x":0,"y":0},{"id":"9","x":0,"y":0},{"id":"11","x":0,"y":0},{"id":"12","x":0,"y":0},{"id":"15","x":0,"y":0},{"id":"17","x":0,"y":0},{"id":"18","x":0,"y":0},{"id":"19","x":0,"y":0},{"id":"20","x":0,"y":0},{"id":"21","x":0,"y":0},{"id":"22","x":0,"y":0},{"id":"23","x":0,"y":0}],"externalSoftwareSystemBoundariesVisible":false,"key":"ExternalRelations","order":9,"relationships":[{"id":"24"},{"id":"26"},{"id":"27"},{"id":"34"},{"id":"41"},{"id":"43"},{"id":"45"},{"id":"46"},{"id":"51"},{"id":"52"},{"id":"53"},{"id":"54"},{"id":"55"},{"id":"56"},{"id":"57"},{"id":"59"}],"softwareSystemId":"1"}]}}