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

Платформа Стрикс позволяет управлять десятками промышленных объектов в единой системе. Каждый проект (завод, площадка, установка) изолирован через механизм 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 |
Все 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-мнемосхемы.
Выбранный проект сохраняется в 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-оболочек):
| Проект | Namespace | Shells | Описание |
|---|---|---|---|
| НЗИФ | https://polyus.com/nzif | 122 | Наталкинская ЗИФ: измельчение, флотация, гравитация |
| ЗИФ-1,2,3 | https://polyus.com/zif123 | 56 | Три подзавода: ЗИФ-1, ЗИФ-2, ЗИФ-3 |
| ЗИФ-1 | https://liman-tech.ru/projects/zif1 | 19 | ЗИФ-1 отдельно |
| ЗИФ-2 | https://liman-tech.ru/projects/zif2 | 19 | ЗИФ-2 отдельно |
| ЗИФ-3 | https://liman-tech.ru/projects/zif3 | 23 | ЗИФ-3 отдельно |
| ЗИФ-5 | https://liman-tech.ru/projects/zif5 | 26 | Измельчение и флотация |
| КИНЕФ | https://liman-tech.ru/kinef | 109 | Парекс-1: мониторинг насосных агрегатов |
| ИРС | https://liman-tech.ru/irs | 200 | IoT-инфраструктура: ко нтроллеры, датчики |
| ГПН Темп | https://liman-tech.ru/projects/gpn-temp | 10 | Мониторинг температуры насосов |
| ЛИМАН | https://liman-tech.ru/biz | 171 | Каталог продукции ГК «Лиман» |
Управление доступом (RBAC)
Платформа использует Keycloak для управления доступом с ролями на уровне проекта:
| Роль | Формат | Права |
|---|---|---|
| Просмотр | {project}-viewer | Чтение дашбордов, дерева, таблиц, телеметрии |
| Редактирование | {project}-editor | Просмотр + редактирование параметров, настроек |
| Администратор | {project}-admin | Редактирование + управление пользователями проекта |
| Платформа | platform-admin | Полный доступ ко всем проектам |
Пользователь видит в переключателе проектов только те проекты, к которым у него есть доступ. API-запросы к данным недоступных проектов блокируются на уровне API Gateway.
Добавление нового проекта
-
Подготовьте данные -- создайте директорию
projects/{NAME}/с файлами:project.json-- IRI base, название, предприятиеhierarchy.json-- структура участков и группequipment.json-- перечень оборудования с параметрами
-
Загрузите в BaSyx:
python aas_loader/loader.py --project NAME --target https://aas.liman-tech.ru -
Проверьте -- откройте Стрикс, новый проект появится в переключателе автоматически
-
Настройте доступ -- создайте роли
{name}-viewer/{name}-editorв Keycloak
Шаблоны оборудования (equipment_types.json) содержат готовые определения для распространённых типов промышленного оборудования. При наличии подходящего шаблона достаточно указать тип -- параметры, единицы измерения и переводы подставятся автоматически.
Масштабируемость
| Парамет р | Текущее значение | Предел |
|---|---|---|
| Проектов | 10 | 100+ |
| AAS-оболочек | 600+ | 10 000+ |
| Субмоделей | 1 800+ | 30 000+ |
| Одновременных пользователей | 20 | 200+ |
При росте нагрузки возможно горизонтальное масштабирование: отдельный экземпляр BaSyx для крупных проектов с агрегацией через API Gateway.