Структура продукта
==================================

.. contents:: Содержание
   :depth: 3

Как все устроено  
------------------------------------


Система Synergy Service реализована на базе платформы ARTA SYNERGY, путем создания конфигурации, допускающей гибкую настройку объектов: форм, маршрутов, статусов и пр...

В системе Synergy Service реализованы следующие глобальные процессы и их подпроцессы:

* Портал самообслуживания
* Диспетчеризация заявок
* Исполнение заявок
* Управление каталогами услуг, активов, исполнителей
   
В конфигураторе приложение ``SynergyService`` состоит из следующих папок:

* ``assets`` - Активы и Локации
   * Справочник видов активов
   * Формы, реестры Активов
   * Формы, реестры Локаций
* ``clients`` - информация по клиентам
   * Форма и реестр карточки клиента
* ``completion_forms`` - формы завершения
   * Формы завершения заявки, форма принятия в работу и  подтверждения завершения заявки
* ``interpreter_scripts`` - скрипты для автоматической смены статусов и работы с формами завершения
* ``orders`` - формы и реестры заявок
    * Папки на каждую услугу, содержащие форму и реестр (в конфигурации по-умолчанию - их 6)
    * Счетчик и шаблон номера
    * Справочник статусов исполнения заявок
* ``performers``
    * Форма и реестр карточек исполнителей
    * Форма и реестр навыков исполнителей
    * Форма и реестр полей исполнителей
* ``services`` - Услуги
    * Форма и реестр услуг
* Группы:    
    * ``SynergyService`` - группа для объединения всех реестров
    * ``service_admin_group`` - группа пользователей с полным доступом
    * ``service_client_group`` - группа пользователей на портал (клиенты)
    

   
В конструкторе приложение ``SynergyService`` состоит из следующих страниц:

* ``auth_page`` - Авторизация
* ``main_page`` - Главная
* ``my_orders`` - Мои заявки
* ``registration_page`` - Регистрация



Список блокирующих процессов (БП)
------------------------------------

event.blocking.interpreter.email.auth.notification
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Блокпроцесс отправляет уведомление автору заявки. По умолчанию в уведомлении указаны:
- номер;
- дата и время регистрации;
- услуга;
- статус;
- плановое время завершения.

event.blocking.interpreter.closingby.timer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Данный БП закрывает заявку, если за отведенное время (например, 8 рабочих часов) инициатор не подтвердил завершение или не отправил эту заявку на доработку.

event.blocking.interpreter.completion_time
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

БП вычисляет (в зависимости от режима работы ``service_form_order_timemode``) затраченное исполнителем время и была ли просрочена заявка.

event.blocking.interpreter.matching
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

БП осуществляет сопоставление данных из формы завершения ``work_completion_form_orders`` (ФЗ исполнителем заявки) на основную форму заявки.

event.blocking.interpreter.matching.acceptexec
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

БП осуществляет сопоставление данных из формы завершения ``work_form_completion_accept`` (ФЗ принятия в работу) на основную форму заявки.

event.blocking.interpreter.matching.approve
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

БП осуществляет сопоставление данных из формы завершения ``work_completion_form_approve`` (ФЗ подтверждения результата решения заявки) на основную форму заявки при завершении.


event.blocking.interpreter.matching.executor
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

БП осуществляет сопоставление данных из формы завершения ``work_completion_form_executor_choose`` (ФЗ выбора исполнителя заявки) на основную форму заявки.

event.blocking.interpreter.matching.firstapprove
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

БП осуществляет сопоставление данных из формы завершения ``work_completion_form_approve`` (ФЗ подтверждения результата решения заявки) на основную форму заявки при согласовании.

event.blocking.interpreter.set.8wh.timer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

БП устанавливает таймер (на определенное количество рабочих минут, по умолчанию на 480). Этот таймер нужен для запуска БП ``event.blocking.interpreter.closingby.timer``

event.blocking.interpreter.set.planFinishDate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

БП заполняет планове время решения по заявке в зависимости от выбранного режима работы (``service_form_order_timemode``).

event.blocking.interpreter.status_0, event.blocking.interpreter.status_1,... 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Эти блокпроцессы меняют статус заявки после определенного этапа маршрута.

