Глава 11: Подзадачи и расчёт трудозатрат

Дорогие друзья, перед нами новая глава! По мере роста бизнеса задач становится больше и они усложняются — простого управления уже недостаточно. Нам нужно более детально работать с задачами, разбивая их на уровни и помогая команде работать эффективнее!

11.1 Планирование задач: от общего к частному

Мы будем разбивать сложные задачи на управляемые подзадачи, отслеживать их прогресс и поддерживать многоуровневую иерархию. Приступим к планированию!


11.2 Создание таблицы подзадач

11.2.1 Проектирование структуры подзадач

Создадим «Таблицу подзадач» (Sub Tasks — древовидная таблица) с древовидной структурой. Атрибуты подзадачи похожи на основную задачу: «Название», «Статус», «Ответственный», «Прогресс» и т. п. При необходимости можно добавить комментарии, документы и пр.

Чтобы связать подзадачи с основной задачей, создадим связь многие-к-одному: каждая подзадача относится к одной основной задаче. Также добавим обратное отношение, чтобы прямо в основной задаче можно было просматривать и управлять подзадачами.

💡 Совет: рекомендуется создавать подзадачи в блоке связанных данных на странице основной задачи — так удобнее!

11.2.2 Отображение подзадач на странице управления задачами

Установите способ просмотра «Таблицы задач» в режим страницы.

На странице создайте новую вкладку «Управление подзадачами», добавьте таблицу подзадач и выберите древовидное представление. Так подзадачи можно будет просматривать и управлять ими прямо на странице задачи.


11.3. График сравнения трудозатрат: оценка общих трудозатрат и прогресса (опционально)

Не теряя темпа, создадим детализацию трудозатрат и график их сравнения, чтобы оценивать общие трудозатраты и прогресс.

11.3.1 Добавление полей времени и трудозатрат для подзадач

Добавьте в таблицу подзадач следующие поля:

  • Дата начала
  • Дата окончания
  • Общие трудозатраты
  • Оставшиеся трудозатраты

С помощью этих полей можно динамически рассчитывать продолжительность задачи и затраты времени.

11.3.2 Расчёт продолжительности задачи

Создадим в таблице подзадач поле-формулу «Дни», вычисляющее продолжительность задачи.

Формулы могут вычисляться разными способами:

  • Math.js

    Использует библиотеку math.js — позволяет вычислять сложные числовые формулы.

  • Formula.js

    Использует библиотеку Formula.js — для распространённых формул. Если Вы знакомы с формулами Excel, она Вам понравится!

  • Шаблон строк

    Способ конкатенации строк — подходит для динамических описаний, номеров и т. п.

Здесь подойдёт Formula.js — она похожа на Excel и удобна для распространённых формул.

Формула для поля «Дни»:

DAYS(Дата окончания, Дата начала)

Используйте латиницу в нижнем регистре, чтобы избежать ошибок.

Проверим на странице — поле «Дни» уже динамически меняется в зависимости от дат начала и окончания!


11.4 Ежедневный учёт трудозатрат: отслеживание реального прогресса (опционально)

11.4.1 Создание таблицы ежедневного учёта трудозатрат

Создадим таблицу ежедневного учёта трудозатрат для фиксации ежедневных результатов. Поля:

  • Трудозатраты за день (hours, рекомендуется целое число)
  • Дата
  • Идеальные трудозатраты (ideal_hours, рекомендуется целое число)
  • Связанная подзадача: связь многие-к-одному с подзадачами.

11.4.2 Отображение ежедневных трудозатрат на странице подзадачи

Вернитесь на страницу редактирования подзадачи и выведите таблицу ежедневных трудозатрат как подтаблицу; расставьте остальные поля. Это позволит удобно вводить и просматривать трудозатраты на странице подзадачи.


11.5 Ключевые расчёты и правила связывания (опционально)

Чтобы точнее оценивать прогресс задач и оставшиеся трудозатраты, выполним несколько ключевых настроек.

11.5.1 Настройка обязательных полей для подзадачи

Сделайте поля Дата начала, Дата окончания и Прогноз трудозатрат обязательными, чтобы все данные были заполнены и могли использоваться для расчёта.

11.5.2 Настройка правил связывания для доли выполнения и оставшихся трудозатрат

Добавьте в таблицу подзадач следующие правила:

  • Доля выполнения: сумма ежедневных трудозатрат / прогноз трудозатрат
SUM(【Текущая форма / Ежедневные трудозатраты / Трудозатраты за день】)  /  【Текущая форма / Прогноз трудозатрат】
  • Оставшиеся трудозатраты: прогноз трудозатрат - сумма ежедневных трудозатрат
【Текущая форма / Прогноз трудозатрат】 - SUM(【Текущая форма / Ежедневные трудозатраты / Трудозатраты за день】)

202411170353551731786835.png

  • Аналогично настроим правило связывания для идеальных трудозатрат в таблице ежедневных трудозатрат:
  【Текущая форма / Прогноз трудозатрат】 / 【Текущая форма / Длительность задачи】

Так мы в реальном времени получаем долю выполнения и оставшиеся трудозатраты.

11.6 Создание графика прогресса задачи (опционально)

11.6.1 Создание графика прогресса

Создайте новый блок графика, отображающий сумму ежедневных трудозатрат и сумму идеальных трудозатрат в динамике по датам.

Установите ограничение 【Связанная задача/Id】 равно 【Текущая запись модального окна/ID】 — так график будет отражать реальную ситуацию по текущей задаче.

202411170417341731788254.png

202411170418231731788303.png

11.6.2 Отображение базовой информации и динамики прогресса

Помните блок Markdown? Через него выведем базовую информацию о задаче и её прогрессе.

Используем шаблон Handlebars.js, чтобы отрендерить процент:

Progress of Last Update:
<p style="font-size: 54px; font-weight: bold; color: green;">
{{floor (multiply $nRecord.complete_percent 100)}}
 %
</p>

Для динамического рендеринга используется синтаксис Handlebars.js — подробности в официальной документации.


11.7 Итог

Поздравляем! Мы реализовали разбиение задач на подзадачи. Многоуровневое управление, ежедневный учёт трудозатрат и графики позволяют чётко видеть прогресс и помогают команде работать эффективнее. Спасибо за терпение, продолжайте в том же духе — впереди увлекательная следующая глава!


Продолжайте экспериментировать! Если возникнут вопросы — не забывайте о официальной документации NocoBase и сообществе NocoBase.