6.2 KiB
Техническая документация: 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 |
Граф-отчёт «Показатели по узлам» |