feat: vendors seeding script

This commit is contained in:
Zotov Ivan Yuryevich
2026-04-16 22:01:47 +03:00
parent e88775a863
commit 173708addb
21 changed files with 413 additions and 13 deletions

View File

@@ -15,7 +15,8 @@
"graphql:generate": "graphql-codegen",
"graphql:schema": "graphql-codegen -p introspect",
"endpoint:generate": "node scripts/endpoint-generate.mjs",
"seed:categories": "node scripts/seed-strapi-categories.mjs"
"seed:categories": "node scripts/seed-strapi-categories.mjs",
"seed:vendors": "node scripts/seed-strapi-vendors.mjs"
},
"dependencies": {
"@astrojs/react": "^4.4.2",

View File

@@ -18,6 +18,7 @@ const token =
process.env.STRAPI_TOKEN ??
process.env.STRAPI_API_TOKEN ??
process.env.AUTH_TOKEN;
const isDryRun = process.argv.includes("--dry-run");
function readCategorySource(slug) {
const filePath = path.join(categoriesDir, `${slug}.json`);
@@ -113,7 +114,7 @@ async function createCategory(input) {
return data?.createCategory;
}
async function seedCategories(slugs) {
async function seedCategories(slugs, dryRun = false) {
let createdCount = 0;
let skippedCount = 0;
@@ -133,24 +134,22 @@ async function seedCategories(slugs) {
continue;
}
const created = await createCategory({
slug,
title,
description,
group,
});
if (dryRun) {
createdCount += 1;
console.log(`DRY-RUN CREATE ${slug} -> ${title} [group=${group}]`);
continue;
}
const created = await createCategory({ slug, title, description, group });
createdCount += 1;
console.log(
`CREATE ${created.slug} -> ${created.title} [group=${created.group}]`
);
console.log(`CREATE ${created.slug} -> ${created.title} [group=${created.group}]`);
}
return { createdCount, skippedCount };
}
async function main() {
console.log(`Seeding categories to ${endpoint}`);
console.log(`Seeding categories to ${endpoint}${isDryRun ? " (dry-run)" : ""}`);
if (!token) {
console.warn(
"No STRAPI token provided. If endpoint is protected, set STRAPI_TOKEN."
@@ -158,7 +157,7 @@ async function main() {
}
const slugs = discoverCategorySlugs();
const { createdCount, skippedCount } = await seedCategories(slugs);
const { createdCount, skippedCount } = await seedCategories(slugs, isDryRun);
console.log(
`Done. created=${createdCount}, skipped=${skippedCount}, total=${createdCount + skippedCount}`

View File

@@ -0,0 +1,269 @@
#!/usr/bin/env node
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const root = path.resolve(__dirname, "..");
const categoriesDir = path.join(root, "src", "content", "categories");
const defaultEndpoint = "http://localhost:1337/graphql";
const endpoint =
process.env.STRAPI_GRAPHQL_URL ??
process.env.PUBLIC_GRAPHQL_URL ??
defaultEndpoint;
const token =
process.env.STRAPI_TOKEN ??
process.env.STRAPI_API_TOKEN ??
process.env.AUTH_TOKEN;
const isDryRun = process.argv.includes("--dry-run");
function readCategorySource(slug) {
const filePath = path.join(categoriesDir, `${slug}.json`);
if (!fs.existsSync(filePath)) {
throw new Error(`Missing source file: ${path.relative(root, filePath)}`);
}
return JSON.parse(fs.readFileSync(filePath, "utf8"));
}
function discoverCategorySlugs() {
if (!fs.existsSync(categoriesDir)) {
throw new Error(`Categories directory missing: ${path.relative(root, categoriesDir)}`);
}
const slugs = [];
for (const dirent of fs.readdirSync(categoriesDir, { withFileTypes: true })) {
if (!dirent.isFile() || !dirent.name.endsWith(".json")) continue;
slugs.push(path.basename(dirent.name, ".json"));
}
if (slugs.length === 0) {
throw new Error(`No *.json categories in ${path.relative(root, categoriesDir)}`);
}
return slugs;
}
function normalizeProducts(products) {
if (!Array.isArray(products)) return [];
const unique = new Set();
for (const product of products) {
if (typeof product !== "string") continue;
const trimmed = product.trim();
if (!trimmed) continue;
unique.add(trimmed);
}
return [...unique].map((value) => ({ value }));
}
function collectVendorsBySlug(categorySlugs) {
const vendors = new Map();
for (const categorySlug of categorySlugs) {
const source = readCategorySource(categorySlug);
const categoryVendors = Array.isArray(source.vendors) ? source.vendors : [];
for (const rawVendor of categoryVendors) {
const name = typeof rawVendor?.name === "string" ? rawVendor.name.trim() : "";
if (!name) continue;
const vendorSlug = typeof rawVendor?.slug === "string" ? rawVendor.slug.trim() : "";
if (!vendorSlug) {
throw new Error(`Missing vendor slug for "${name}" in ${categorySlug}.json`);
}
const description =
typeof rawVendor?.description === "string" ? rawVendor.description.trim() : "";
const products = normalizeProducts(rawVendor?.products);
if (!vendors.has(vendorSlug)) {
vendors.set(vendorSlug, {
slug: vendorSlug,
title: name,
description,
products: new Map(products.map((item) => [item.value, item])),
categories: new Set([categorySlug]),
});
continue;
}
const existing = vendors.get(vendorSlug);
existing.categories.add(categorySlug);
for (const product of products) {
existing.products.set(product.value, product);
}
if (!existing.description && description) {
existing.description = description;
}
}
}
return [...vendors.values()].map((vendor) => ({
slug: vendor.slug,
title: vendor.title,
description: vendor.description,
products: [...vendor.products.values()],
categorySlugs: [...vendor.categories],
}));
}
async function gql(query, variables = {}) {
const headers = {
"Content-Type": "application/json",
Accept: "application/graphql-response+json, application/json",
};
if (token) headers.Authorization = `Bearer ${token}`;
const response = await fetch(endpoint, {
method: "POST",
headers,
body: JSON.stringify({ query, variables }),
});
if (!response.ok) {
throw new Error(`GraphQL HTTP ${response.status}: ${response.statusText}`);
}
const payload = await response.json();
if (payload.errors?.length) {
const messages = payload.errors.map((err) => err.message).join("; ");
throw new Error(`GraphQL error: ${messages}`);
}
return payload.data;
}
async function fetchCategoryDocumentIds() {
const query = `
query CategoryIds {
categories(pagination: { limit: 500 }) {
documentId
slug
}
}
`;
const data = await gql(query);
const map = new Map();
for (const category of data?.categories ?? []) {
if (!category?.slug || !category?.documentId) continue;
map.set(category.slug, category.documentId);
}
return map;
}
async function findVendorBySlug(slug) {
const query = `
query VendorBySlug($slug: String!) {
vendors(filters: { slug: { eq: $slug } }, pagination: { limit: 1 }) {
documentId
slug
}
}
`;
const data = await gql(query, { slug });
return data?.vendors?.[0] ?? null;
}
async function createVendor(input) {
const mutation = `
mutation CreateVendor($data: VendorInput!) {
createVendor(data: $data) {
documentId
slug
title
}
}
`;
const data = await gql(mutation, { data: input });
return data?.createVendor;
}
async function updateVendor(documentId, input) {
const mutation = `
mutation UpdateVendor($documentId: ID!, $data: VendorInput!) {
updateVendor(documentId: $documentId, data: $data) {
documentId
slug
title
}
}
`;
const data = await gql(mutation, { documentId, data: input });
return data?.updateVendor;
}
async function seedVendors(vendors, categoryIdBySlug, dryRun = false) {
let createdCount = 0;
let updatedCount = 0;
for (const vendor of vendors) {
const categoryDocumentIds = vendor.categorySlugs.map((slug) => {
const docId = categoryIdBySlug.get(slug);
if (!docId) {
throw new Error(
`Category "${slug}" is missing in Strapi. Seed categories before seeding vendors.`
);
}
return docId;
});
const input = {
slug: vendor.slug,
title: vendor.title,
description: vendor.description,
products: vendor.products,
categories: categoryDocumentIds,
};
const existing = await findVendorBySlug(vendor.slug);
if (existing?.documentId) {
if (dryRun) {
updatedCount += 1;
console.log(`DRY-RUN UPDATE ${vendor.slug} -> ${vendor.title}`);
continue;
}
const updated = await updateVendor(existing.documentId, input);
updatedCount += 1;
console.log(`UPDATE ${updated.slug} -> ${updated.title}`);
continue;
}
if (dryRun) {
createdCount += 1;
console.log(`DRY-RUN CREATE ${vendor.slug} -> ${vendor.title}`);
continue;
}
const created = await createVendor(input);
createdCount += 1;
console.log(`CREATE ${created.slug} -> ${created.title}`);
}
return { createdCount, updatedCount };
}
async function main() {
console.log(`Seeding vendors to ${endpoint}${isDryRun ? " (dry-run)" : ""}`);
if (!token) {
console.warn("No STRAPI token provided. If endpoint is protected, set STRAPI_TOKEN.");
}
const categorySlugs = discoverCategorySlugs();
const vendors = collectVendorsBySlug(categorySlugs);
const categoryIdBySlug = await fetchCategoryDocumentIds();
const { createdCount, updatedCount } = await seedVendors(vendors, categoryIdBySlug, isDryRun);
console.log(`Done. created=${createdCount}, updated=${updatedCount}, total=${vendors.length}`);
}
main().catch((error) => {
console.error(error);
process.exit(1);
});

View File

@@ -3,6 +3,7 @@ import { glob } from 'astro/loaders'
const vendorSchema = z.object({
name: z.string(),
slug: z.string(),
description: z.string(),
products: z.array(z.string()).optional(),
})
@@ -10,6 +11,7 @@ const vendorSchema = z.object({
const categories = defineCollection({
loader: glob({ pattern: '**/*.json', base: './src/content/categories' }),
schema: z.object({
group: z.enum(['solution', 'service']),
title: z.string(),
description: z.string(),
vendors: z.array(vendorSchema),

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Яндекс AI",
"slug": "yandex-ai",
"description": "Платформа машинного обучения и искусственного интеллекта от Яндекса.",
"products": [
"YandexGPT",
@@ -15,6 +16,7 @@
},
{
"name": "Сбер AI",
"slug": "sber-ai",
"description": "Экосистема AI-решений Сбера для бизнеса и разработчиков.",
"products": [
"GigaChat",
@@ -25,6 +27,7 @@
},
{
"name": "VK AI",
"slug": "vk-ai",
"description": "AI-платформа VK с решениями для распознавания, синтеза и анализа.",
"products": [
"Маруся",
@@ -35,6 +38,7 @@
},
{
"name": "АйТеко AI",
"slug": "iteco-ai",
"description": "Российские решения на базе искусственного интеллекта для промышленности.",
"products": [
"Компьютерное зрение",
@@ -44,6 +48,7 @@
},
{
"name": "Cognitive Technologies",
"slug": "cognitive-technologies",
"description": "Разработчик систем компьютерного зрения и автономного транспорта.",
"products": [
"C-Pilot",
@@ -53,6 +58,7 @@
},
{
"name": "NTechLab",
"slug": "ntechlab",
"description": "Технологии распознавания лиц и видеоаналитики на базе AI.",
"products": [
"FindFace",
@@ -62,6 +68,7 @@
},
{
"name": "Neuro.net",
"slug": "neuro-net",
"description": "Платформа для создания и внедрения AI-решений в бизнес-процессы.",
"products": [
"ML Studio",
@@ -71,6 +78,7 @@
},
{
"name": "Just AI",
"slug": "just-ai",
"description": "Платформа для создания голосовых ассистентов и чат-ботов.",
"products": [
"JAICP",
@@ -80,6 +88,7 @@
},
{
"name": "ЦРТ",
"slug": "speech-technology-center",
"description": "Центр речевых технологий - решения для распознавания и синтеза речи.",
"products": [
"ASR",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "SAP",
"slug": "sap",
"description": "Мировой лидер в области корпоративных приложений для управления бизнесом.",
"products": [
"SAP S/4HANA",
@@ -14,6 +15,7 @@
},
{
"name": "1С",
"slug": "1c",
"description": "Комплексные решения для автоматизации бизнес-процессов российских компаний.",
"products": [
"1С:ERP",
@@ -24,6 +26,7 @@
},
{
"name": "Битрикс24",
"slug": "bitrix24",
"description": "Единая платформа для управления бизнесом, CRM и коммуникаций.",
"products": [
"CRM",
@@ -34,6 +37,7 @@
},
{
"name": "ELMA365",
"slug": "elma365",
"description": "Low-code платформа для цифровой трансформации бизнеса.",
"products": [
"BPM",
@@ -44,6 +48,7 @@
},
{
"name": "Мегаплан",
"slug": "megaplan",
"description": "Система управления проектами и CRM для малого и среднего бизнеса.",
"products": [
"CRM",
@@ -53,6 +58,7 @@
},
{
"name": "amoCRM",
"slug": "amocrm",
"description": "CRM-система для автоматизации продаж и работы с клиентами.",
"products": [
"Воронка продаж",
@@ -62,6 +68,7 @@
},
{
"name": "Terrsoft",
"slug": "terrsoft",
"description": "Low-code платформа Creatio для автоматизации бизнес-процессов.",
"products": [
"Creatio CRM",
@@ -71,6 +78,7 @@
},
{
"name": "Мой Склад",
"slug": "my-warehouse",
"description": "Облачный сервис для управления торговлей и складом.",
"products": [
"Складской учет",
@@ -80,6 +88,7 @@
},
{
"name": "Контур",
"slug": "kontur",
"description": "Экосистема сервисов для автоматизации бухгалтерии и бизнес-процессов.",
"products": [
"Контур.Бухгалтерия",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "АСКОН",
"slug": "ascon",
"description": "Крупнейший российский разработчик инженерного ПО и САПР систем.",
"products": [
"КОМПАС-3D",
@@ -15,6 +16,7 @@
},
{
"name": "Nanosoft",
"slug": "nanosoft",
"description": "Разработка САПР и ГИС решений для проектирования и строительства.",
"products": [
"nanoCAD",
@@ -24,6 +26,7 @@
},
{
"name": "ГИС Панорама",
"slug": "gis-panorama",
"description": "Российская ГИС платформа для работы с пространственными данными.",
"products": [
"ГИС Карта 2011",
@@ -33,6 +36,7 @@
},
{
"name": "NextGIS",
"slug": "nextgis",
"description": "Облачная ГИС платформа и геопространственные решения.",
"products": [
"NextGIS Web",
@@ -42,6 +46,7 @@
},
{
"name": "ZWSOFT",
"slug": "zwsoft",
"description": "Универсальная САПР платформа для 2D и 3D проектирования.",
"products": [
"ZWCAD",
@@ -50,6 +55,7 @@
},
{
"name": "ЛОЦМАН",
"slug": "lotsman",
"description": "PLM и САПР решения для управления жизненным циклом изделий.",
"products": [
"ЛОЦМАН:PLM",
@@ -58,6 +64,7 @@
},
{
"name": "CGS Labs",
"slug": "cgs-labs",
"description": "Разработка систем инженерного анализа и моделирования.",
"products": [
"CGS Модельер",
@@ -66,6 +73,7 @@
},
{
"name": "CADLib",
"slug": "cadlib",
"description": "Библиотеки и компоненты для разработки САПР приложений.",
"products": [
"Библиотеки DWG",
@@ -74,6 +82,7 @@
},
{
"name": "IndorSoft",
"slug": "indorsoft",
"description": "САПР для проектирования автомобильных дорог и инфраструктуры.",
"products": [
"IndorCAD",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Яндекс.Облако",
"slug": "yandex-cloud",
"description": "Полный спектр облачных сервисов: вычисления, хранение данных, машинное обучение, базы данных.",
"products": [
"Compute Cloud",
@@ -15,6 +16,7 @@
},
{
"name": "VK Cloud",
"slug": "vk-cloud",
"description": "Облачная платформа VK с IaaS, PaaS и SaaS решениями для бизнеса любого масштаба.",
"products": [
"Облачные серверы",
@@ -25,6 +27,7 @@
},
{
"name": "Cloud.ru",
"slug": "cloud-ru",
"description": "Российская мультиоблачная платформа от Ростелекома с высоким уровнем безопасности.",
"products": [
"IaaS",
@@ -35,6 +38,7 @@
},
{
"name": "SberCloud",
"slug": "sbercloud",
"description": "Облачные решения от Сбера для корпоративных клиентов с интеграцией AI и ML.",
"products": [
"Виртуальные машины",
@@ -45,6 +49,7 @@
},
{
"name": "МТС Cloud",
"slug": "mts-cloud",
"description": "Облачная инфраструктура МТС с широким спектром сервисов и российской локализацией.",
"products": [
"Cloud Server",
@@ -55,6 +60,7 @@
},
{
"name": "Selectel",
"slug": "selectel",
"description": "Один из крупнейших провайдеров облачных услуг в России с собственными ЦОД.",
"products": [
"Облачная платформа",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "IT-стратегия и архитектура",
"slug": "it-strategy-and-architecture",
"description": "Разработка IT-стратегии, целевой архитектуры и дорожной карты цифровой трансформации с учетом специфики российского рынка.",
"products": [
"IT-аудит",
@@ -14,6 +15,7 @@
},
{
"name": "Миграция на российское ПО",
"slug": "migration-to-russian-software",
"description": "Комплексный анализ текущей инфраструктуры и разработка плана перехода на отечественные решения с минимальными рисками.",
"products": [
"Аудит",
@@ -23,6 +25,7 @@
},
{
"name": "Оптимизация IT-инфраструктуры",
"slug": "it-infrastructure-optimization",
"description": "Анализ и оптимизация существующей инфраструктуры для повышения эффективности и снижения затрат.",
"products": [
"Аудит инфраструктуры",
@@ -32,6 +35,7 @@
},
{
"name": "Проектирование ЦОД",
"slug": "data-center-design",
"description": "Разработка концепции и детальное проектирование центров обработки данных на базе российского оборудования.",
"products": [
"Концепция ЦОД",
@@ -41,6 +45,7 @@
},
{
"name": "Импортозамещение",
"slug": "import-substitution",
"description": "Разработка стратегии замены зарубежных решений на российские аналоги с сохранением функциональности.",
"products": [
"Анализ решений",
@@ -50,6 +55,7 @@
},
{
"name": "Бизнес-анализ и процессы",
"slug": "business-analysis-and-processes",
"description": "Анализ бизнес-процессов и разработка требований к информационным системам для их автоматизации.",
"products": [
"Анализ процессов",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Лаборатория Касперского",
"slug": "kaspersky-lab",
"description": "Мировой лидер в области кибербезопасности с комплексными решениями защиты.",
"products": [
"Kaspersky Endpoint Security",
@@ -14,6 +15,7 @@
},
{
"name": "Positive Technologies",
"slug": "positive-technologies",
"description": "Разработчик решений по информационной безопасности и защите от киберугроз.",
"products": [
"MaxPatrol",
@@ -23,6 +25,7 @@
},
{
"name": "InfoWatch",
"slug": "infowatch",
"description": "Российский разработчик систем защиты от утечек конфиденциальной информации.",
"products": [
"InfoWatch Traffic Monitor",
@@ -32,6 +35,7 @@
},
{
"name": "SearchInform",
"slug": "searchinform",
"description": "Системы информационной безопасности и предотвращения утечек данных.",
"products": [
"SearchInform DLP",
@@ -41,6 +45,7 @@
},
{
"name": "Гарда",
"slug": "garda",
"description": "Решения для защиты периметра, веб-приложений и управления доступом.",
"products": [
"Гарда WAF",
@@ -51,6 +56,7 @@
},
{
"name": "DeviceLock",
"slug": "devicelock",
"description": "Контроль внешних устройств и каналов передачи данных для защиты от утечек.",
"products": [
"DeviceLock DLP",
@@ -60,6 +66,7 @@
},
{
"name": "КриптоПро",
"slug": "cryptopro",
"description": "Средства криптографической защиты информации и электронной подписи.",
"products": [
"КриптоПро CSP",
@@ -69,6 +76,7 @@
},
{
"name": "Код Безопасности",
"slug": "security-code",
"description": "Российский вендор решений по информационной безопасности.",
"products": [
"Secret Net Studio",
@@ -78,6 +86,7 @@
},
{
"name": "Аладдин Р.Д.",
"slug": "aladdin-rd",
"description": "Разработчик средств аутентификации и защиты информации.",
"products": [
"JaCarta",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Astra Linux",
"slug": "astra-linux",
"description": "Защищенная операционная система для государственных организаций.",
"products": [
"Astra Linux Special Edition",
@@ -14,6 +15,7 @@
},
{
"name": "ИнфоТеКС",
"slug": "infotecs",
"description": "Защищенные системы связи и криптографическая защита для госсектора.",
"products": [
"ViPNet",
@@ -24,6 +26,7 @@
},
{
"name": "НПО Эшелон",
"slug": "npo-echelon",
"description": "Системы защиты информации для критической инфраструктуры.",
"products": [
"Сертифицированные решения",
@@ -33,6 +36,7 @@
},
{
"name": "Код Безопасности",
"slug": "security-code",
"description": "Средства защиты информации для государственных информационных систем.",
"products": [
"Secret Net Studio",
@@ -42,6 +46,7 @@
},
{
"name": "Газинформсервис",
"slug": "gazinformservice",
"description": "Автоматизированные системы для государственного управления.",
"products": [
"ГИС",
@@ -51,6 +56,7 @@
},
{
"name": "Крок",
"slug": "croc",
"description": "Интеграционные решения для цифровизации государственных услуг.",
"products": [
"Цифровые платформы",
@@ -60,6 +66,7 @@
},
{
"name": "Ростелеком-Солар",
"slug": "rostelecom-solar",
"description": "Кибербезопасность для государственных и критически важных объектов.",
"products": [
"Solar JSOC",
@@ -69,6 +76,7 @@
},
{
"name": "ФГУП НТЦ «Атлас»",
"slug": "fsue-stc-atlas",
"description": "Разработка защищенных АС для органов государственной власти.",
"products": [
"Защищенные АС",
@@ -78,6 +86,7 @@
},
{
"name": "Электронное Правительство",
"slug": "electronic-government",
"description": "Платформы для предоставления государственных услуг в электронном виде.",
"products": [
"Госуслуги",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "YADRO",
"slug": "yadro",
"description": "Российские системы хранения данных и серверные платформы корпоративного уровня.",
"products": [
"СХД TATLIN",
@@ -15,6 +16,7 @@
},
{
"name": "Kraftway Storage",
"slug": "kraftway-storage",
"description": "Системы хранения и резервного копирования данных.",
"products": [
"СХД",
@@ -24,6 +26,7 @@
},
{
"name": "Eltex",
"slug": "eltex",
"description": "Российский производитель телекоммуникационного оборудования.",
"products": [
"Маршрутизаторы",
@@ -34,6 +37,7 @@
},
{
"name": "Таврида Электрик",
"slug": "tavrida-electric",
"description": "Российские процессоры и микроэлектронные компоненты.",
"products": [
"Процессоры Baikal",
@@ -42,6 +46,7 @@
},
{
"name": "ЭЛВИС-НеоТек",
"slug": "elvis-neotech",
"description": "Разработка и производство микроэлектронных компонентов.",
"products": [
"Микроконтроллеры",
@@ -51,6 +56,7 @@
},
{
"name": "Kraftway Network",
"slug": "kraftway-network",
"description": "Сетевое оборудование и решения для построения ЦОД.",
"products": [
"Коммутаторы",
@@ -60,6 +66,7 @@
},
{
"name": "ЗАО НТЦ ЭЛИНС",
"slug": "zao-stc-elins",
"description": "Производство систем бесперебойного питания.",
"products": [
"ИБП",
@@ -69,6 +76,7 @@
},
{
"name": "Аквариус СХД",
"slug": "aquarius-storage",
"description": "Системы хранения данных для корпоративного сектора.",
"products": [
"СХД",
@@ -78,6 +86,7 @@
},
{
"name": "РЗЭП",
"slug": "rzep",
"description": "Рязанский завод электронных приборов - производство электронных компонентов.",
"products": [
"Электронные компоненты",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Внедрение облачных платформ",
"slug": "cloud-platform-implementation",
"description": "Комплексное внедрение облачных решений на базе Яндекс.Облако, VK Cloud и других российских провайдеров.",
"products": [
"IaaS",
@@ -15,6 +16,7 @@
},
{
"name": "Развертывание ОС и базового ПО",
"slug": "os-and-core-software-deployment",
"description": "Установка и настройка операционных систем Astra Linux, РЕД ОС и базового программного обеспечения.",
"products": [
"Astra Linux",
@@ -25,6 +27,7 @@
},
{
"name": "Внедрение систем безопасности",
"slug": "security-systems-implementation",
"description": "Поставка и внедрение комплексных решений по кибербезопасности от ведущих российских вендоров.",
"products": [
"Kaspersky",
@@ -35,6 +38,7 @@
},
{
"name": "Внедрение ERP и CRM систем",
"slug": "erp-and-crm-implementation",
"description": "Развертывание и настройка корпоративных систем управления: 1С, Галактика, Мой Офис.",
"products": [
"1С",
@@ -45,6 +49,7 @@
},
{
"name": "Поставка серверного оборудования",
"slug": "server-hardware-supply",
"description": "Подбор, поставка и ввод в эксплуатацию серверов и СХД российского производства.",
"products": [
"Kraftway",
@@ -55,6 +60,7 @@
},
{
"name": "Системы хранения данных",
"slug": "data-storage-systems",
"description": "Внедрение российских систем хранения данных с настройкой репликации и резервного копирования.",
"products": [
"RAIDIX",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "ОВЕН",
"slug": "owen",
"description": "Разработка и производство средств промышленной автоматизации.",
"products": [
"ПЛК",
@@ -15,6 +16,7 @@
},
{
"name": "ИнСАТ",
"slug": "insat",
"description": "Автоматизированные системы управления технологическими процессами.",
"products": [
"SCADA InTouch",
@@ -24,6 +26,7 @@
},
{
"name": "ТЕСИС",
"slug": "thesis",
"description": "Системы автоматизации для энергетики и промышленности.",
"products": [
"АСУТП",
@@ -33,6 +36,7 @@
},
{
"name": "Danfoss",
"slug": "danfoss",
"description": "Решения для промышленной автоматизации и энергоэффективности.",
"products": [
"Частотные преобразователи",
@@ -42,6 +46,7 @@
},
{
"name": "МЗТА",
"slug": "mzta",
"description": "Московский завод тепловой автоматики - промышленные контроллеры.",
"products": [
"ПЛК",
@@ -51,6 +56,7 @@
},
{
"name": "Текон",
"slug": "tekon",
"description": "Автоматизация технологических процессов в промышленности.",
"products": [
"SCADA",
@@ -60,6 +66,7 @@
},
{
"name": "АйТи Энерджи",
"slug": "it-energy",
"description": "Системы мониторинга и управления для энергетики.",
"products": [
"АСКУЭ",
@@ -69,6 +76,7 @@
},
{
"name": "Schneider Electric",
"slug": "schneider-electric",
"description": "Индустриальная автоматизация и управление энергией.",
"products": [
"ПЛК",
@@ -79,6 +87,7 @@
},
{
"name": "АСУ ТП Проект",
"slug": "industrial-automation-project",
"description": "Проектирование и внедрение автоматизированных систем управления.",
"products": [
"АСУТП",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Интеграция корпоративных систем",
"slug": "enterprise-systems-integration",
"description": "Интеграция ERP, CRM, HRM и других корпоративных систем для обеспечения единого информационного пространства.",
"products": [
"ESB",
@@ -15,6 +16,7 @@
},
{
"name": "Разработка на заказ",
"slug": "custom-development",
"description": "Создание индивидуальных программных решений под специфические задачи бизнеса.",
"products": [
"Backend",
@@ -25,6 +27,7 @@
},
{
"name": "Автоматизация бизнес-процессов",
"slug": "business-process-automation",
"description": "Разработка и внедрение систем автоматизации с использованием BPM-платформ и RPA.",
"products": [
"BPM",
@@ -35,6 +38,7 @@
},
{
"name": "Разработка микросервисов",
"slug": "microservices-development",
"description": "Проектирование и разработка микросервисной архитектуры для масштабируемых решений.",
"products": [
"Kubernetes",
@@ -45,6 +49,7 @@
},
{
"name": "DevOps и CI/CD",
"slug": "devops-and-ci-cd",
"description": "Построение процессов непрерывной интеграции и доставки на базе российских и opensource инструментов.",
"products": [
"GitLab",
@@ -55,6 +60,7 @@
},
{
"name": "Интеграция с государственными системами",
"slug": "government-systems-integration",
"description": "Подключение к СМЭВ, ГИС, ЕГИС и другим государственным информационным системам.",
"products": [
"СМЭВ",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Управление инфраструктурой",
"slug": "infrastructure-management",
"description": "Полное управление IT-инфраструктурой 24/7: мониторинг, обслуживание, оптимизация и развитие.",
"products": [
"Мониторинг 24/7",
@@ -15,6 +16,7 @@
},
{
"name": "Управление облачными ресурсами",
"slug": "cloud-resource-management",
"description": "Администрирование и оптимизация облачной инфраструктуры на российских платформах.",
"products": [
"Cloud Management",
@@ -24,6 +26,7 @@
},
{
"name": "Управление безопасностью",
"slug": "security-management",
"description": "Комплексное управление информационной безопасностью: SOC, мониторинг угроз, реагирование на инциденты.",
"products": [
"SOC",
@@ -34,6 +37,7 @@
},
{
"name": "Backup as a Service",
"slug": "backup-as-a-service",
"description": "Управляемое резервное копирование с гарантией сохранности данных и быстрого восстановления.",
"products": [
"Резервное копирование",
@@ -43,6 +47,7 @@
},
{
"name": "DRaaS (Disaster Recovery)",
"slug": "draas-disaster-recovery",
"description": "Услуга аварийного восстановления IT-систем с гарантированным RTO и RPO.",
"products": [
"Аварийное восстановление",
@@ -52,6 +57,7 @@
},
{
"name": "Helpdesk и Service Desk",
"slug": "helpdesk-and-service-desk",
"description": "Профессиональная техническая поддержка пользователей и администрирование IT-систем.",
"products": [
"1-3 линии поддержки",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Kraftway",
"slug": "kraftway",
"description": "Ведущий российский производитель серверов, рабочих станций и систем хранения.",
"products": [
"Серверы Express",
@@ -15,6 +16,7 @@
},
{
"name": "Aquarius",
"slug": "aquarius",
"description": "Российский производитель компьютеров и серверного оборудования.",
"products": [
"Серверы",
@@ -25,6 +27,7 @@
},
{
"name": "iRU",
"slug": "iru",
"description": "Производство компьютеров, серверов и комплектующих под российским брендом.",
"products": [
"Серверы iRU Rock",
@@ -35,6 +38,7 @@
},
{
"name": "Аквариус",
"slug": "aquarius",
"description": "Российская компания по производству вычислительной техники.",
"products": [
"Компьютеры",
@@ -44,6 +48,7 @@
},
{
"name": "Depo",
"slug": "depo",
"description": "Разработка и производство серверного и сетевого оборудования.",
"products": [
"Серверы Depo Storm",
@@ -53,6 +58,7 @@
},
{
"name": "YADRO",
"slug": "yadro",
"description": "Российский разработчик серверных платформ и систем хранения данных.",
"products": [
"Серверы Vegman",
@@ -62,6 +68,7 @@
},
{
"name": "РСК Технологии",
"slug": "rsk-technologies",
"description": "Производство высокопроизводительных вычислительных систем.",
"products": [
"Суперкомпьютеры",
@@ -71,6 +78,7 @@
},
{
"name": "GS Group",
"slug": "gs-group",
"description": "Производство электроники и вычислительной техники.",
"products": [
"Планшеты",
@@ -80,6 +88,7 @@
},
{
"name": "Kraftway Graviton",
"slug": "kraftway-graviton",
"description": "Серверные решения на базе российских процессоров.",
"products": [
"Серверы Graviton",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "МойОфис",
"slug": "myoffice",
"description": "Российский офисный пакет для работы с документами, таблицами и презентациями.",
"products": [
"Текст",
@@ -15,6 +16,7 @@
},
{
"name": "1С",
"slug": "1c",
"description": "Ведущий российский разработчик программного обеспечения для автоматизации бизнеса.",
"products": [
"1С:Бухгалтерия",
@@ -25,6 +27,7 @@
},
{
"name": "Галактика",
"slug": "galaktika",
"description": "ERP-система для управления предприятием и бизнес-процессами.",
"products": [
"Галактика ERP",
@@ -35,6 +38,7 @@
},
{
"name": "Р7-Офис",
"slug": "r7-office",
"description": "Офисный пакет и платформа для совместной работы с документами.",
"products": [
"Редакторы документов",
@@ -44,6 +48,7 @@
},
{
"name": "Postgres Pro",
"slug": "postgres-pro",
"description": "Российская СУБД на базе PostgreSQL с расширенной функциональностью.",
"products": [
"Postgres Pro Standard",
@@ -53,6 +58,7 @@
},
{
"name": "Astra Linux",
"slug": "astra-linux",
"description": "Защищенная операционная система для госструктур и коммерческих организаций.",
"products": [
"Astra Linux Special Edition",
@@ -61,6 +67,7 @@
},
{
"name": "РедСофт",
"slug": "red-soft",
"description": "Разработчик ОС РЕД и решений для цифровой трансформации.",
"products": [
"РЕД ОС",
@@ -70,6 +77,7 @@
},
{
"name": "BaseAlt",
"slug": "basealt",
"description": "Разработчик дистрибутивов ALT Linux для различных сегментов рынка.",
"products": [
"ALT Education",
@@ -79,6 +87,7 @@
},
{
"name": "ELMA",
"slug": "elma",
"description": "Low-code платформа для автоматизации и управления бизнес-процессами.",
"products": [
"ELMA365",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Решения для финансового сектора",
"slug": "solutions-for-financial-sector",
"description": "Специализированные IT-решения для банков, страховых компаний и финансовых организаций с учетом требований регуляторов.",
"products": [
"АБС",
@@ -15,6 +16,7 @@
},
{
"name": "Промышленные решения",
"slug": "industrial-solutions",
"description": "Автоматизация производства, АСУТП, MES-системы и промышленный IoT на базе российских технологий.",
"products": [
"MES",
@@ -25,6 +27,7 @@
},
{
"name": "Здравоохранение",
"slug": "healthcare",
"description": "МИС, ПАКС, лабораторные системы и телемедицина с интеграцией в ЕГИСЗ.",
"products": [
"МИС",
@@ -35,6 +38,7 @@
},
{
"name": "Образование",
"slug": "education",
"description": "Цифровизация образовательного процесса: LMS, электронные библиотеки, системы тестирования.",
"products": [
"LMS",
@@ -44,6 +48,7 @@
},
{
"name": "Ритейл и e-commerce",
"slug": "retail-and-e-commerce",
"description": "Решения для розничной торговли: кассовые системы, управление складом, интернет-магазины.",
"products": [
"E-commerce",
@@ -54,6 +59,7 @@
},
{
"name": "Телеком и медиа",
"slug": "telecom-and-media",
"description": "Биллинговые системы, OSS/BSS, потоковое видео и CDN на российских платформах.",
"products": [
"Биллинг",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Облачная инфраструктура по подписке",
"slug": "cloud-infrastructure-subscription",
"description": "Аренда виртуальных серверов, хранилищ и сетевых ресурсов на российских облачных платформах.",
"products": [
"Виртуальные серверы",
@@ -15,6 +16,7 @@
},
{
"name": "Лицензии на российское ПО",
"slug": "russian-software-licenses",
"description": "Предоставление лицензий на отечественное программное обеспечение по модели подписки.",
"products": [
"ОС",
@@ -25,6 +27,7 @@
},
{
"name": "SaaS решения",
"slug": "saas-solutions",
"description": "Доступ к корпоративным приложениям в облаке: CRM, ERP, документооборот, коммуникации.",
"products": [
"CRM",
@@ -35,6 +38,7 @@
},
{
"name": "Безопасность как сервис",
"slug": "security-as-a-service",
"description": "Подписка на облачные сервисы безопасности: антивирус, DLP, email-защита, веб-фильтрация.",
"products": [
"Cloud Антивирус",
@@ -45,6 +49,7 @@
},
{
"name": "Мониторинг и аналитика",
"slug": "monitoring-and-analytics",
"description": "Платформы мониторинга инфраструктуры, сбор метрик и бизнес-аналитика по подписке.",
"products": [
"APM",
@@ -55,6 +60,7 @@
},
{
"name": "Рабочие места как сервис",
"slug": "workplace-as-a-service",
"description": "Виртуальные рабочие столы (VDI) с предустановленным ПО и поддержкой.",
"products": [
"VDI",

View File

@@ -5,6 +5,7 @@
"vendors": [
{
"name": "Техническая поддержка 24/7",
"slug": "technical-support-24-7",
"description": "Круглосуточная поддержка IT-инфраструктуры с гарантированным временем реакции и решения проблем.",
"products": [
"L1-L3 поддержка",
@@ -14,6 +15,7 @@
},
{
"name": "Сопровождение ПО",
"slug": "software-support",
"description": "Обслуживание и поддержка корпоративных информационных систем, обновления и доработки.",
"products": [
"Обновления",
@@ -24,6 +26,7 @@
},
{
"name": "Обслуживание серверов и СХД",
"slug": "servers-and-storage-maintenance",
"description": "Регулярное обслуживание, мониторинг и замена оборудования по договору.",
"products": [
"Профилактика",
@@ -34,6 +37,7 @@
},
{
"name": "Обслуживание сетевой инфраструктуры",
"slug": "network-infrastructure-maintenance",
"description": "Поддержка сетевого оборудования, настройка, мониторинг и устранение неисправностей.",
"products": [
"Сети",
@@ -44,6 +48,7 @@
},
{
"name": "Обслуживание систем безопасности",
"slug": "security-systems-maintenance",
"description": "Сопровождение средств защиты информации: обновление баз, настройка правил, анализ инцидентов.",
"products": [
"Антивирус",
@@ -54,6 +59,7 @@
},
{
"name": "Абонентское обслуживание",
"slug": "subscription-support",
"description": "Комплексная IT-поддержка по модели абонентского обслуживания с фиксированной стоимостью.",
"products": [
"Фиксированная цена",