/**
* 创建任务工具
*/
import { ToolResult } from '../types';
import { ZenTaoClient } from '../client';
import { ITask, ICreateTaskParams } from '../types';
import { LRUCache } from '../utils/cache';
export async function createTask(
client: ZenTaoClient,
cache: LRUCache<string, any>,
params: ICreateTaskParams
): Promise<ToolResult> {
try {
// 验证输入参数
if (!params.name || !params.project) {
return {
content: [
{
type: 'text',
text: '错误:任务名称和项目ID都是必填项',
},
],
isError: true,
};
}
// 调用 API 创建任务
const newTask = await client.post<ITask>('/api.php/v1/tasks', params);
// 清理相关缓存
cache.delete(`tasks:${JSON.stringify({ projectId: params.project })}`);
cache.delete(`project:${params.project}`);
// 格式化输出
const output = `任务创建成功!\n\n任务信息:\n ID: ${newTask.id}\n 名称: ${newTask.name}\n 项目: ${newTask.project}\n 状态: ${newTask.status || '未开始'}\n 负责人: ${newTask.assignedTo || '未分配'}\n 优先级: ${newTask.pri || '未设置'}\n 预计工时: ${newTask.estimate || 0}h\n 截止时间: ${newTask.deadline || '未设置'}\n\n您现在可以更新任务状态、分配负责人或查看任务详情。`;
return {
content: [
{
type: 'text',
text: output,
},
],
};
} catch (error: any) {
let errorMessage = `创建任务失败: ${error.message || '未知错误'}`;
// 提供详细的错误信息
if (error.code === 404) {
errorMessage += '\n\n可能原因:项目不存在,请检查项目ID是否正确';
} else if (error.code === 403) {
errorMessage += '\n\n可能原因:权限不足,无法创建任务';
}
return {
content: [
{
type: 'text',
text: errorMessage,
},
],
isError: true,
};
}
}