import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; const out = path.dirname(fileURLToPath(import.meta.url)); const esc = (s) => String(s).replace(/&/g,'&').replace(//g,'>'); const modules = [ ['41-crm-deal','CRM · Карточка сделки','Сделка «Поставка упаковки»','Сумма|180 000 ₽;Вероятность|40%;Этап|Квалификация;Следующее действие|Сегодня, 15:00','Контакт|Иван Петров|Директор · ООО «Ресурс»;Телефон|+7 900 123-45-67|Telegram подключён;Задачи|Подготовить предложение|Сегодня, 15:00;Документы|Коммерческое предложение|Черновик;История|Входящий запрос с сайта|18 сентября, 12:41'], ['42-crm-contacts','CRM · Контакты','Контакты','Всего|128;Активные|94;Без сделки|21;Новые за месяц|17','Иван Петров|ООО «Ресурс»|+7 900 123-45-67;Анна Белова|Сеть кофеен «Маяк»|anna@mayak.ru;Сергей Орлов|БЦ «Север»|Telegram;Мария Волкова|Отель «Гранд»|+7 913 555-22-11;Александр Ким|IT Park|alex@itpark.ru'], ['43-crm-companies','CRM · Компании','Компании','Всего|42;С активными сделками|18;Клиенты|29;Поставщики|13','ООО «Ресурс»|Поставщик|3 сделки · 1,2 млн ₽;Сеть кофеен «Маяк»|Клиент|2 сделки · 680 000 ₽;БЦ «Север»|Клиент|1 сделка · 240 000 ₽;Отель «Гранд»|Клиент|4 сделки · 2,6 млн ₽;IT Park|Партнёр|2 сделки · 920 000 ₽'], ['44-crm-leads','CRM · Лиды','Лиды','Новые|17;В работе|9;Конверсия|34%;Без ответа|3','Заявка на корпоративное питание|Сайт|Сегодня, 12:41;Кейтеринг на 120 человек|Telegram|Сегодня, 11:18;Поставка обедов в офис|Email|Вчера, 17:30;Франшиза кафе|MAX|Вчера, 15:06;Банкет на октябрь|Телефон|17 сентября'], ['50-sales','Продажи','Заказы и продажи','Выручка сегодня|184 600 ₽;Заказов|47;Средний чек|3 928 ₽;К оплате|62 400 ₽','№ 1048|Доставка · Новый|4 860 ₽;№ 1047|Зал · Готовится|2 340 ₽;№ 1046|Самовывоз · Готов|1 780 ₽;№ 1045|Доставка · В пути|6 120 ₽;№ 1044|Зал · Закрыт|3 560 ₽'], ['51-inventory','Склад','Остатки и движение','Позиций|386;Ниже минимума|12;На сумму|2,84 млн ₽;Списания сегодня|8 420 ₽','Лосось охлаждённый|4,2 кг|Ниже минимума;Сливки 33%|18 л|Достаточно;Сыр моцарелла|12,5 кг|Заказать;Бутылка 0,5 л|240 шт|Достаточно;Кофе зерно|7 кг|Резерв 2 кг'], ['52-procurement','Закупки','Заявки поставщикам','К заказу|184 300 ₽;Поставщиков|8;Не достигнут минимум|2;Ближайшая доставка|Завтра','ООО «Ресурс»|42 600 ₽|Минимум 15 000 ₽;ФудСервис|68 400 ₽|Лучшие цены: 14 позиций;Рыбный двор|12 800 ₽|До минимума 2 200 ₽;Упаковка Про|34 500 ₽|Доставка во вторник;Магазин · ежедневный закуп|26 000 ₽|18 позиций'], ['53-finance','Финансы','Деньги и платежи','Доступно|1,84 млн ₽;К поступлению|620 000 ₽;К оплате|438 000 ₽;ДДС к учёту|72 400 ₽','Поступление · ООО «Альфа»|+180 000 ₽|Сегодня, 10:21;Оплата · ФудСервис|−68 400 ₽|Сегодня, 09:40;Зарплата · аванс|−320 000 ₽|20 сентября;Аренда|−185 000 ₽|25 сентября;Поступление · БЦ «Север»|+240 000 ₽|28 сентября'], ['54-staff','Сотрудники','Команда и смены','Сотрудников|48;Сегодня в смене|31;Опаздывают|2;ФОТ месяца|2,16 млн ₽','Горский 1/1 · Зал|12 сотрудников|Смена открыта;Горский 1/1 · Кухня|9 сотрудников|1 опоздание;Доставка|7 сотрудников|Все на линии;Офис|3 сотрудника|Рабочий день;Резерв|5 сотрудников|Доступны'], ['55-projects','Проекты','Проекты','Активные|8;В срок|6;С риском|2;Бюджет|4,8 млн ₽','Открытие летней веранды|68%|До 30 сентября;Новая система лояльности|42%|До 15 октября;Переезд склада|81%|Риск срока;Меню осень 2026|93%|На согласовании;Автоматизация закупок|35%|До 1 ноября'], ['56-tasks','Задачи','Задачи команды','Сегодня|18;Просрочено|4;На проверке|7;Выполнено за неделю|96','Согласовать заявку поставщику|Высокий|Сегодня, 13:00;Проверить остатки лосося|Высокий|Сегодня, 14:00;Обновить график смен|Обычный|Сегодня, 17:00;Подготовить договор|Обычный|Завтра;Проверить рекламную кампанию|Низкий|21 сентября'], ['57-marketing','Маркетинг','Кампании и аудитории','Расход месяца|284 000 ₽;Лиды|318;Цена лида|893 ₽;ROMI|184%','Осеннее меню · VK|Активна|86 лидов · 72 000 ₽;Бизнес-ланчи · Яндекс|Активна|142 лида · 118 000 ₽;Доставка · Telegram|Пауза|38 лидов · 31 000 ₽;Банкеты · Email|Запланирована|Старт 22 сентября;Возврат гостей · SMS|Активна|52 лида · 63 000 ₽'], ['58-analytics','Аналитика','Показатели бизнеса','Выручка|4,82 млн ₽;Прибыль|1,14 млн ₽;Средний чек|3 640 ₽;Повторные гости|42%','Выручка по дням|Пн 620 · Вт 710 · Ср 680 · Чт 760|Рост 12%;Каналы продаж|Зал 48% · Доставка 37% · Самовывоз 15%|;Лучшие категории|Бизнес-ланчи · Напитки · Банкеты|;Загрузка команды|82%|Пик 13:00–15:00;Прогноз месяца|6,4 млн ₽|Выполнение 75%'], ['59-documents','Документы','Документы','На подпись|7;Черновики|14;Истекают|3;Всего|486','Договор поставки №42|На подпись|ООО «Ресурс»;Счёт №1048|Оплачен|ООО «Альфа»;Сертификат на лосось|Истекает через 8 дней|Рыбный двор;Акт сверки|Черновик|ФудСервис;Трудовой договор|Подписан|Иванов А. В.'], ['60-automation','Автоматизация','Сценарии','Активные|18;Запусков сегодня|426;Ошибки|2;Сэкономлено|37 ч','Низкий остаток → заявка|Активен|86 запусков;Новый лид → задача менеджеру|Активен|42 запуска;Заказ готов → сообщение клиенту|Активен|214 запусков;Просрочка оплаты → напоминание|Ошибка|2 запуска;Смена закрыта → отчёт|Активен|82 запуска'], ['61-sites','Сайты','Сайты и формы','Опубликовано|3;Черновики|2;Заявок за неделю|74;Конверсия|6,8%','krona.restaurant|Опубликован|Основной сайт;delivery.krona.restaurant|Опубликован|Доставка;banket.krona.restaurant|Опубликован|Банкеты;Осеннее меню|Черновик|Лендинг;Вакансии|Черновик|Форма отклика'], ['62-support','Поддержка','Обращения','Открыто|12;Критичные|2;Среднее время ответа|8 мин;Решено сегодня|34','Не проходит оплата|Критичный|Организация «Альфа»;Не загружается прайс|Высокий|ООО «Ресурс»;Добавить пользователя|Обычный|Ресторан «Маяк»;Ошибка отчёта|Высокий|Горский 1/1;Вопрос по тарифу|Низкий|Кафе «Берег»'], ['65-ai-center','ИИ-центр','ИИ-центр','Ассистенты|8;Автоматизаций|24;Диалогов сегодня|186;Экономия времени|46 ч','Помощник руководителя|Активен|Сводки и решения;Ассистент закупок|Активен|Сравнение поставщиков;Контроль качества|Активен|12 проверок сегодня;HR-помощник|Обучается|База знаний 82%;Маркетолог|Активен|4 кампании'], ['66-apps','Приложения','Приложения и интеграции','Установлено|14;Доступно|32;Требуют внимания|2;Синхронизаций сегодня|1 284','Коммуникации|Установлено|Telegram · MAX · WhatsApp;Сотрудники|Установлено|Мобильное приложение;Закупки|Установлено|8 поставщиков;Google Drive|Подключено|Последняя синхронизация 5 мин;Яндекс Диск|Требует входа|Резервные копии'], ['67-entity-builder','Конструктор сущностей','Конструктор сущностей','Сущностей|18;Пользовательских полей|74;Связей|31;Изменений сегодня|6','Клиент|12 полей|CRM · Продажи;Сырьё|18 полей|Склад · Закупки;Поставщик|14 полей|Закупки · Документы;Сотрудник|16 полей|Сотрудники · Задачи;Сертификат|8 полей|Склад · Документы'], ['63-settings','Настройки','Настройки организации','Организация|ООО «Крона»;Пользователи|48;Подключённые модули|12;Роль владельца|Полный доступ','Профиль организации|Реквизиты и бренд|Настроено;Пользователи и роли|48 пользователей|3 приглашения;Модули|12 включено|Каналы скрыты;Интеграции и VPN|6 подключений|VPN активен;Резервные копии|Ежедневно, 03:00|Последняя успешна'], ['64-home','Главная','Рабочий день','Выручка сегодня|184 600 ₽;Задачи|18;Новые сообщения|48;Требует внимания|7','Продажи|47 заказов|+12% к прошлой субботе;Закупки|2 поставщика ниже минимума|Нужно решение;Сотрудники|31 в смене|2 опоздания;Коммуникации|48 непрочитанных|12 Telegram;Финансы|438 000 ₽ к оплате|До 25 сентября'] ]; const nav=['Главная','Аналитика','Маркетинг','Коммуникации','CRM','Продажи','Склад','Закупки','Финансы','Сотрудники','Проекты','Задачи','Документы','Автоматизация','Сайты','Поддержка','Настройки']; function make([_slug,module,title,statsRaw,rowsRaw]){ const stats=statsRaw.split(';').map(x=>x.split('|')), rows=rowsRaw.split(';').map(x=>x.split('|')); const navSvg=nav.map((n,i)=>`${esc(n)}`).join(''); const statSvg=stats.map((s,i)=>`${esc(s[0])}${esc(s[1])}`).join(''); const rowsSvg=rows.map((r,i)=>`${esc(r[0])}${esc(r[1]||'')}${esc(r[2]||'')}`).join(''); return `♛ KRONAБИЗНЕС-ПЛАТФОРМА${navSvg}Ресторан: Зал + Доставка⌄⌕ Поиск по платформе…Виктор${esc(title)}${esc(module)} · рабочий экран+ Создать${statSvg}⌕ Поиск и фильтрыФильтры · ПериодНАЗВАНИЕСТАТУС / ДЕТАЛИ${rowsSvg}KRONA AIСводка и следующее действие →`; } for (const item of modules) fs.writeFileSync(path.join(out,`${item[0]}.svg`),make(item),'utf8'); console.log(`generated ${modules.length} screens`);