taskmanager-ai
Version:
A CLI tool to manage your projects tasks with AI
123 lines (113 loc) • 4.18 kB
JavaScript
/**
* Módulo de simulação para geração de tarefas
*
* Este módulo é usado quando a integração com IA não está disponível
* ou quando ocorre algum erro na geração de tarefas.
*/
import { validateAndAdjustDependencies } from './openai.js';
/**
* Simula a geração de tarefas para um projeto
* @param {String} projectDescription - Descrição do projeto
* @param {String} projectType - Tipo do projeto ('new' ou 'existing')
* @param {Number} taskCount - Número de tarefas a serem geradas
* @returns {Array} Array de tarefas geradas
*/
export function simulateTasks(projectDescription, projectType, taskCount) {
const now = new Date().toISOString();
const tasks = [];
// Gera tarefas base dependendo do tipo de projeto
if (projectType === 'new') {
// Para projetos novos, começa com setup e configuração
tasks.push({
id: 1,
title: 'Setup inicial do projeto',
description: 'Configuração do ambiente de desenvolvimento e estrutura base do projeto',
status: 'pending',
priority: 'high',
dependencies: [],
details: 'Configurar ambiente de desenvolvimento, estrutura de diretórios e ferramentas necessárias',
testStrategy: 'Verificar se todas as ferramentas estão instaladas e funcionando corretamente',
category: 'setup',
createdAt: now,
updatedAt: now,
subtasks: [
{
id: 1,
title: 'Inicializar repositório',
description: 'Criar repositório e configurar controle de versão',
status: 'pending',
createdAt: now,
updatedAt: now
},
{
id: 2,
title: 'Configurar ambiente de desenvolvimento',
description: 'Instalar e configurar ferramentas necessárias',
status: 'pending',
createdAt: now,
updatedAt: now
}
]
});
tasks.push({
id: 2,
title: 'Configuração de dependências',
description: 'Instalação e configuração das dependências do projeto',
status: 'pending',
priority: 'high',
dependencies: [1],
details: 'Identificar e instalar todas as dependências necessárias para o projeto',
testStrategy: 'Verificar se todas as dependências estão instaladas e funcionando',
category: 'setup',
createdAt: now,
updatedAt: now,
subtasks: [
{
id: 1,
title: 'Criar arquivo de dependências',
description: 'Definir as dependências no arquivo de configuração',
status: 'pending',
createdAt: now,
updatedAt: now
}
]
});
}
// Gera tarefas adicionais
const categories = ['frontend', 'backend', 'database', 'testing', 'documentation'];
const priorities = ['high', 'medium', 'low'];
for (let i = tasks.length + 1; i <= taskCount; i++) {
const category = categories[Math.floor(Math.random() * categories.length)];
const priority = priorities[Math.floor(Math.random() * priorities.length)];
// Gera dependências aleatórias (apenas para IDs menores)
const possibleDeps = Array.from({length: i - 1}, (_, j) => j + 1);
const dependencies = possibleDeps
.filter(() => Math.random() > 0.7) // 30% de chance de cada tarefa anterior ser dependência
.slice(0, Math.floor(Math.random() * Math.min(3, i))); // No máximo 3 dependências
tasks.push({
id: i,
title: `Tarefa ${i} - ${category}`,
description: `Descrição da tarefa ${i} na categoria ${category}`,
status: 'pending',
priority,
dependencies,
details: `Detalhes de implementação para a tarefa ${i}`,
testStrategy: `Estratégia de teste para a tarefa ${i}`,
category,
createdAt: now,
updatedAt: now,
subtasks: [
{
id: 1,
title: `Subtarefa 1 da Tarefa ${i}`,
description: `Implementação inicial da tarefa ${i}`,
status: 'pending',
createdAt: now,
updatedAt: now
}
]
});
}
// Valida e ajusta as dependências antes de retornar
return validateAndAdjustDependencies(tasks);
}