Персонализирани редактори
Има работа, която не съществува в нито един панел, защото е само ваша: собствено преизчисляване на цени по формула на доставчик, сверяване на каталог с чужда отчетна система, екран „попълни характеристиките на партида наведнъж“. Разделът „Персонализирани редактори“ ви позволява да напишете такъв мини-редактор сами (или да го поръчате) и да го стартирате вътре в админ панела — в пясъчник, с достъп точно до данните, които сте разрешили.
Отваряне: Админ панел → Персонализирани редактори (admin.cenaly.com/custom-editors). Разделът се включва с карта „Персонализирани редактори (SDK)“ в магазина за приложения — по подразбиране е скрит. Бутонът „📌 В страничната лента“ на самата страница го изнася в страничното меню, когато ви е нужен често.
Какво представлява този раздел#
Плъгинът е компилиран скрипт (index.js) и неговото описание (manifest.json). Панелът зарежда скрипта в изолиран фрейм: той няма достъп нито до сесията ви, нито до кода на админ панела, нито до мрежата. Да обменя данни може само чрез моста — набор от разрешени заявки, всяка от които се проверява спрямо издадените права.
Страницата се състои от блокове:
| Блок | Какво съдържа |
|---|---|
| Инсталирани редактори | карта за плъгин: име, „Версия“, „Права“, „Разположение“, „Разрешени мрежови хостове“, „Обновен“, източник (хранилище и таг с връзка). Действия: „Отвори“, „Включи“ / „Изключи“, проверка за обновления, „Изтрий“ |
| Инсталиране на редактор | инсталиране от файлове на диска |
| Инсталиране от GitHub | инсталиране по адрес на публично хранилище и таг |
| 🤖 Разработка с ИИ (вайб-кодинг) | шаблон на проект, промпт за ИИ агент и снимка на каталога като тестови данни |
| 👩💻 Достъп за разработчик | временни грантове за изпълнител към режим за разработчик |
| 🛠️ Режим за разработчик | стартиране на плъгина директно от вашия компютър, без инсталиране |
Отвореният редактор заема целия екран, а адресът на страницата получава означение ?app=<идентификатор> — такава връзка може да споделите с този, който има достъп.
Какво е необходимо за стартиране#
| Какво | За какво |
|---|---|
| Карта „Персонализирани редактори (SDK)“ в магазина за приложения | разделът е нишов и по подразбиране е изключен |
| Вие сте собственик на акаунта | инсталиране, включване, изтриване на плъгини и издаване на грантове може само собственикът; служителите виждат списъка само за четене |
Компилиран плъгин: index.js + manifest.json |
или ваш, или от разработчик, или релиз в публично GitHub хранилище |
| За разработка — профил на служител за разработчика | режимът за разработчик се издава по имейл на неговия работен логин |
Стъпка 1. Да решите кой ще напише редактора#
Пътищата са три и се различават по това кой държи кода:
| Път | За кого е подходящ | Как |
|---|---|---|
| ИИ агент по нашия шаблон | собственик, който е готов да обясни задачата с думи | блок „Разработка с ИИ“: шаблон + промпт → агентът компилира релиз → вие го инсталирате |
| Собствен или нает разработчик | има изпълнител или разработчик в екипа | издайте му грант за режим за разработчик, той пише и отстранява грешки на живия акаунт, вие инсталирате готовия релиз |
| Готов релиз от GitHub | плъгинът вече е написан (от вас или за вас) | „Инсталиране от GitHub“: адрес на хранилището и таг |
И в трите случая инсталирането остава за собственика: дори разработчик с грант може само да стартира своя код при себе си в режим за разработчик, но не и да го инсталира в акаунта.
Стъпка 2. Разработка с ИИ (вайб-кодинг)#
Блокът „🤖 Разработка с ИИ (вайб-кодинг)“ дава четири неща, за да предадете задачата на ИИ агент (Claude Code, Cursor и подобни) и да не му обяснявате контракта от нулата:
- „⬇️ Изтегли шаблон на проект (zip)“ — готова рамка на плъгин: манифест, входна точка, описание на контракта (
GUIDE.en.md) и инструкция за агента. Архивът се компилира директно в браузъра, нищо външно не е нужно да се изтегля. - „📋 Копирай промпт за агента“ — текст на задачата на английски: да стартира от шаблона, да се сверява с гида, с какво да проверява резултата.
- Конфигурация на набор от инструменти за агента — с нея агентът компилира плъгина, вдига локален стенд-копие на пясъчника, прави скрийншоти и снимки на състоянието, а накрая компилира релиз: zip за ръчно инсталиране или релиз в GitHub.
- „⬇️ Изтегли снимка на каталога (тестова фикстура)“ — вашите категории и позиции като файл, за да тества агентът с реални данни, а не с измислени.
⚠️ От снимката се изрязват изцяло персонализираните полета на други плъгини: данните, които чуждо разширение съхранява на вашите карти, не напускат акаунта заедно с фикстурата.
Стъпка 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 — това е измама, а не работа на разширението.
Ограничения#
- Разделът е изключен по подразбиране и е предназначен за тези, които пишат код (или го поръчват): на обикновения собственик тук не му е мястото.
- Всичко освен прегледа е само за собственика на акаунта. Служителят вижда хъба само за четене; режимът на разработчик е само с активен грант.
- Частни 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 на собствената АТС са нужни, когато програмата работи отвън: собствен сайт, чужда отчетна система, ИИ агент. Кастомният редактор е обратното — интерфейс вътре в панела: служителят го отваря като обикновена страница на админ панела и не излиза от работния прозорец.
Свързани раздели#
- Магазин за приложения — където се включва разделът и вградените разширения
- Склад — разделът, в който живеят разширения като „VetIS“, и справочникът на стоките
- Импорт на каталог — щатният път за зареждане на позиции, ако задачата е само в това
- Витрина на собствен код (headless) — отвореният договор за данни за външен сайт
- API и MCP на собствената АТС и Guest API за ИИ агенти — работа отвън, а не вътре в панела
- Служители и смени — профил за разработчика и роли
- Сигурност и данни — къде се съхраняват данните и кой има достъп до тях
- Поддръжка — къде да пишете, ако приставката се държи подозрително