# Техническая документация: mklab_project_task_indicators **name:** `mklab_project_task_indicators` **version:** 19.0.2025.11.14 **author:** MK.Lab **depends:** `base`, `project`, `mklab_base_indicators` --- ## Архитектура Модуль подключает стандартную модель `project.task` к инфраструктуре гиперграфных показателей через `hg.hg_mixin`. Новых моделей данных не вводит — только регистрирует наследование и добавляет представления. ``` project.task hg.hg_mixin (из mklab_base_indicators) ├── hg.node — вершина графа (привязка к res_model / res_id) ├── hg.index — показатель (именованная метрика) └── hg.value — значение показателя (план / факт / дата) ``` --- ## Модели ### `project.task` (расширение) **Файл:** `models/project_task.py` Регистрирует множественное наследование от `hg.hg_mixin`. После этого каждая задача при создании автоматически получает вершину графа (`hg.node`), к которой можно привязывать показатели и связи. ```python class ProjectTask(models.Model): _name = 'project.task' _inherit = ['project.task', 'hg.hg_mixin'] ``` Через `hg.hg_mixin` задача получает следующие поля: | Поле | Тип | Описание | |---|---|---| | `node_id` | Many2one к `hg.node` | Вершина графа данной задачи | | `index_ids` | Many2many к `hg.index` | Показатели, привязанные к вершине задачи | | `related_ids` | Many2many к `hg.node` | Связанные вершины из матрицы связности | Полное описание полей и методов миксина — в документации модуля `mklab_base_indicators`. --- ## Представления ### Вкладка «Связи и показатели» на форме задачи **Файл:** `views/project_task_views.xml` Расширяет стандартную форму задачи (`project.view_task_form2`). Вкладка добавляется после вкладки «Описание» и содержит три блока: **Блок «Показатели»** — список `index_ids` с колонками: | Колонка | Поле | Описание | |---|---|---| | Название | `name` | Название показателя | | Внутренний код | `internal_code_id` | Классификатор | | Внешний код | `external_code` | Код для интеграций | | Текущее значение | `current_value` | Вычисленное актуальное значение | | Кнопка «Вычислить» | `calc` (object) | Запускает пересчёт значения по формуле | **Блок «Связи»** — список `related_ids` с колонками: | Колонка | Поле | Описание | |---|---|---| | Название | `name` | Название связанной вершины | | Модель | `res_model` | Техническое имя модели Odoo | | Кнопка «Открыть» | `goto_related` (object) | Открывает связанную запись в диалоге | **Поле «Вершина графа»** — `node_id`, readonly, показывает привязанную вершину. --- ## Отчёт «Сводная ведомость по проекту» **Файлы:** `reports/template.xml`, `reports/action.xml` **Модель:** `project.project` **ID шаблона:** `mklab_project_task_indicators.general_report` Отчёт формируется из формы проекта и итерирует по `task_ids`. Структура вывода для каждой задачи: - Строка-заголовок с названием задачи (серый фон) — выводится если у задачи больше одного показателя - Для каждого показателя задачи (`index_ids`) выводятся строки значений (`value_ids`): | Колонка | Поле | Формат | |---|---|---| | Наименование показателя | `index.name` | текст | | На дату | `hg_value.date_due` | дд.мм.гггг | | Плановый показатель | `hg_value.value_float_plan` | число | **Колонтитул отчёта:** | Позиция | Содержимое | |---|---| | Левый | Дата печати в формате дд.мм.гггг | | Центр | Текст «Согласовано» | | Правый | Ответственный по проекту (`user_id`) | --- ## Демо-данные **Файл:** `demo/demo.xml` Создаёт демо-задачи с привязанными вершинами и показателями. Использует показатели из демо-данных `mklab_base_indicators`: `demo_index_revenue`, `demo_index_cost`, `demo_index_profit`. --- ## Тесты **Файл:** `tests/` | Файл | Что покрывает | |---|---| | `test_project_task.py` | Создание задачи, автосоздание вершины графа, привязка показателей | | `test_hg_mixin.py` | Работа полей и методов миксина на модели `project.task` | --- ## Связанные модули | Модуль | Роль | |---|---| | `mklab_base_indicators` | Обязательная зависимость: содержит `hg.hg_mixin` и все `hg.*` модели | | `mklab_base_indicators_extended` | Надстройка: шаблоны смет, визард создания показателей, кнопки «Смета-анализ» и «Править смету» | | `mklab_base_indicators_report` | Граф-отчёт «Показатели по узлам» |