feat: add launcher frontend MVP
|
After Width: | Height: | Size: 11 MiB |
@@ -0,0 +1 @@
|
||||
<svg id="nodedc-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220.82 54.55"><defs><style>.cls-1{fill:#e2e1e1;}.cls-2{fill:#dbdbdb;stroke:#dbdbdb;stroke-miterlimit:10;stroke-width:0.75px;}</style></defs><path class="cls-1" d="M52.8,23.61,46.92,33.76,41.05,23.61H52.8m18-10.39H23.06L46.92,54.55Z"/><polygon class="cls-1" points="31.28 33.13 18.11 10.34 75.73 10.34 62.59 33.13 74.28 33.13 93.22 0 0 0 19.61 33.13 31.28 33.13"/><path class="cls-2" d="M116.35,18.49V1h1.27l10.34,15V1h1.33V18.49H128l-10.34-15v15Z"/><path class="cls-2" d="M140.43,18.64c-4.79,0-8.16-3.72-8.16-8.89S135.64.86,140.43.86s8.17,3.72,8.17,8.89S145.25,18.64,140.43,18.64Zm0-1.25c4,0,6.79-3.17,6.79-7.64s-2.77-7.64-6.79-7.64-6.77,3.17-6.77,7.64S136.44,17.39,140.43,17.39Z"/><path class="cls-2" d="M151.6,18.49V1h5.1c5.54,0,8.79,3.42,8.79,8.74s-3.25,8.74-8.79,8.74ZM153,17.24h3.75c4.77,0,7.42-2.92,7.42-7.49s-2.65-7.49-7.42-7.49H153Z"/><path class="cls-2" d="M168.49,1h10.77V2.26h-9.42V8.93h7.89v1.25h-7.89v7.06h9.74v1.25H168.49Z"/><path class="cls-2" d="M188.88,18.49V1H194c5.54,0,8.79,3.42,8.79,8.74s-3.25,8.74-8.79,8.74Zm1.35-1.25H194c4.77,0,7.41-2.92,7.41-7.49S198.75,2.26,194,2.26h-3.75Z"/><path class="cls-2" d="M205.15,9.75c0-5.24,3.19-8.89,8.11-8.89a6.8,6.8,0,0,1,7.1,5.52h-1.43a5.54,5.54,0,0,0-5.74-4.27c-4.05,0-6.64,3.17-6.64,7.64s2.54,7.64,6.59,7.64a5.46,5.46,0,0,0,5.74-4.29h1.43c-.75,3.52-3.4,5.54-7.15,5.54C208.27,18.64,205.15,15.05,205.15,9.75Z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,4 @@
|
||||
<svg id="nodedc-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 93.22 54.55">
|
||||
<path fill="#e2e1e1" d="M52.8 23.61 46.92 33.76 41.05 23.61H52.8m18-10.39H23.06l23.86 41.33Z"/>
|
||||
<polygon fill="#e2e1e1" points="31.28 33.13 18.11 10.34 75.73 10.34 62.59 33.13 74.28 33.13 93.22 0 0 0 19.61 33.13 31.28 33.13"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 322 B |
|
After Width: | Height: | Size: 11 MiB |
@@ -0,0 +1,567 @@
|
||||
{
|
||||
"clients": [
|
||||
{
|
||||
"id": "client_romashka",
|
||||
"type": "company",
|
||||
"name": "ООО Ромашка",
|
||||
"legalName": "ООО Ромашка",
|
||||
"status": "active",
|
||||
"demoEndsAt": null,
|
||||
"contactName": "Иван Петров",
|
||||
"contactEmail": "ivan@romashka.ru",
|
||||
"notes": "Основной demo-клиент для проверки Task Manager, NodeDC и deny-исключений.",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "client_roga_kopyta",
|
||||
"type": "company",
|
||||
"name": "ООО Рога и Копыта",
|
||||
"legalName": "ООО Рога и Копыта",
|
||||
"status": "demo",
|
||||
"demoEndsAt": "2026-06-01T00:00:00Z",
|
||||
"contactName": "Мария Иванова",
|
||||
"contactEmail": "maria@example.ru",
|
||||
"notes": "Клиент на демо-доступе, подключены только базовые сервисы.",
|
||||
"createdAt": "2026-04-10T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "client_private_architect",
|
||||
"type": "person",
|
||||
"name": "Илья Архитектор",
|
||||
"legalName": null,
|
||||
"status": "suspended",
|
||||
"demoEndsAt": "2026-04-20T00:00:00Z",
|
||||
"contactName": "Илья Архитектор",
|
||||
"contactEmail": "ilya@example.ru",
|
||||
"notes": "Пример приостановленного частного клиента.",
|
||||
"createdAt": "2026-03-14T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
}
|
||||
],
|
||||
"users": [
|
||||
{
|
||||
"id": "user_root",
|
||||
"authentikUserId": "ak-root",
|
||||
"name": "Root Admin",
|
||||
"email": "root@nodedc.local",
|
||||
"globalStatus": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "user_ivan",
|
||||
"authentikUserId": "ak-ivan",
|
||||
"name": "Иван Петров",
|
||||
"email": "ivan@romashka.ru",
|
||||
"globalStatus": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "user_vera",
|
||||
"authentikUserId": "ak-vera",
|
||||
"name": "Вера Соколова",
|
||||
"email": "vera@romashka.ru",
|
||||
"globalStatus": "active",
|
||||
"createdAt": "2026-04-02T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "user_vasya",
|
||||
"authentikUserId": "ak-vasya",
|
||||
"name": "Василий Орлов",
|
||||
"email": "vasya@romashka.ru",
|
||||
"globalStatus": "active",
|
||||
"createdAt": "2026-04-05T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "user_lena",
|
||||
"authentikUserId": "ak-lena",
|
||||
"name": "Лена Волкова",
|
||||
"email": "lena@romashka.ru",
|
||||
"globalStatus": "active",
|
||||
"createdAt": "2026-04-08T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "user_maria",
|
||||
"authentikUserId": "ak-maria",
|
||||
"name": "Мария Иванова",
|
||||
"email": "maria@example.ru",
|
||||
"globalStatus": "active",
|
||||
"createdAt": "2026-04-10T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "user_blocked",
|
||||
"authentikUserId": "ak-blocked",
|
||||
"name": "Олег Заблокирован",
|
||||
"email": "oleg@romashka.ru",
|
||||
"globalStatus": "blocked",
|
||||
"createdAt": "2026-04-12T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
}
|
||||
],
|
||||
"memberships": [
|
||||
{
|
||||
"id": "mem_ivan_romashka",
|
||||
"clientId": "client_romashka",
|
||||
"userId": "user_ivan",
|
||||
"role": "client_owner",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "mem_vera_romashka",
|
||||
"clientId": "client_romashka",
|
||||
"userId": "user_vera",
|
||||
"role": "client_admin",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "mem_vasya_romashka",
|
||||
"clientId": "client_romashka",
|
||||
"userId": "user_vasya",
|
||||
"role": "member",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "mem_lena_romashka",
|
||||
"clientId": "client_romashka",
|
||||
"userId": "user_lena",
|
||||
"role": "member",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "mem_blocked_romashka",
|
||||
"clientId": "client_romashka",
|
||||
"userId": "user_blocked",
|
||||
"role": "member",
|
||||
"status": "disabled",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "mem_maria_roga",
|
||||
"clientId": "client_roga_kopyta",
|
||||
"userId": "user_maria",
|
||||
"role": "client_owner",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "mem_ivan_roga",
|
||||
"clientId": "client_roga_kopyta",
|
||||
"userId": "user_ivan",
|
||||
"role": "client_admin",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"id": "group_romashka_leads",
|
||||
"clientId": "client_romashka",
|
||||
"name": "Руководство",
|
||||
"description": "Собственники и руководители клиента.",
|
||||
"memberIds": [
|
||||
"user_ivan",
|
||||
"user_vera"
|
||||
],
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "group_romashka_accounting",
|
||||
"clientId": "client_romashka",
|
||||
"name": "Бухгалтерия",
|
||||
"description": "1C и финансовые сценарии.",
|
||||
"memberIds": [
|
||||
"user_lena"
|
||||
],
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "group_romashka_ops",
|
||||
"clientId": "client_romashka",
|
||||
"name": "Операторы",
|
||||
"description": "Ежедневная работа в задачах и тендерах.",
|
||||
"memberIds": [
|
||||
"user_vasya",
|
||||
"user_lena"
|
||||
],
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "group_roga_demo",
|
||||
"clientId": "client_roga_kopyta",
|
||||
"name": "Демо-команда",
|
||||
"description": "Пилотный контур клиента.",
|
||||
"memberIds": [
|
||||
"user_maria",
|
||||
"user_ivan"
|
||||
],
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
}
|
||||
],
|
||||
"services": [
|
||||
{
|
||||
"id": "service_nodedc",
|
||||
"slug": "nodedc",
|
||||
"title": "NodeDC",
|
||||
"subtitle": "Агентная платформа",
|
||||
"description": "Сборка, запуск и мониторинг агентных workflow.",
|
||||
"fullDescription": "NodeDC используется для настройки агентных процессов, визуальной оркестрации, интеграций и runtime-мониторинга.",
|
||||
"url": "https://dev.handhdc.ru",
|
||||
"launchUrl": "https://dev.handhdc.ru/sso/launch",
|
||||
"accentColor": "#B5FF5A",
|
||||
"fallbackGradient": "linear-gradient(128deg, rgba(181, 255, 90, 0.84), rgba(37, 58, 36, 0.86) 42%, #0A0D10 82%)",
|
||||
"status": "active",
|
||||
"order": 10,
|
||||
"authentikApplicationSlug": "nodedc",
|
||||
"authentikGroupName": "service-nodedc",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T15:29:56.933Z",
|
||||
"coverImageUrl": "/storage/uploads/1777649382309-49d8c393-2026-05-01-17.31.21.jpg",
|
||||
"coverMediaKind": "image",
|
||||
"coverMediaSource": "file",
|
||||
"coverMediaFileName": "1777649382309-49d8c393-2026-05-01-17.31.21.jpg",
|
||||
"ambientVideoUrl": "/storage/uploads/1777649395844-a878de95-090aff247929335.69e6521716ea9.gif",
|
||||
"ambientMediaKind": "gif",
|
||||
"ambientMediaSource": "file",
|
||||
"ambientMediaFileName": "1777649395844-a878de95-090aff247929335.69e6521716ea9.gif"
|
||||
},
|
||||
{
|
||||
"id": "service_task_manager",
|
||||
"slug": "task-manager",
|
||||
"title": "Task Manager",
|
||||
"subtitle": "Операционный слой",
|
||||
"description": "Задачи, контуры предприятия, процессы и AI-функции поверх задачника.",
|
||||
"fullDescription": "Task Manager основан на архитектуре Plane и расширен AI-функциями NODE.DC.",
|
||||
"url": "https://tasks.handhdc.ru",
|
||||
"launchUrl": "https://tasks.handhdc.ru/sso/launch",
|
||||
"accentColor": "#D7C8FF",
|
||||
"fallbackGradient": "linear-gradient(132deg, rgba(215, 200, 255, 0.82), rgba(51, 41, 79, 0.9) 46%, #0B0D10 84%)",
|
||||
"status": "active",
|
||||
"order": 20,
|
||||
"authentikApplicationSlug": "task-manager",
|
||||
"authentikGroupName": "service-task-manager",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "service_1c",
|
||||
"slug": "1c-assistant",
|
||||
"title": "1C Assistant",
|
||||
"subtitle": "Бухгалтерский ассистент",
|
||||
"description": "Вопросы к 1С, точные выборки и доказательная навигация по данным.",
|
||||
"fullDescription": "Ассистент для бухгалтерских запросов, анализа операций, остатков и документов.",
|
||||
"url": "https://1c.handhdc.ru",
|
||||
"launchUrl": "https://1c.handhdc.ru/sso/launch",
|
||||
"accentColor": "#8FD7FF",
|
||||
"fallbackGradient": "linear-gradient(126deg, rgba(143, 215, 255, 0.8), rgba(32, 61, 80, 0.9) 44%, #080B0F 84%)",
|
||||
"status": "maintenance",
|
||||
"order": 30,
|
||||
"authentikApplicationSlug": "1c-assistant",
|
||||
"authentikGroupName": "service-1c-assistant",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "service_tender",
|
||||
"slug": "tender-agent",
|
||||
"title": "Tender Agent",
|
||||
"subtitle": "Госзакупки и тендеры",
|
||||
"description": "Поиск, анализ и подготовка тендерных решений.",
|
||||
"fullDescription": "Сервис собирает тендерные данные, строит выжимку рисков и помогает подготовить пакет участия.",
|
||||
"url": "https://tender.handhdc.ru",
|
||||
"launchUrl": "https://tender.handhdc.ru/sso/launch",
|
||||
"accentColor": "#FFD166",
|
||||
"fallbackGradient": "linear-gradient(135deg, rgba(255, 209, 102, 0.84), rgba(74, 53, 19, 0.92) 42%, #0B0D10 86%)",
|
||||
"status": "active",
|
||||
"order": 40,
|
||||
"authentikApplicationSlug": "tender-agent",
|
||||
"authentikGroupName": "service-tender-agent",
|
||||
"createdAt": "2026-04-03T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T15:37:01.591Z",
|
||||
"coverImageUrl": "/storage/uploads/1777649809136-7935fb4d-2026-05-01-18.36.20.jpg",
|
||||
"coverMediaKind": "image",
|
||||
"coverMediaSource": "file",
|
||||
"coverMediaFileName": "1777649809136-7935fb4d-2026-05-01-18.36.20.jpg"
|
||||
},
|
||||
{
|
||||
"id": "service_digital_twin",
|
||||
"slug": "digital-twin",
|
||||
"title": "Digital Twin",
|
||||
"subtitle": "3D и пространственные данные",
|
||||
"description": "Просмотр цифровых двойников, карт и объектных сцен.",
|
||||
"fullDescription": "Витрина геометрии, объектов, слоёв и статусов инфраструктуры.",
|
||||
"url": "https://twin.handhdc.ru",
|
||||
"launchUrl": "https://twin.handhdc.ru/sso/launch",
|
||||
"accentColor": "#76E4F7",
|
||||
"fallbackGradient": "linear-gradient(140deg, rgba(118, 228, 247, 0.82), rgba(23, 69, 87, 0.92) 47%, #080B0F 86%)",
|
||||
"status": "active",
|
||||
"order": 50,
|
||||
"authentikApplicationSlug": "digital-twin",
|
||||
"authentikGroupName": "service-digital-twin",
|
||||
"createdAt": "2026-04-05T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "service_dm",
|
||||
"slug": "digital-modules",
|
||||
"title": "Digital Modules",
|
||||
"subtitle": "Будущие модули",
|
||||
"description": "Скрытый каталог модулей для root-admin preview.",
|
||||
"fullDescription": "Площадка для будущих цифровых модулей NODE.DC.",
|
||||
"url": "https://dm.handhdc.ru",
|
||||
"launchUrl": "https://dm.handhdc.ru/sso/launch",
|
||||
"accentColor": "#FF9AC2",
|
||||
"fallbackGradient": "linear-gradient(135deg, rgba(255, 154, 194, 0.78), rgba(76, 41, 64, 0.9) 44%, #090B0F 86%)",
|
||||
"status": "hidden",
|
||||
"order": 60,
|
||||
"authentikApplicationSlug": "digital-modules",
|
||||
"authentikGroupName": "service-digital-modules",
|
||||
"createdAt": "2026-04-10T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "service_internal",
|
||||
"slug": "internal-tools",
|
||||
"title": "Internal Tools",
|
||||
"subtitle": "Внутренний контур",
|
||||
"description": "Отключённый сервис для проверки диагностики root-admin.",
|
||||
"fullDescription": "Не показывается обычным пользователям, виден root-admin в каталоге.",
|
||||
"url": "https://internal.handhdc.ru",
|
||||
"launchUrl": null,
|
||||
"accentColor": "#F97373",
|
||||
"fallbackGradient": "linear-gradient(135deg, rgba(249, 115, 115, 0.78), rgba(73, 32, 32, 0.92) 43%, #090B0F 86%)",
|
||||
"status": "disabled",
|
||||
"order": 70,
|
||||
"authentikApplicationSlug": "internal-tools",
|
||||
"authentikGroupName": "service-internal-tools",
|
||||
"createdAt": "2026-04-12T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
}
|
||||
],
|
||||
"grants": [
|
||||
{
|
||||
"id": "grant_romashka_task",
|
||||
"serviceId": "service_task_manager",
|
||||
"targetType": "client",
|
||||
"targetId": "client_romashka",
|
||||
"appRole": "member",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "grant_romashka_nodedc_leads",
|
||||
"serviceId": "service_nodedc",
|
||||
"targetType": "group",
|
||||
"targetId": "group_romashka_leads",
|
||||
"appRole": "admin",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "grant_romashka_1c_accounting",
|
||||
"serviceId": "service_1c",
|
||||
"targetType": "group",
|
||||
"targetId": "group_romashka_accounting",
|
||||
"appRole": "member",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "grant_romashka_tender_ops",
|
||||
"serviceId": "service_tender",
|
||||
"targetType": "group",
|
||||
"targetId": "group_romashka_ops",
|
||||
"appRole": "viewer",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "grant_romashka_twin_vasya",
|
||||
"serviceId": "service_digital_twin",
|
||||
"targetType": "user",
|
||||
"targetId": "user_vasya",
|
||||
"appRole": "viewer",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "grant_roga_task",
|
||||
"serviceId": "service_task_manager",
|
||||
"targetType": "client",
|
||||
"targetId": "client_roga_kopyta",
|
||||
"appRole": "member",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "grant_roga_nodedc",
|
||||
"serviceId": "service_nodedc",
|
||||
"targetType": "client",
|
||||
"targetId": "client_roga_kopyta",
|
||||
"appRole": "viewer",
|
||||
"status": "active",
|
||||
"createdAt": "2026-04-01T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
}
|
||||
],
|
||||
"exceptions": [
|
||||
{
|
||||
"id": "exception_lena_task_deny",
|
||||
"serviceId": "service_task_manager",
|
||||
"userId": "user_lena",
|
||||
"type": "deny",
|
||||
"reason": "Индивидуально отключён Task Manager на период ревизии доступа.",
|
||||
"createdAt": "2026-04-28T10:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
}
|
||||
],
|
||||
"invites": [
|
||||
{
|
||||
"id": "invite_romashka_analyst",
|
||||
"clientId": "client_romashka",
|
||||
"email": "analyst@romashka.ru",
|
||||
"role": "member",
|
||||
"invitedByUserId": "user_ivan",
|
||||
"token": "romashka-analyst-demo",
|
||||
"expiresAt": "2026-05-15T12:00:00Z",
|
||||
"status": "sent",
|
||||
"createdAt": "2026-04-30T12:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "invite_roga_admin",
|
||||
"clientId": "client_roga_kopyta",
|
||||
"email": "ops@example.ru",
|
||||
"role": "client_admin",
|
||||
"invitedByUserId": "user_maria",
|
||||
"token": "roga-admin-demo",
|
||||
"expiresAt": "2026-05-18T12:00:00Z",
|
||||
"status": "created",
|
||||
"createdAt": "2026-04-30T14:00:00Z",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
}
|
||||
],
|
||||
"syncStatuses": [
|
||||
{
|
||||
"id": "sync_romashka_auth",
|
||||
"objectId": "client_romashka",
|
||||
"objectName": "ООО Ромашка",
|
||||
"objectType": "client",
|
||||
"target": "authentik",
|
||||
"state": "synced",
|
||||
"lastSyncAt": "2026-05-01T08:00:00Z",
|
||||
"error": null,
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "sync_task_auth",
|
||||
"objectId": "service_task_manager",
|
||||
"objectName": "Task Manager",
|
||||
"objectType": "service",
|
||||
"target": "authentik",
|
||||
"state": "synced",
|
||||
"lastSyncAt": "2026-05-01T08:00:00Z",
|
||||
"error": null,
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "sync_lena_task",
|
||||
"objectId": "exception_lena_task_deny",
|
||||
"objectName": "Deny: Лена / Task Manager",
|
||||
"objectType": "grant",
|
||||
"target": "task_manager",
|
||||
"state": "pending",
|
||||
"lastSyncAt": null,
|
||||
"error": null,
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": "sync_roga_nodedc",
|
||||
"objectId": "client_roga_kopyta",
|
||||
"objectName": "ООО Рога и Копыта",
|
||||
"objectType": "client",
|
||||
"target": "nodedc",
|
||||
"state": "error",
|
||||
"lastSyncAt": "2026-05-01T08:00:00Z",
|
||||
"error": "OIDC binding ещё не создан для demo-клиента.",
|
||||
"updatedAt": "2026-05-01T09:00:00Z"
|
||||
}
|
||||
],
|
||||
"auditEvents": [
|
||||
{
|
||||
"id": "audit_1",
|
||||
"at": "2026-05-01T08:40:00Z",
|
||||
"actorUserId": "user_root",
|
||||
"actorName": "Root Admin",
|
||||
"action": "Создан сервис",
|
||||
"objectType": "service",
|
||||
"objectName": "Digital Modules",
|
||||
"clientId": "client_romashka",
|
||||
"result": "success",
|
||||
"details": null
|
||||
},
|
||||
{
|
||||
"id": "audit_2",
|
||||
"at": "2026-05-01T08:20:00Z",
|
||||
"actorUserId": "user_ivan",
|
||||
"actorName": "Иван Петров",
|
||||
"action": "Создан invite",
|
||||
"objectType": "invite",
|
||||
"objectName": "analyst@romashka.ru",
|
||||
"clientId": "client_romashka",
|
||||
"result": "success",
|
||||
"details": "Срок действия до 15.05.2026"
|
||||
},
|
||||
{
|
||||
"id": "audit_3",
|
||||
"at": "2026-04-30T17:10:00Z",
|
||||
"actorUserId": "user_root",
|
||||
"actorName": "Root Admin",
|
||||
"action": "Создано deny-исключение",
|
||||
"objectType": "access",
|
||||
"objectName": "Лена / Task Manager",
|
||||
"clientId": "client_romashka",
|
||||
"result": "warning",
|
||||
"details": "Индивидуальное правило перекрыло client grant."
|
||||
},
|
||||
{
|
||||
"id": "audit_4",
|
||||
"at": "2026-04-30T16:00:00Z",
|
||||
"actorUserId": "user_root",
|
||||
"actorName": "Root Admin",
|
||||
"action": "Ошибка синхронизации",
|
||||
"objectType": "sync",
|
||||
"objectName": "ООО Рога и Копыта / NodeDC",
|
||||
"clientId": "client_romashka",
|
||||
"result": "error",
|
||||
"details": "Нет application binding."
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 13 MiB |
|
After Width: | Height: | Size: 66 KiB |