NODEDC_LAUNCHER/public/storage/launcher-data.json

580 lines
20 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"clients": [
{
"id": "client_romashka",
"type": "company",
"name": "DCTOUCH",
"legalName": "ООО ДИСИТАЧ",
"status": "active",
"demoEndsAt": null,
"contactName": "Иван Петров",
"contactEmail": "suppert@dctouch.ru",
"notes": "Основной demo-клиент для проверки Task Manager, NodeDC и deny-исключений.",
"createdAt": "2026-04-01T10:00:00Z",
"updatedAt": "2026-05-01T18:49:19.215Z"
},
{
"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-01T18:49:59.865Z"
}
],
"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-01T17:59:10.713Z",
"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-01T17:59:10.713Z",
"coverImageUrl": "/storage/uploads/1777652545129-cf547e17-NODEDC_TASK.png",
"coverMediaKind": "image",
"coverMediaSource": "file",
"coverMediaFileName": "1777652545129-cf547e17-NODEDC_TASK.png"
},
{
"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": 40,
"authentikApplicationSlug": "1c-assistant",
"authentikGroupName": "service-1c-assistant",
"createdAt": "2026-04-01T10:00:00Z",
"updatedAt": "2026-05-01T17:59:10.713Z",
"coverImageUrl": "/storage/uploads/1777657277366-a9886413-LLM_MANAGER.png",
"coverMediaKind": "image",
"coverMediaSource": "file",
"coverMediaFileName": "1777657277366-a9886413-LLM_MANAGER.png"
},
{
"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": 30,
"authentikApplicationSlug": "tender-agent",
"authentikGroupName": "service-tender-agent",
"createdAt": "2026-04-03T10:00:00Z",
"updatedAt": "2026-05-01T17:59:10.713Z",
"coverImageUrl": "/storage/uploads/1777652810531-1f17b7ed-LAP_PURP4k.jpg",
"coverMediaKind": "image",
"coverMediaSource": "file",
"coverMediaFileName": "1777652810531-1f17b7ed-LAP_PURP4k.jpg",
"ambientVideoUrl": "/storage/uploads/1777652817155-199c5e6c-090aff247929335.69e6521716ea9.gif",
"ambientMediaKind": "gif",
"ambientMediaSource": "file",
"ambientMediaFileName": "1777652817155-199c5e6c-090aff247929335.69e6521716ea9.gif"
},
{
"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-01T17:59:10.713Z"
},
{
"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-01T17:59:10.713Z"
},
{
"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-01T17:59:10.713Z"
}
],
"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."
}
]
}