M cenaly.com
💬 Коммуникации, ИИ и учёт

🧩 Кастомные редакторы

Свои мини-редакторы внутри панели в песочнице: для владельца или стороннего разработчика, доступ к данным аккаунта по правам

Документация

Кастомные редакторы

Бывает работа, которой нет ни в одной панели, потому что она только ваша: свой пересчёт цен по формуле поставщика, сверка каталога с чужой учётной системой, экран «заполнить характеристики партии за один проход». Раздел «Кастомные редакторы» позволяет написать такой мини-редактор самому (или заказать его) и запустить внутри админки — в песочнице, с доступом ровно к тем данным, которые вы разрешили.

Открыть: Админ-панель → Кастомные редакторы (admin.cenaly.com/custom-editors). Раздел включается карточкой «Кастомные редакторы (SDK)» в магазине приложений — по умолчанию он скрыт. Кнопка «📌 В сайдбар» на самой странице выносит его в боковое меню, когда он нужен часто.


Что это за раздел#

Плагин — это собранный скрипт (index.js) и его описание (manifest.json). Панель загружает скрипт в изолированный фрейм: у него нет доступа ни к вашей сессии, ни к коду админки, ни к сети. Разговаривать с данными он может только через мост — набор разрешённых запросов, каждый из которых проверяется по выданным правам.

Страница состоит из блоков:

Блок Что в нём
Установленные редакторы карточка на плагин: имя, «Версия», «Права», «Размещение», «Разрешённые сетевые хосты», «Обновлён», источник (репозиторий и тег ссылкой). Действия: «Открыть», «Включить» / «Выключить», проверка обновлений, «Удалить»
Установить редактор установка из файлов с диска
Установка из GitHub установка по адресу публичного репозитория и тегу
🤖 Разработка с ИИ (вайб-кодинг) шаблон проекта, промпт для ИИ-агента и снимок каталога как тестовые данные
👩‍💻 Доступ разработчика временные гранты подрядчику на режим разработчика
🛠️ Режим разработчика запуск плагина прямо с вашего компьютера, без установки

Открытый редактор занимает весь экран, а адрес страницы получает пометку ?app=<идентификатор> — такой ссылкой можно поделиться с тем, у кого есть доступ.


Что нужно для запуска#

Что Зачем
Карточка «Кастомные редакторы (SDK)» в магазине приложений раздел нишевый и по умолчанию выключен
Вы — владелец аккаунта устанавливать, включать, удалять плагины и выдавать гранты может только владелец; сотрудники видят список только для чтения
Собранный плагин: index.js + manifest.json либо ваш, либо от разработчика, либо релиз в публичном GitHub-репозитории
Для разработкиучётка сотрудника для разработчика режим разработчика выдаётся по e-mail его рабочего логина

Шаг 1. Решить, кто напишет редактор#

Путей три, и они отличаются тем, кто держит код:

Путь Кому подходит Как
ИИ-агент по нашему шаблону владелец, который готов объяснить задачу словами блок «Разработка с ИИ»: шаблон + промпт → агент собирает релиз → вы его ставите
Свой или наёмный разработчик есть подрядчик или разработчик в команде выдайте ему грант на режим разработчика, он пишет и отлаживает на живом аккаунте, вы ставите готовый релиз
Готовый релиз из GitHub плагин уже написан (вами или для вас) «Установка из GitHub»: адрес репозитория и тег

Во всех трёх случаях установка остаётся за владельцем: даже разработчик с грантом может только запустить свой код у себя в режиме разработчика, но не поставить его в аккаунт.


Шаг 2. Разработка с ИИ (вайб-кодинг)#

Блок «🤖 Разработка с ИИ (вайб-кодинг)» даёт четыре вещи, чтобы отдать задачу ИИ-агенту (Claude Code, Cursor и подобным) и не объяснять ему контракт с нуля:

  1. «⬇️ Скачать шаблон проекта (zip)» — готовый каркас плагина: манифест, точка входа, описание контракта (GUIDE.en.md) и инструкция для агента. Архив собирается прямо в браузере, ничего внешнего скачивать не нужно.
  2. «📋 Скопировать промпт для агента» — текст задания на английском: стартовать от шаблона, сверяться с гидом, чем проверять результат.
  3. Конфигурация набора инструментов для агента — с ним агент собирает плагин, поднимает локальный стенд-копию песочницы, делает скриншоты и снимки состояния, а в конце собирает релиз: zip для ручной установки или релиз в GitHub.
  4. «⬇️ Скачать снимок каталога (тестовая фикстура)» — ваши категории и позиции файлом, чтобы агент тестировал на реальных данных, а не на выдуманных.

⚠️ Из снимка целиком вырезаются кастомные поля других плагинов: данные, которые чужое расширение хранит на ваших карточках, не покидают аккаунт вместе с фикстурой.


Шаг 3. Установить редактор#

Из файлов. Блок «Установить редактор»: выберите «Бандл (index.js)» и «Манифест (manifest.json)» → «Проверить и установить». Панель сначала проверяет манифест — идентификатор, локализованное имя, версию, минимальную версию SDK, места размещения, права и список сетевых хостов, — а затем показывает консент: «Этот редактор запрашивает:» и список прав человеческим языком. Пока вы не нажали «Установить», ничего не устанавливается.

Из GitHub. Блок «Установка из GitHub»: поле «Репозиторий (URL или owner/repo)», поле «Тег (пусто = последний релиз)» и кнопка «Проверить репозиторий». Конвенция простая: manifest.json в корне репозитория, собранный dist/index.js в теге, тег вида v{версия}. Манифест и бандл тянутся прямо из вашего браузера. В обоих случаях при установке считается и запоминается отпечаток бандла (sha256): если файл потом подменят, запуск будет заблокирован, и панель попросит переустановить редактор.


Права и места размещения#

Права (их же называют скоупами) плагин просит в манифесте, а вы подтверждаете при установке. Полный список — вот он, больше мост не умеет ничего:

Право Что открывается
Читать каталог категории, позиции, характеристики и кастомные поля карточек
Создавать и изменять позиции каталога создание и правка позиций, импорт партии, свои поля и определения характеристик
Менять цены, доступность и стоп-листы по локациям то же, что делает панель в меню точки
Читать складской справочник товаров номенклатура склада на чтение
Хранить свои настройки в вашем хранилище собственные ключи плагина в вашем аккаунте (до 1 МБ на ключ)
Серверная часть расширения вызовы кода плагина на нашем сервере — единственный способ для него сходить в интернет

Чего в списке нет вовсе — того плагин не получит никакими настройками: гостей и клиентов, заказов, чеков, финансов, сотрудников, переписок и звонков мост не отдаёт.

Места размещения (слоты) — три:

Слот Где появится
Своя страница пункт внутри раздела «Кастомные редакторы», открывается на весь экран
Кнопка на странице каталога инструмент рядом с каталогом позиций
Вкладка раздела «Склад» плагин рисуется вкладкой склада — так упаковано наше встроенное расширение «ВетИС»

Режим разработчика и доступ подрядчику#

Режим разработчика (блок «🛠️ Режим разработчика») монтирует плагин живьём с вашего компьютера: поле «URL бандла» принимает только адреса localhost / 127.0.0.1, рядом — «JSON манифеста», кнопка «Запустить dev-сессию». Отпечаток при этом не пиннится, а сессия живёт до закрытия вкладки; «Остановить dev-сессию» выключает её сразу.

Гранты разработчику (блок «👩‍💻 Доступ разработчика») нужны, когда пишет не владелец. Разработчику заводится обычная учётка сотрудника, а затем владелец выдаёт грант: «Email разработчика (его staff-логин)», «Разрешённые права», «Срок действия (дней)» и необязательная заметка → «Выдать доступ». Отозвать можно в любой момент кнопкой «Отозвать».

Что даёт грант, а что нет:

  • даёт — только режим разработчика с правами, которые вы отметили (по умолчанию срок 14 дней, максимум 90);
  • права режутся пересечением: что просит манифест и что выдано грантом; лишнего плагин не получит, даже если попросит в манифесте;
  • не даёт — установку, включение и удаление плагинов: это остаётся владельцу.

Обновление, включение и удаление#

Действие Как
Открыть кнопка «Открыть» на карточке (или ссылка с ?app=…)
Выключить временно «Выключить» — плагин остаётся установленным, но не исполняется и не показывается в своих местах
Обновить у плагинов из GitHub — «Проверить обновления» и затем «Обновить до …»; если версия свежая, панель скажет «Установлена последняя версия». Плагины из файлов обновляются повторной установкой
Удалить «Удалить» с подтверждением: настройки и пункт убираются, загруженные релизы остаются в хранилище

Автообновления нет намеренно: новая версия чужого кода — это новый отпечаток и, возможно, новые права, поэтому обновление всегда осознанное действие владельца.


Встроенные расширения#

Часть наших собственных модулей упакована в тот же формат — это видно по поведению, но ставить их не нужно: они приезжают вместе с панелью и включаются карточкой в магазине приложений, а не в этом разделе.

Сейчас такой модуль один — «Меркурий/ВетИС» для России: он живёт вкладкой раздела «Склад», исполняется в той же песочнице и с теми же проверками отпечатка. В список установленных редакторов встроенные расширения не попадают.


Что редактор может и чего не может#

Может Не может
Читать и менять каталог в пределах выданных прав узнать ваш пароль или воспользоваться вашей сессией
Показывать свой интерфейс, уведомления и запросы подтверждения открыть код или данные админки вокруг себя
Открыть родной редактор позиции панели обратиться в интернет напрямую из окна плагина
Хранить свои настройки в вашем аккаунте увидеть данные другого плагина на ваших карточках
Ходить в интернет через серверную часть — и только по тем https-адресам, что перечислены в манифесте (их не больше восьми) исполняться после подмены файла: несовпадение отпечатка блокирует запуск

Сторонние плагины помечаются на карточке предупреждением: «Стороннее приложение в песочнице — оно никогда не спрашивает пароль». Если плагин просит логин от панели, платёжные данные или код из SMS — это мошенничество, а не работа расширения.


Ограничения#

  • Раздел выключен по умолчанию и рассчитан на тех, кто пишет код (или заказывает его): рядовому владельцу здесь делать нечего.
  • Всё, кроме просмотра, — только у владельца аккаунта. Сотрудник видит хаб read-only; режим разработчика — только с живым грантом.
  • Приватные GitHub-репозитории не поддерживаются — репозиторий должен быть публичным, установка идёт по тегу.
  • Автообновления нет: обновление плагина всегда запускает владелец.
  • Магазина чужих плагинов нет. Готовые расширения не публикуются и не продаются через панель — источник только ваш файл или ваш репозиторий.
  • Слотов три (своя страница, кнопка каталога, вкладка склада) — встроиться в произвольный экран панели плагин не может.
  • Мост не отдаёт гостей, заказы, финансы, сотрудников и переписки — обойти это правами нельзя, таких запросов просто не существует.
  • Отдельного журнала «плагин сделал то-то» нет. Права видны на карточке, а правки каталога попадают в обычную историю позиций; если нужен контроль, начинайте с плагина, которому выдано только чтение.
  • Технические потолки: бандл до 4 МБ, до 8 сетевых адресов в манифесте, до 1 МБ на один ключ хранилища; серверный прогон — до 30 секунд и до 50 обращений в интернет за раз.
  • Данные плагина остаются в облаке вашего бренда: у аккаунта на cenaly.ru состояние серверной части лежит в российском контуре.

Устранение неполадок#

Симптом Проверьте
Раздела нет в меню включена ли карточка «Кастомные редакторы (SDK)» в магазине приложений; вынесен ли раздел кнопкой «📌 В сайдбар»
Сотрудник не видит кнопок установки так и задумано: установка, удаление и гранты — только у владельца аккаунта
«Бандл в хранилище не совпадает с установленным отпечатком. Запуск заблокирован» файл плагина подменили после установки — переустановите редактор, чтобы записать новый отпечаток
«Редактор не запустился вовремя (нет connect() за 10 с)» плагин не вышел на связь: ошибка в его коде или не тот файл собран
«Не удалось загрузить бандл редактора» релиз недоступен или файл повреждён — переустановите
«Редактор не найден или выключен» при переходе по ссылке ?app=… плагин удалён или выключен на карточке
«Не удалось получить редактор из GitHub» репозиторий приватный, нет manifest.json в корне, нет dist/index.js в теге или тег назван не по конвенции v{версия}
«Допустимы только адреса localhost / 127.0.0.1» режим разработчика умышленно не принимает внешние адреса — поднимите сборку локально
Плагин не видит нужные данные сверьте «Права» на карточке; у разработчика с грантом права дополнительно режутся пересечением с грантом
Плагин не может обратиться к чужому сервису прямой сети из песочницы нет: обращение делается серверной частью, а адрес должен быть в манифесте
«Редактор сообщает о несохранённых изменениях. Закрыть всё равно?» плагин сам сообщил о черновике — сохраните работу внутри него перед закрытием

Частые вопросы#

Нужно ли уметь программировать?#

Чтобы установить готовый релиз — нет. Чтобы получить сам релиз — да: его пишет разработчик или ИИ-агент по нашему шаблону из блока «Разработка с ИИ». Раздел — инструмент для кода, а не конструктор «мышкой».

Может ли чужой плагин увидеть моих клиентов или выручку?#

Нет. Плагин работает в песочнице и получает данные только через мост, а мост умеет ровно шесть вещей: каталог, цены и стоп-листы, справочник склада, своё хранилище, вызов своей серверной части и элементы интерфейса. Гостей, заказов, чеков, финансов, сотрудников и переписок там нет в принципе. Что именно разрешено конкретному плагину, всегда видно на его карточке в строке «Права».

Как отдать разработку подрядчику и не пускать его в аккаунт целиком?#

Заведите ему учётку сотрудника, а затем выдайте грант в блоке «Доступ разработчика»: отметьте только нужные права и поставьте срок (по умолчанию 14 дней, максимум 90). Он получит режим разработчика и ничего больше; установка плагина всё равно останется за вами. Грант отзывается одной кнопкой.

Обновится ли плагин сам, когда автор выпустит новую версию?#

Нет. Обновление запускает владелец: «Проверить обновления» → «Обновить до …». Так новая версия не появится в аккаунте без ведома человека — вместе с версией могли поменяться и запрашиваемые права.

Где плагин хранит свои настройки и данные?#

В вашем аккаунте, в отдельном хранилище под его идентификатором (до 1 МБ на ключ), плюс, если он их использует, в кастомных полях ваших карточек — каждый плагин видит только своё пространство. У аккаунта на cenaly.ru серверная часть и её состояние остаются в российском контуре.

Чем это отличается от API и MCP?#

API для разработчиков и MCP нужны, когда программа работает снаружи: свой сайт, чужая учётная система, ИИ-агент. Кастомный редактор — наоборот, интерфейс внутри панели: сотрудник открывает его как обычную страницу админки и не выходит из рабочего окна.


Связанные разделы#

Была ли статья полезной?