Files
public/mklab_project_task_indicators/TECHNICAL.md

6.2 KiB
Raw Blame History

Техническая документация: 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), к которой можно привязывать показатели и связи.

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 Граф-отчёт «Показатели по узлам»