kovrigo / apply-demo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Apply

Описание

Apply - CMS для карьерных сайтов с возможностью продвижения в соцсетях и таргете:

Архитектура

Apply разработан на Laravel и Nova. Для понимания принципов работы необходимо ознакомиться с документацией по ссылкам.

Все клиенты работают в единой системе и используют общий функционал (например, интеграцию с рекламными кабинетами и алгоритмы продвижения). При этом каждый клиент может настроить для себя внешний вид справочников (поля, фильтры, виджеты и т.д.), навигацию, а также разработать собственную бизнес-логику на встроенном скриптовом языке (js).

Инфраструктура

Развернуты тестовый и рабочий серверы. Вертикальная оранжевая полоска слева - индикатор тестового сервера, зеленая - локальной среды разработки:

Клиент может выполнить все настройки на тестовом сервере и одной кнопкой перенести их на рабочий.

API

Доступ к системе из внутренних скриптов, а также извне реализован посредством EloquentJs. Для понимания принципов работы необходимо ознакомиться с документацией по ссылке.

Eloquent.Post.find(1).then(post => console.log(post))

Внутренние скрипты выполняются от имени системного пользователя, который задается в ресурсе Tenant (аккаунт клиента). Для внешних скриптов необходима аутентификация по токену.

Конфигуратор

Клиент может настроить систему согласно своим требованиям через json и встроенный скриптовый язык (js). Настройки json поддерживают элементы схем $ref и allOf, что позволяет разбить настройки на небольшие, логически независимые куски, а также реализовать наследование:

Есть два слоя настройки - вендора и клиента. Настройки вендора доступны только для чтения и хранятся в ресурсе ResourceSetting - они нужны исключительно для удобства. Можно рассматривать их как настройки по умолчанию.

Клиентские настройки хранятся в ресурсе ResourceCustomSetting и их может редактировать сам клиент. Настройки для конкретного пользователя хранятся в ресурсе UserProfile (роль) и, как правило, собираются/наследуются от клиентских/вендорских настроек.

Верхний уровень:

  • resources - Настройки ресурсов.
  • navigation - Левая панель навигации.
  • home - Домашняя страница.

Настройки конкретного ресурса (см. ниже):

  • policy
  • fields
  • lenses
  • actions
  • indexQuery
  • cards
  • label - Заголовок ресурса.
  • singularLabel - Заголовок ресурса в единственном числе.

policy

Политики. Можно разрешить или запретить пользователю конкретное действие, например, delete или update.

Можно разрешить или запретить действие по условию (формат условия соответствует QueryBuilder из EloquentJs).

fields

Поля. Каждое поле задается как:

  • class (строка)
  • constructor (массив параметров)
  • calls (название метода: массив параметров)

Все классы и методы можно посмотреть в документации к Laravel Nova.

Поддерживаются вложенные поля, например, Tabs (позволяет разбить поля на вкладки) и DependencyContainer (позволяет отображать/скрывать группу полей по условию):

lenses

Быстрые фильтры. Можно задать название и условие (формат условия по аналогии с политиками):

actions

Быстрые действия:

Позволяют запросить у пользователя информацию (набор полей), валидировать ввод и выполнить произвольный скрипт:

indexQuery

Общий фильтр записей в списке. Применяется всегда, в т.ч. при переходе к быстрому фильтру.

cards

Виджеты ресурса. Можно выводить различные метрики и диаграммы, а также виджет для работы с бизнес-процессом (см. раздел ниже):

Бизнес-процессы

Некоторые ресурсы, например, Вакансии и Отклики, поддерживают бизнес-процессы (БП или Workflow). Для такого ресурса можно задать список статусов и правила перехода из одного статуса в другой. Конечный пользователь может перевести запись из одного статуса в другой посредством виджета (см. cards в разделе Конфигурация).

БП представляет собой json, где первый уровень - это статусы, из которых возможен переход, а второй - в которые:

Для каждого перехода можно задать:

  • label - Название кнопки (может отличаться от названия статуса, например, "Отправить на доработку" и "На доработке").
  • permissions - Список ролей, имеющих право выполнить переход.
  • operations - Аналог быстрых действий в ресурсах (см. actions в разделе Конфигуратор). Например, можно запросить у пользователя комментарий при отправке на доработку и занести его в историю работы с записью.

Консоль вендора

Набор команд artisan для вендора

  • apply:manage - Позволяет добавлять новые и менять существующие ресурсы, поля и связи. Автоматически создает миграции, модели, политики, настройки json для конфигуратора и т.д.
  • account:manage - Добавление новых клиентов.

Roadmap

  1. Удобный GUI для конфигуратора.
  2. Демо-конфигурация.
  3. Типовые отчеты Google Data Studio по эффективности рекламных кампаний (все данные есть в БД apply, каждому клиенту предоставляется специальный пользователь БД с доступом на чтение) и карьерного сайта.

About


Languages

Language:PHP 87.7%Language:Vue 7.2%Language:Blade 5.1%