@zzp123/mcp-zentao 1.8.1 → 1.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,6 +44,22 @@ export declare class ZentaoAPI {
44
44
  getProjectExecutions(projectId: number): Promise<Execution[]>;
45
45
  createPlan(productId: number, plan: CreatePlanRequest): Promise<Plan>;
46
46
  getProjects(page?: number, limit?: number): Promise<Project[]>;
47
+ /**
48
+ * 修改需求(使用"更新需求(无需评审)"接口)
49
+ *
50
+ * 此方法使用自定义接口 POST /stories/:id/update-without-review
51
+ * 该接口会自动绕过评审人员验证,避免"该研发需求需要评审,评审人员不能为空"的错误
52
+ *
53
+ * 适用场景:
54
+ * - 系统配置了强制评审,但某些自动化场景不需要评审
55
+ * - API调用更新需求时无法提供评审人员
56
+ * - 批量导入或同步需求数据时
57
+ * - 第三方系统集成时自动更新需求
58
+ *
59
+ * @param storyId 需求ID
60
+ * @param update 需要更新的字段
61
+ * @returns 更新后的需求信息
62
+ */
47
63
  changeStory(storyId: number, update: ChangeStoryRequest): Promise<Story>;
48
64
  deleteTask(taskId: number): Promise<{
49
65
  message: string;
@@ -606,22 +606,33 @@ export class ZentaoAPI {
606
606
  throw error;
607
607
  }
608
608
  }
609
+ /**
610
+ * 修改需求(使用"更新需求(无需评审)"接口)
611
+ *
612
+ * 此方法使用自定义接口 POST /stories/:id/update-without-review
613
+ * 该接口会自动绕过评审人员验证,避免"该研发需求需要评审,评审人员不能为空"的错误
614
+ *
615
+ * 适用场景:
616
+ * - 系统配置了强制评审,但某些自动化场景不需要评审
617
+ * - API调用更新需求时无法提供评审人员
618
+ * - 批量导入或同步需求数据时
619
+ * - 第三方系统集成时自动更新需求
620
+ *
621
+ * @param storyId 需求ID
622
+ * @param update 需要更新的字段
623
+ * @returns 更新后的需求信息
624
+ */
609
625
  async changeStory(storyId, update) {
610
626
  try {
611
- console.log(`正在变更需求 ${storyId}...`);
612
- // 自动处理评审人问题
613
- const updateData = { ...update };
614
- // 如果用户没有设置评审人,也没有指定无需评审,则自动跳过评审
615
- if (!updateData.reviewer && updateData.needNotReview !== true) {
616
- updateData.needNotReview = true;
617
- console.log('自动设置needNotReview=true以跳过评审要求');
618
- }
619
- const response = await this.request('PUT', `/stories/${storyId}`, undefined, updateData);
620
- console.log('变更需求响应:', response);
627
+ console.log(`正在更新需求 ${storyId} (使用无需评审接口)...`);
628
+ // 使用 POST /stories/:id/update-without-review 接口
629
+ // 该接口会自动将当前用户设置为评审人员,绕过评审验证
630
+ const response = await this.request('POST', `/stories/${storyId}/update-without-review`, undefined, update);
631
+ console.log('更新需求响应:', response);
621
632
  return response;
622
633
  }
623
634
  catch (error) {
624
- console.error('变更需求失败:', error);
635
+ console.error('更新需求失败:', error);
625
636
  throw error;
626
637
  }
627
638
  }
package/dist/index.js CHANGED
@@ -581,7 +581,19 @@ server.tool("changeStory", {
581
581
  comment: z.string().optional()
582
582
  }),
583
583
  z.string()
584
- ]).describe("需求变更字段 - 支持对象或JSON字符串格式")
584
+ ]).describe(`更新需求(无需评审)
585
+
586
+ 此工具使用自定义接口 POST /stories/:id/update-without-review
587
+ 该接口会自动绕过评审人员验证,避免"该研发需求需要评审,评审人员不能为空"的错误。
588
+
589
+ 适用场景:
590
+ - 系统配置了强制评审,但某些自动化场景不需要评审
591
+ - API调用更新需求时无法提供评审人员
592
+ - 批量导入或同步需求数据时
593
+ - 第三方系统集成时自动更新需求
594
+
595
+ 支持对象或JSON字符串格式。
596
+ `.trim())
585
597
  }, async ({ storyId, update }) => {
586
598
  if (!zentaoApi)
587
599
  throw new Error("Please initialize Zentao API first");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zzp123/mcp-zentao",
3
- "version": "1.8.1",
3
+ "version": "1.8.3",
4
4
  "description": "禅道项目管理系统的高级API集成包,提供任务管理、Bug跟踪等功能的完整封装,专为Cursor IDE设计的MCP扩展",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",