# Слой директив (Directive Layer) **name:** `directive_layer` **version:** 19.0.1.0.0 **author:** Mk.Lab --- ## 1. Общее описание **Директива** — это структурированное задание, которое система Odoo автоматически создаёт и назначает исполнителю при наступлении бизнес-события. Директива несёт в себе информацию о типе работ, ответственных ролях, дедлайне, трудоёмкости и ожидаемом результате. --- ## 2. Установка 1. Убедитесь, что установлен модуль `base_user_role` 2. Скопируйте папку `directive_layer` в директорию `addons` 3. Перезапустите сервер Odoo 4. Перейдите в **Настройки → Приложения → Обновить список** 5. Найдите **«Directive Layer»** и нажмите **Установить** После установки автоматически создаются 7 стадий заданий. ## 3. Функциональность - Автоматическое создание заданий при наступлении событий в системе - Три типа исполнителей: человек, программный агент, оборудование - Статусная машина с контролируемыми переходами между стадиями - Визуальные светофоры для контроля состояния исполнителя и ресурсов - Шаблоны и группы шаблонов для быстрого создания пакетов заданий - Настройка правил автоматической генерации без программирования - Рабочий стол исполнителя — полноэкранный дашборд для работы с заданиями --- --- ## 4. Роли пользователей | Роль | Что может делать | |---|---| | Исполнитель | Видит свои задания, берёт в работу, завершает | | Заявитель | Создаёт и отслеживает задания | | Диспетчер | Назначает исполнителей, управляет очередью | При назначении роли **Исполнителя** система автоматически устанавливает «Рабочий стол исполнителя» домашней страницей пользователя. --- ## 5. Жизненный цикл директивы ``` Черновик ↓ подтверждение Подтверждена ↓ планирование Запланирована ↓ старт В работе ←→ На паузе ↓ завершение Выполнена ``` При завершении задания система автоматически уведомляет объект-источник (задачу, заказ и т.д.) о результате. --- ## Как это выглядит в интерфейсе ### На форме объекта (задача, заказ, счёт...) После подключения к объекту на его форме появляются три элемента: **Кнопка «Выбрать тип»** в шапке формы — позволяет выбрать группу шаблонов заданий для данного объекта. **Кнопка «Директивы»** — показывает количество заданий, связанных с записью. Нажмите, чтобы открыть список. **Поле «Текущий статус исполнения»** — автоматически вычисляемый текст с наиболее приоритетным активным заданием, ближайшим дедлайном и ожидаемой датой завершения. ![img_1.png](img_1.png) --- ### Рабочий стол исполнителя по задачам Полноэкранный канбан-дашборд для пользователей с ролью «Исполнитель». Показывает только задания, назначенные текущему пользователю, сгруппированные по стадиям. ![img_2.png](img_2.png) --- ### Меню «Директивы» В главном меню появляется раздел **Директивы** с двумя пунктами: - **Все директивы** — список всех заданий в системе (канбан и список) - **Политики** — правила автоматического создания заданий без программирования В подразделе **Директивы → Настройки** доступны справочники: - **Шаблоны директив** — словарь шаблонов с типом работ, трудоёмкостью и ролями - **Группы шаблонов директив** — наборы шаблонов для пакетного создания заданий - **Виды работ** — справочник видов работ - **Статусы директив** — справочник стадий заданий - **Источники директив** — список объектов, к которым подключены задания ![img_3.png](img_3.png) --- ## Как создавать задания: три способа ### 1. Вручную Откройте нужный объект → кнопка **«Выбрать тип»** → выберите группу шаблонов → задания создаются немедленно. ![img_4.png](img_4.png) ### 2. Автоматически через политику (без кода) Перейдите в **Директивы → Политики** и создайте правило: - Выберите объект (задача, заказ и т.д.) - Укажите событие: при изменении поля, при создании записи или при вызове действия - Задайте условие срабатывания - Выберите группу шаблонов ![img_5.png](img_5.png) После сохранения задания будут создаваться автоматически при наступлении события. ### 3. Через код (для разработчиков) Разработчик подключает модуль к нужной модели через `directive.mixin`. Подробнее — в технической документации и модулю. --- ## Зависимости | Модуль | Назначение | |---|---| | `base` | Базовый Odoo | | `web` | Фронтенд | | `base_user_role` | Управление ролями пользователей | | `project` | Модуль проектов |