Capítulo 11: Subtarefas e cálculo de horas

Pessoal, finalmente um novo capítulo! Com a expansão dos negócios, as tarefas ficam cada vez mais numerosas e complexas. Aos poucos percebemos que o gerenciamento simples não basta. Precisamos de um controle mais detalhado, dividindo as tarefas em vários níveis para todo mundo trabalhar com mais eficiência.

11.1 Planejamento de tarefas: do todo às partes

Vamos decompor tarefas complexas em pequenas tarefas gerenciáveis, acompanhando o progresso para entender claramente o status, e organizar tudo em múltiplos níveis. Vamos começar o planejamento!


11.2 Criando a tabela de subtarefas

11.2.1 Estrutura das subtarefas

Primeiro criamos a "tabela de Subtarefas" (Sub Tasks, tabela em árvore) com estrutura em árvore. As propriedades das subtarefas são parecidas com as da tarefa principal: "Nome", "Status", "Responsável", "Progresso" etc. Conforme o caso, dá para acrescentar comentários, documentos etc.

Para ligar as subtarefas à tarefa principal, criamos uma relação muitos-para-um, fazendo com que cada subtarefa pertença a uma tarefa principal. Adicionamos a relação inversa para visualizar e gerenciar as subtarefas dentro da tarefa principal.

Dica: recomendamos criar pelo bloco de relação na página da tarefa principal — fica mais prático!

11.2.2 Mostrar subtarefas na página de gerenciamento de tarefas

No gerenciamento de tarefas, configuramos a exibição da "tabela de Tarefas" no modo de página.

Na página, criamos uma nova aba "Gerenciamento de subtarefas" e adicionamos a tabela de Subtarefas, exibindo-a com a estrutura em árvore. Assim conseguimos gerenciar e visualizar as subtarefas na mesma página.


11.3 Gráfico de comparação de horas: estimativa total e progresso (opcional)

A seguir, montamos os detalhes de horas e o gráfico de comparação para estimar o total e o avanço da tarefa.

11.3.1 Adicionar campos de tempo e horas à subtarefa

Adicione os seguintes campos à tabela de Subtarefas:

  • Data de início
  • Data de término
  • Horas totais
  • Horas restantes

Com esses campos, calculamos dinamicamente a duração e as horas das tarefas.

11.3.2 Calcular a duração da tarefa

Crie um campo do tipo fórmula chamado "Dias" na tabela de Subtarefas para calcular a duração.

As formas de cálculo são:

  • Math.js

    Usa a biblioteca math.js, capaz de calcular fórmulas numéricas complexas.

  • Formula.js

    Usa a biblioteca Formula.js para fórmulas comuns. Se você conhece fórmulas do Excel, vai se sentir em casa!

  • Template de string

    Como o nome sugere, é uma forma de concatenação de strings. Útil para descrições e numerações dinâmicas.

Aqui usamos Formula.js, similar ao Excel, prático para fórmulas comuns.

A fórmula do campo "Dias":

DAYS(Data de término, Data de início)

Use letras minúsculas em inglês para evitar erros.

Pronto! Na página, os dias mudam dinamicamente conforme as datas de início/fim!


11.4 Apontamento diário de horas: rastreando o progresso real (opcional)

11.4.1 Criar a tabela de apontamento diário

Crie uma tabela de apontamento diário para registrar o avanço diário das tarefas. Adicione os campos:

  • Horas do dia (hours, recomendado inteiro)
  • Data
  • Horas ideais (ideal_hours, recomendado inteiro)
  • Subtarefa correspondente: relação muitos-para-um com a subtarefa.

11.4.2 Mostrar apontamento diário na página da subtarefa

Volte à página de edição da subtarefa e exiba a tabela de apontamento como subtabela, arrastando os campos pelo layout. Assim, é fácil registrar e consultar o apontamento diário na própria subtarefa.


11.5 Cálculos-chave e regras de associação (opcional)

Para estimar com mais precisão o progresso e as horas restantes, vamos fazer algumas configurações importantes.

11.5.1 Definir campos da subtarefa como obrigatórios

Marque Data de início, Data de término e Horas estimadas como obrigatórios, garantindo que esses dados estejam completos para os cálculos.

11.5.2 Definir regras de associação para percentual concluído e horas restantes

Na tabela de Subtarefas, adicione as regras:

  • Percentual concluído: soma das horas diárias / horas estimadas
SUM(【Formulário atual / Apontamento diário / Horas do dia】)  /  【Formulário atual / Horas estimadas】
  • Horas restantes: horas estimadas - soma das horas diárias
【Formulário atual / Horas estimadas】 - SUM(【Formulário atual / Apontamento diário / Horas do dia】)

202411170353551731786835.png

  • Da mesma forma, configuramos as horas ideais nas regras de associação do apontamento diário:
  【Formulário atual / Horas estimadas】 / 【Formulário atual / Duração da tarefa】

Com isso, calculamos em tempo real o progresso e as horas restantes.

11.6 Criando o gráfico de progresso da tarefa (opcional)

11.6.1 Criar gráfico de progresso da tarefa

Crie um bloco de gráfico para somar as horas diárias e as horas ideais ao longo do tempo, exibindo o avanço da tarefa por data.

Restringimos com 【Tarefa associada/Id】igual a 【Registro do modal atual/ID】, garantindo que o gráfico reflita a tarefa atual.

202411170417341731788254.png

202411170418231731788303.png

11.6.2 Mostrar informações básicas e variação do progresso

Lembra do bloco Markdown? Usaremos o bloco markdown para exibir as informações básicas e o avanço da tarefa.

Renderize o percentual de progresso usando templates Handlebars.js:

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

A renderização dinâmica usa Handlebars.js; consulte a documentação oficial para conhecer a sintaxe.


11.7 Resumo

Parabéns! Você concluiu a divisão em subtarefas. Com gestão multinível, apontamento diário de horas e gráficos, conseguimos enxergar com clareza o progresso e ajudar a equipe a trabalhar com mais eficiência. Obrigado pela paciência! Continue empenhado e nos vemos no próximo capítulo!


Continue explorando e dê asas à sua criatividade! Se tiver dúvidas, lembre-se de consultar a documentação oficial do NocoBase ou de participar da comunidade do NocoBase.