Public release from ruodoo-project: 19.0 - 2026-07-26 21:17:35 UTC
This commit is contained in:
133
mklab_project_task_indicators/TECHNICAL.md
Normal file
133
mklab_project_task_indicators/TECHNICAL.md
Normal 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` | Граф-отчёт «Показатели по узлам» |
|
||||
Reference in New Issue
Block a user