Public release from ruodoo-project: 19.0 - 2026-07-26 21:17:35 UTC

This commit is contained in:
CI Publish Bot
2026-07-26 21:17:45 +00:00
commit 4f7b594ec8
1335 changed files with 191620 additions and 0 deletions

View File

@ -0,0 +1,133 @@
# Техническая документация: 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` | Граф-отчёт «Показатели по узлам» |