-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
- YCLIENTS
- Маркетплейс интеграций
- Плагинизация
- Введение в плагинизацию
- Основные концепты и терминология
Основные концепты и терминология
Что такое плагин
Плагин — это расширяемый модуль, создаваемый внешними разработчиками, который встраивается в интерфейс или поведение продукта без модификации его ядра. Поддерживается модификация UI продуктов ERP и виджета онлайн-записи.
- Frontend-часть: встраивается непосредственно в пользовательский интерфейс ERP нативно (не только через iframe).
- Backend-часть: разворачивается на инфраструктуре YCLIENTS. Может выполнять API запросы и отвечать на них, ⏳ подписываться на события в шине событий. Дополнительно развертываются необходимые сервисы для работы плагина (база данных, кэш, очередь и т. д.).
После прохождения всех этапов публикации, плагин становится доступен для установки через маркетплейс YCLIENTS.
Условные обозначения
⏳ — Реализация запланирована, но не реализована на текущий момент. Описание приводится для понимания будущего направления.
Ключевые термины и концепции
- Хост — это приложение, которое использует плагин (ERP, виджет-онлайн-записи).
- Плагин — это модуль, который предоставляет возможность интеграции с хост-приложением.
- Точка монтирования — это компонент, где происходит монтирование плагина в хост приложении.
Типы плагинов
- Frontend — расширяет интерфейс ERP. Пример: кнопки, встроенные нативно в интерфейс, ведущие на настройки плагина в YCLIENTS.
- Backend — отвечает за бизнес-логику на сервере.
- Mixed — сочетает обе части: UI-виджеты + серверная обработка данных.
Поддерживаемые возможности
Платформа YCLIENTS позволяет расширять интерфейс двух ключевых продуктов: ERP и виджет онлайн-записи.
ERP
Поддерживается встраивание плагинов в следующие зоны интерфейса ERP:
- Пункты меню.
- Разделы на страницах ERP.
- Модальные окна.
- Кнопки в окне работы с записью.
- Кнопки в окне работы с клиентами.
- …
- и т. д.
Виджет онлайн-записи
Можно добавить элементы в следующих частях интерфейса:
- Список выбора услуг и сотрудников.
- Страница информации о сотруднике.
- Страница информации о компании.
- Страница подтверждения записи.
- …
- и т. п.
Полный список доступных зон встраивания доступен в статье.
Поддерживаемые способы добавления содержимого
- Через API добавления элементов (в зависимости от зоны встраивания).
- ⏳ Полная самостоятельная верстка страницы или раздела с использованием дизайн-системы YCLIENTS.
Платформа YCLIENTS позволяет развернуть backend сервис на инфраструктуре YCLIENTS:
- Поддерживается любой язык программирования.
- Доступен шаблон плагина на языке PHP.
Для работы плагина есть возможность подключить:
- Базу данных (PostgreSQL).
- Кэш (Redis).
- ⏳ Очередь (kafka).
Работа с данными
В рамках плагинизации YCLIENTS поддерживается три основных способа работы с данными плагина:
- Публичное API.
- Запись и чтение в собственную Базу Данных плагина.
- ⏳ Event bus — внутренняя шина событий, по которой платформа и плагины обмениваются сообщениями в реальном времени. В плагинах вы используете ее, чтобы реагировать на события ERP. Например, при открытии окна записи отправить событие о желании добавить функциональность.
Возможность влиять на бизнес процессы компаний и клиентов
В YCLIENTS архитектура плагинов не ограничивается только изменением интерфейса — она дает возможность непосредственно влиять на ход бизнес‑процесса. Выделяются четыре основных сценария:
- ⏳ ПИП-1: Плагины, изменяющие процессы 1
Позволяют встраиваться в наш процесс. Пользователь не может перейти с шага 1 на шаг 2, не пройдя шаг процесса плагина. Пример: обязательное заполнение поля в карточке записи. - ⏳ПИП-2: Плагины, изменяющие процессы 2
Заменяют одну из промежуточных операций или шагов. Ваш код выполняется вместо штатного бизнес‑кода на заданном этапе. Пример: вместо выбора сотрудника, интерактивный выбор места (как в кинотеатре) — для коворкингов. - ПДП-1: Плагины, дополняющие процессы 1
Встраиваются параллельно core-процессу, не влияют на его прохождение. Пример: кастомизация виджета онлайн-записи. - ПДП-2: Плагины, дополняющие процессы 2
Встраиваются до или после выбранного шага. Пример: редирект после совершения записи через виджет онлайн-записи.
Ниже представлены схемы работы для каждой из этих категорий. Схемы ПИП-1 и ПИП-2 будут доступны в ближайших обновлениях.
Ограничения плагинов
Backend плагины ограничены в сетевом взаимодействии. По умолчанию они не могут делать внешних вызовов и ограничены сетевым контуром YCLIENTS.
Сетевая доступность добавляется по заявке на конкретные адреса, необходимые для функционирования плагина.