vovancho/wk-portal

Портал организации

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 1

Watchers: 1

Forks: 0

Type:project

v0.0.2 2017-05-09 10:14 UTC

README

Портал организации wk-portal

Содержание

Краткое описание

Портал организации "wk-portal" представляет из себя расширяемую базовую систему для автоматизации различных процессов организации.

Некоторые особенности портала:

  • Доменная и локальная авторизация с гибкой настройкой ролей системы
  • Возможность автоматического импортирования сотрудников организации из кадровой системы, включая специальности, совмещения сотрудников.
  • Гриды для отображения таблиц с данными имеют гибкую настройку: видимость, порядок, сортировку, фильтрацию колонок. Дополнительные фильтры. Экспорт отсортированных, отфильтрованных данных в форматы PDF и Excel.
  • Формирование тяжелых отчетов с возможностью отображения прогресса формирования, отмены формирования
  • Очередь обработчиков процессов с возможностью отображения прогресса обработки, отмены обработчиков, формирования отчетов обработки. В системе этот подход используется для обработки импорта сотрудников.
  • Гибкое расширение системы, с возможностью добавления своих плиток меню в меню базовой системы

Система разработана как база для расширения. Пример расширения системы: Приложение для БУ "Нижневартовская городская поликлиника".

Проект реализован с помощью PHP фреймворка Yii2

Основное меню

Основное меню

Основное меню содержит две плитки: Настройки портала и Справочники. Также присутствует возможность добавления меню с ссылками на дополнительные приложения

Настройки портала

Настройки портала

Настройки портала содержат две плитки: Авторизация и Общие настройки портала. Также присутствует возможность добавления меню с ссылками на дополнительные приложения

Авторизация

Авторизация

Страница меню Авторизация содержит три плитки: Роли, Настройки LDAP и Пользователи системы

Авторизация в системе возможна тремя способами:

Тип авторизации Описание
Только локальная В этом случае пользователи - это сотрудники организации в системе. Новые пользователи добавляются администратором системы или импортируются из сторонних систем. При импорте сотруднику автоматически присваивается логин (Транслитерация на латиницу ФИО сотрудника, например IvanovAE) и пароль 11111111. Пользователь может войти в систему и поменять свой пароль. Однако сделать в системе ничего не сможет, пока администратор не назначит необходимые разрешения.
Только доменная (LDAP) В этом случае пользователи - это пользователи домена в локальной сети организации. Для входа в систему используются ученые данные для входа в компьютер. Для разгранечения ролей пользователей используются группы домена.
Локальная и доменная В этом случае используются оба типа авторизации одновременно в порядке: сначала локальная авторизация, в случае неудачи происходит доменная авторизация.

Роли

Роли

Грид со всеми ролями системы

Роли делятся на два вида:

  • Системные - Роли вшиты в систему. Их можно использовать для добавления в новые роли. Удаление системных ролей невозможно.
  • Пользовательские - Роли созданные администраторами системы. В пользовательские роли можно включать системные и другие пользовательские роли.

В системе используется ролевая система RBAC на основе ролей и разрешений

Роли2

Профиль системной роли Администратор системы

Каждой роли можно назначить имя доменной группы. В случае если у доменного пользователя имеется назначеная группа, то ему будет разрешена роль с этой группой.

Настройки LDAP

Настройки LDAP

Форма настроек доменной авторизации LDAP

Для активации доменной авторизации необходимо указать следующие настройки:

  • Имя хоста/IP адрес контроллера домена
  • Порт подключения к контроллеру домена, по умолчанию 389
  • Логин администратора контроллера домена
  • Пароль администратора контроллера домена

Пользователи системы

Пользователи системы

Грид пользователей системы

Пользователи системы - это сотрудники организации.

Грид содержит следующие колонки данных:

  • Код
  • Фамилия Имя Отчество
  • Должность
  • Подразделение
  • Дата увольнения
  • Пол
  • Телефон
  • Внутренний телефон

и скрытые по умолчанию колонки:

  • Логин
  • Электронная почта
  • Дата приема на работу
  • Дата рождения
  • ИНН
  • СНИЛС
  • Адрес
  • Время создания записи
  • Время обновления записи
  • Автор создавший запись
  • Автор обновивший запись

Профиль пользователя

Профиль пользователя (сотрудника)

Профиль пользователя содержит его данные и историю его специальностей и совмещений.

Пользователю в профиле можно назначить:

  • Специальность
  • Совмещение
  • Роль (для определения разрешений в системе)

Добавление специальности

Добавление специальности пользователю (сотруднику)

При добавлении специальности или совмещения, сотрудника можно привязать к определенному зданию, в котором он работает по данной специальности/совмещению.

Общие настройки портала

Общие настройки портала

Форма общих настроек портала

Общие настройки портала содержат следующие настройки:

  • Электронный адрес портала (Из этого адреса будут рассылаться электронные письма)
  • Электронные адреса администраторов (Если несколько, перечисляются через запятую. На эти адреса будут слаться системные письма портала, например результат импорта сотрудников с прикрепленным отчетом)
  • Наименование организации (Имя организации, будет отображено в подвале портала)
  • Добавочная информация (Дополнительная информация, будет отображена под наименованием организации в подвале портала)
  • Активировать новогоднюю тему
  • Активировать импорт сотрудников

Справочники

Справочники

Справочники портала

Базовая часть портала содержит следующие справочники:

  • Должности
  • Подразделения
  • Здания

Должности

Справочник с должностями сотрудников

Подразделения

Справочник с подразделениями организации

Здания

Справочник с зданиями организации

Особенности системы

Особенности гридов системы

В системе используются особые гриды для отображения данных. Колонки гридов имеют собственную сортировку и фильтрацию.

Особенности гридов системы

Грид с дополнительными возможностями настройки, фильтрации и экспорта данных

Настройки грида

Настройки грида

Форма настройки грида

Каждый грид в системе имеет следующие настройки:

  • Количество записей на странице
  • Изменение видимости колонок
  • Изменение порядка колонок
  • Сброс сортировки грида по умолчанию
  • Сброс настроек грида по умолчанию

Настройки грида можно деактивировать, если в них нет необходимости

Дополнительный фильтр грида

Дополнительный фильтр грида

Форма дополнительного фильтра грида

Некоторые гриды в системе имееют Дополнительный фильтр. Он представляет из себя модальное окно с дополнительными параметрами фильтрации данных в гриде с возможностью поиска по параметрам.

Экспорта данных грида

Экспорта данных грида

Экспорт данных грида в PDF

  • Данные грида можно экспортировать в форматы PDF или Excel.
  • Для экспорта данных используется встроенный в систему Загрузчик отчетов с возможностью отображения прогресса формирования отчета и отменой формирования в случае необходимости.
  • Экспорт производится с учетом настроенных пользователем: фильтров, сортировки, порядка, видимости колонок. А также с учетом установки Дополнительного фильтра.
  • Файлы отчетов хранятся в Загрузчике отчетов, их можно открыть повторно по требованию, без повторного формирования.

Экспорт данных грида можно деактивировать, если в нем нет необходимости. Или активировать экспорт только в определенные форматы.

Остальные возможности

Некоторые гриды используются совместно с элементами-списками выбора значений, например гриды справочников

Выбор значений из грида

Порядок выбора записей грида с использованием списка с выбором значений

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

Это поведение запрограммировано в виджетах грида GridView и списка с выбором значений Select2

Затребованные отчеты

Затребованные отчеты

Форма загрузчика отчетов

При нажатии меню Система\Затребованные отчеты откроется модальное окно Загрузчика отчетов.

Загрузчик отчетов имеет следующие возможности:

  • Отображение прогресса формирования отчета;
  • Возможность отменить выполнение отчета;
  • Хранение ранее выполненых файлов отчетов с возможностью скачивания;
  • Экспорт данных грида использует Загрузчик отчетов;
  • Возможность запустить формирование нескольких отчетов;
  • Независимость от обновления страницы в браузере.

Обработчики

Обработчики

Обработчики портала организации

При нажатии меню Система\Обработчики откроется страница с гридом обработчиков.

Обработчики - это процессы выполнения задач, например импорт сотрудников. Их удобно использовать для формирования тяжелых отчетов, обработок, преобразований, импорта данных. Такие обработчики будут запускаться по очереди, в зависимости от настроек сервера. Их реализация основана на очередях Yii2. Количество параллельно выполняемых обработчиков зависит от настроек сервера. Для этого используется система контроля над процессами Supervisor.

  • Каждый обработчик отображает прогресс выполнения
  • В случае необходимости можно отменить выполнение обработчика
  • По окончанию обработки можно скачать отчет выполнения обработчка, если он предусмотрен
  • Некоторые обработчики отображаются только пользователям, запустившим его. Некоторые всем администраторам, например импорт сотрудников

Обработчики, колонки

Форма настроек грида обработчиков

Грид обработчиков имеет следующие колонки:

  • Дата добавления
  • Статус (В очереди, В процессе, Выполнен, Отменен, Ошибка)
  • Описание
  • Процент выполнения
  • Краткий отчет
  • Файлы

и скрытые колонки по умолчанию:

  • Время выполнения
  • Использованная память
  • ИД (Порядковый ИД обработчика)
  • Идентификатор (ИД пользователя или ИД сессии)
  • Наименование (Системное имя обработчика)

Обновления

Обновления

Описание обновлений системы

При нажатии меню Система\Обновления откроется страница с виджетом обновлений портала организации.

  • Контент обновлений сгруппирован по вкладкам (сверху) и плиткам (слева);
  • Каждая плитка или вкладка отображается в зависимости от разрешений пользователя (Описание определенного приложения отображается только для пользователя, у которого есть доступ к нему, а не для всех пользователей);
  • Контент использует форматирование Markdown.

Контакты

Контакты

Контакты портала организации

При нажатии меню Система\Контакты откроется страница с контактами портала организации.

  • В контактах отображаются все сотрудники организации с заполненными телефоном или электронной почты;
  • Уволенные сотрудники скрываются из списка контактов;
  • Контакты сгруппированы по подразделениям с возможностью сортировки и фильтрации.

Особенности расширения системы

Система разработана как база для расширения под нужды организации.

Пример расширения приложения для портала БУ "Нижневартовская городская поликлиника", который добавляет следующие возможности:

  • Расширение плиток на главной странице, с ссылками на доступные сайты, информационные системы для пользователей корпоративной сети;
  • Расширение для работы с закрытой частью портала ОФОМС, используя REST API:
    • Проверка полисов пациентов;
    • Прикрепление пациентов к врачу;
    • Прикрепление пациентов списками (с использованием обработчика базовой системы).
  • Расширение для работы с IP телефонией.

Для добавления своего приложения необходимо:

  • Добавить Yii2 приложение в папку базового портала, на основе шаблона Yii2 Advanced.
  • Добавить autoload.php в index.php нового приложения.
      ...
      require(__DIR__ . '/../../vendor/autoload.php'); // autoload.php папки vendor базового портала организации
      require(__DIR__ . '/../vendor/autoload.php');
      ...
      (new yii\web\Application($config))->run();
  • Добавить представление бренда в файл @common/config/params-local.php
      return [
          ...
          'brandLabelView' => '@myapp/views/site/_brandLabel',
          ...
      ];
  • Добавить плитки меню своего приложения в меню базового портала, если это необходимо. Для этого необходимо добавить записи в таблицу БД cardlist, согласно документации по виджету CardList
  • Добавить путь документации/обновления в настройки виджета Documenter, если необходимо.

Тестирование

Тестирование

Модульные тесты доменной архитектуры базовой части портала

Для тестирования проекта используется тестовый фреймворк Codeception

Портал организации имеет не менее 48 тестов с более 430 проверками доменной архитектуры

Для запуска тестов необходимо ввести команду:

codecept run unit -c domain

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

http://vovancho.github.io/wk-portal

Виджеты

Класс Описание
\common\widgets\ActiveForm\ActiveField Расширение базового класса \yii\bootstrap\ActiveField.

Добавлены дополнительные элементы формы:

\common\widgets\ActiveForm\ActiveFilterForm Расширение класса \common\widgets\ActiveForm\ActiveForm для использования в модальных окнах дополнительных фильтров грида \common\widgets\GridView\GridView
\common\widgets\ActiveForm\ActiveForm Расширение базового класса \yii\bootstrap\ActiveForm с переопределенным свойство fieldClass на \common\widgets\ActiveForm\ActiveField
\common\widgets\Breadcrumbs\Breadcrumbs Виджет хлебных крошек
\common\widgets\CardList\CardList Виджет набора плиток кнопок с возможностью сортировки по популярности, поиска
\common\widgets\Documenter\Documenter Виджет для отображения обновлений приложения, или документации
\common\widgets\FixButtonBackward\FixButtonBackward Виджет добавляет внизу слева страницы кнопку для перехода на предыдущую страницу
\common\widgets\FixButtonOnTop\FixButtonOnTop Виджет добавляет внизу справа страницы кнопку для перехода наверх страницы
\common\widgets\GridView\GridView Виджет грида с дополнительными возможностями
\common\widgets\GridViewModal\GridViewModal Виджет \common\widgets\GridView\GridView для использования в модальных окнах
\common\widgets\HeaderPanel\HeaderPanel Виджет панель-заголовок
\common\widgets\Html\Html Расширение базового класса Yii2 \yii\bootstrap\Html.

Добавлены дополнительные элементы формы:

\common\widgets\Panel\Panel Виджет Bootstrap панели
\common\widgets\ReportLoader\ReportLoader Виджет обработки и формирания отчетов
\common\widgets\Select2\Select2 Виджет выбора значений из списка с использованием jquery плагина Select2
\common\widgets\SystemInfo\SystemInfo Виджет с кнопкой-версией приложения, открывающей модальное окно с системной информацией
\common\widgets\Tabs\Tabs Виджет Bootstrap вкладок Tabs с использованием jquery плагина PropellerKit на базе стандартного виджета \yii\bootstrap\Tabs