Skip to main content

Мультипроектная поддержка

Настройки платформы

Платформа Стрикс позволяет управлять десятками промышленных объектов в единой системе. Каждый проект (завод, площадка, установка) изолирован через механизм IRI-пространств имён и управляется независимо.

Что такое проект

Проект в Стрикс -- это совокупность AAS-оболочек (shells) и субмоделей, объединённых общим IRI-пространством имён (namespace). Один проект = одна производственная площадка.

КомпонентОписаниеПример
IRI namespaceКорневой идентификатор проектаhttps://polyus.com/nzif
Facility shellКорневая AAS-оболочка предприятияhttps://polyus.com/nzif/aas/facility/nzif
ProjectInfoСубмодель с метаданными проектаНазвание, контакты, ссылки
StoragePolicyСубмодель с политикой храненияRetention, throttling
ОборудованиеAAS-оболочки area/group/equipmentИерархия по parentId
info

Все AAS-оболочки одного проекта имеют IRI, начинающийся с одного namespace. Например, для проекта НЗИФ все идентификаторы начинаются с https://polyus.com/nzif/.... Это позволяет платформе автоматически определять принадлежность оболочки к проекту.

Автоматическое обнаружение проектов

При загрузке данных из BaSyx платформа анализирует IRI всех AAS-оболочек и группирует их по пространствам имён. Обнаружение выполняется по регулярному выражению:

shell.id.match(/^(https?:\/\/.+?)\/(?:aas|sm|asset)\//)

Результат -- список уникальных namespace, каждый из которых становится проектом в интерфейсе. Никакой ручной настройки не требуется: загрузите данные в BaSyx -- проект появится автоматически.

Механизм фильтрации

Фильтрация реализована через Pinia-хранилища:

КомпонентНазначение
configStore.activeNamespaceТекущий выбранный namespace (persisted в localStorage)
shellsStore.detectedProjectsВычисляемое свойство: автообнаружение namespace из shell IDs
shellsStore.filteredShellsОболочки, отфильтрованные по activeNamespace
submodelsStore.filteredSubmodelsСубмодели, отфильтрованные по activeNamespace

Переключатель проектов

В боковой панели (sidebar) расположен выпадающий список проектов. При выборе проекта фильтруются все представления: дашборд, дерево, таблица, диаграмма, SCADA-мнемосхемы.

tip

Выбранный проект сохраняется в localStorage. При следующем входе пользователь сразу видит свой рабочий проект без необходимости повторного выбора.

ProjectInfo -- метаданные проекта

Субмодель ProjectInfo (семантический ID: https://liman-tech.ru/sm/ProjectInfo/1/0) размещается на facility-оболочке и содержит метаданные проекта.

Секция General

СвойствоОписаниеПример
ProjectNameНазвание проектаНаталкинская ЗИФ
EnterpriseПредприятие-владелецАО «Полюс Магадан»
LocationМестоположениеМагаданская обл., Тенькинский р-н
CommissioningДата ввода в эксплуатацию2021

Секция ExternalSystems

СистемаНазначениеПример URL
YouTrackУправление задачамиhttps://yt.liman-tech.ru/project/STX2
OdooУчёт оборудования, ТОиРhttps://odoo.liman-tech.ru
GitLabРепозиторий конфигурацииhttps://cvs.liman-tech.ru/liman/...
OutlineБаза знанийhttps://wiki.liman-tech.ru/...
RedmineУправление проектами--

Секция Contacts

Контактные лица проекта: главный инженер, технолог, ответственный за АСУ ТП.

Секция MqttConfig

Настройки MQTT-подключения для проекта: адрес брокера, корневой топик, формат payload.

Действующие проекты

На продуктивном экземпляре платформы развёрнуто 10 проектов (~600+ AAS-оболочек):

ПроектNamespaceShellsОписание
НЗИФhttps://polyus.com/nzif122Наталкинская ЗИФ: измельчение, флотация, гравитация
ЗИФ-1,2,3https://polyus.com/zif12356Три подзавода: ЗИФ-1, ЗИФ-2, ЗИФ-3
ЗИФ-1https://liman-tech.ru/projects/zif119ЗИФ-1 отдельно
ЗИФ-2https://liman-tech.ru/projects/zif219ЗИФ-2 отдельно
ЗИФ-3https://liman-tech.ru/projects/zif323ЗИФ-3 отдельно
ЗИФ-5https://liman-tech.ru/projects/zif526Измельчение и флотация
КИНЕФhttps://liman-tech.ru/kinef109Парекс-1: мониторинг насосных агрегатов
ИРСhttps://liman-tech.ru/irs200IoT-инфраструктура: контроллеры, датчики
ГПН Темпhttps://liman-tech.ru/projects/gpn-temp10Мониторинг температуры насосов
ЛИМАНhttps://liman-tech.ru/biz171Каталог продукции ГК «Лиман»

Управление доступом (RBAC)

Платформа использует Keycloak для управления доступом с ролями на уровне проекта:

РольФорматПрава
Просмотр{project}-viewerЧтение дашбордов, дерева, таблиц, телеметрии
Редактирование{project}-editorПросмотр + редактирование параметров, настроек
Администратор{project}-adminРедактирование + управление пользователями проекта
Платформаplatform-adminПолный доступ ко всем проектам

Пользователь видит в переключателе проектов только те проекты, к которым у него есть доступ. API-запросы к данным недоступных проектов блокируются на уровне API Gateway.

Добавление нового проекта

  1. Подготовьте данные -- создайте директорию projects/{NAME}/ с файлами:

    • project.json -- IRI base, название, предприятие
    • hierarchy.json -- структура участков и групп
    • equipment.json -- перечень оборудования с параметрами
  2. Загрузите в BaSyx:

    python aas_loader/loader.py --project NAME --target https://aas.liman-tech.ru
  3. Проверьте -- откройте Стрикс, новый проект появится в переключателе автоматически

  4. Настройте доступ -- создайте роли {name}-viewer / {name}-editor в Keycloak

tip

Шаблоны оборудования (equipment_types.json) содержат готовые определения для распространённых типов промышленного оборудования. При наличии подходящего шаблона достаточно указать тип -- параметры, единицы измерения и переводы подставятся автоматически.

Масштабируемость

ПараметрТекущее значениеПредел
Проектов10100+
AAS-оболочек600+10 000+
Субмоделей1 800+30 000+
Одновременных пользователей20200+

При росте нагрузки возможно горизонтальное масштабирование: отдельный экземпляр BaSyx для крупных проектов с агрегацией через API Gateway.