@xihe-lab/tapd-core 2.0.0-rc.2 → 2.0.0-rc.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.
Files changed (87) hide show
  1. package/README.md +1 -0
  2. package/dist/advisor/index.d.ts.map +1 -1
  3. package/dist/advisor/index.js +2 -0
  4. package/dist/advisor/index.js.map +1 -1
  5. package/dist/cache/read-cache.d.ts +136 -0
  6. package/dist/cache/read-cache.d.ts.map +1 -0
  7. package/dist/cache/read-cache.js +322 -0
  8. package/dist/cache/read-cache.js.map +1 -0
  9. package/dist/cache/read-cache.test.d.ts +2 -0
  10. package/dist/cache/read-cache.test.d.ts.map +1 -0
  11. package/dist/cache/read-cache.test.js +429 -0
  12. package/dist/cache/read-cache.test.js.map +1 -0
  13. package/dist/errors/index.d.ts +120 -0
  14. package/dist/errors/index.d.ts.map +1 -0
  15. package/dist/errors/index.js +429 -0
  16. package/dist/errors/index.js.map +1 -0
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/registry/registry.d.ts +7 -0
  22. package/dist/registry/registry.d.ts.map +1 -1
  23. package/dist/registry/registry.js +9 -3
  24. package/dist/registry/registry.js.map +1 -1
  25. package/dist/registry/registry.test.js +293 -2
  26. package/dist/registry/registry.test.js.map +1 -1
  27. package/dist/tapd-client.d.ts +34 -2
  28. package/dist/tapd-client.d.ts.map +1 -1
  29. package/dist/tapd-client.js +121 -42
  30. package/dist/tapd-client.js.map +1 -1
  31. package/dist/tools/attachment.js +40 -40
  32. package/dist/tools/attachment.js.map +1 -1
  33. package/dist/tools/board.js +22 -22
  34. package/dist/tools/board.js.map +1 -1
  35. package/dist/tools/bug.js +259 -259
  36. package/dist/tools/bug.js.map +1 -1
  37. package/dist/tools/changes.js +20 -20
  38. package/dist/tools/changes.js.map +1 -1
  39. package/dist/tools/comment.js +23 -23
  40. package/dist/tools/comment.js.map +1 -1
  41. package/dist/tools/custom-fields.js +16 -16
  42. package/dist/tools/custom-fields.js.map +1 -1
  43. package/dist/tools/image.js +2 -2
  44. package/dist/tools/image.js.map +1 -1
  45. package/dist/tools/iteration.js +50 -50
  46. package/dist/tools/iteration.js.map +1 -1
  47. package/dist/tools/media.js +2 -2
  48. package/dist/tools/media.js.map +1 -1
  49. package/dist/tools/mini-comment.js +27 -27
  50. package/dist/tools/mini-comment.js.map +1 -1
  51. package/dist/tools/mini-item.js +83 -83
  52. package/dist/tools/mini-item.js.map +1 -1
  53. package/dist/tools/mini-workspace.js +5 -5
  54. package/dist/tools/mini-workspace.js.map +1 -1
  55. package/dist/tools/program.js +7 -7
  56. package/dist/tools/program.js.map +1 -1
  57. package/dist/tools/relations.js +14 -14
  58. package/dist/tools/relations.js.map +1 -1
  59. package/dist/tools/release.js +53 -53
  60. package/dist/tools/release.js.map +1 -1
  61. package/dist/tools/report.js +8 -8
  62. package/dist/tools/report.js.map +1 -1
  63. package/dist/tools/settings.js +77 -77
  64. package/dist/tools/settings.js.map +1 -1
  65. package/dist/tools/source.js +14 -14
  66. package/dist/tools/source.js.map +1 -1
  67. package/dist/tools/story.js +120 -120
  68. package/dist/tools/story.js.map +1 -1
  69. package/dist/tools/task.js +123 -123
  70. package/dist/tools/task.js.map +1 -1
  71. package/dist/tools/test.js +117 -117
  72. package/dist/tools/test.js.map +1 -1
  73. package/dist/tools/timesheet.js +23 -23
  74. package/dist/tools/timesheet.js.map +1 -1
  75. package/dist/tools/user.js +8 -8
  76. package/dist/tools/user.js.map +1 -1
  77. package/dist/tools/utility.d.ts +17 -0
  78. package/dist/tools/utility.d.ts.map +1 -1
  79. package/dist/tools/utility.js +73 -78
  80. package/dist/tools/utility.js.map +1 -1
  81. package/dist/tools/wiki.js +51 -51
  82. package/dist/tools/wiki.js.map +1 -1
  83. package/dist/tools/workflow.js +26 -26
  84. package/dist/tools/workflow.js.map +1 -1
  85. package/dist/tools/workspace.js +16 -16
  86. package/dist/tools/workspace.js.map +1 -1
  87. package/package.json +9 -8
@@ -4,11 +4,11 @@ export const testTools = [
4
4
  // 测试用例 CRUD
5
5
  {
6
6
  name: "tapd_create_test_case",
7
- description: "创建测试用例",
7
+ description: "创建测试用例(名称、步骤、预期结果、前置条件)。写操作;name 必填;创建人缺省取环境变量 TAPD_NICK_NAME。返回新用例。",
8
8
  inputSchema: z.object({
9
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
10
- name: z.string().describe("测试用例名称 (必填)"),
11
- category_id: z.string().optional().describe('分类ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
9
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
10
+ name: z.string().describe("测试用例名称(必填)"),
11
+ category_id: z.string().optional().describe('分类 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
12
12
  priority: z.string().optional().describe("优先级"),
13
13
  status: z.string().optional().describe("状态: updating/abandon/normal"),
14
14
  description: z.string().optional().describe("描述"),
@@ -16,9 +16,9 @@ export const testTools = [
16
16
  expectresult: z.string().optional().describe("预期结果"),
17
17
  precondition: z.string().optional().describe("前置条件"),
18
18
  type: z.string().optional().describe("用例类型"),
19
- iteration_id: z.string().optional().describe('迭代ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
19
+ iteration_id: z.string().optional().describe('迭代 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
20
20
  owner: z.string().optional().describe("负责人"),
21
- creator: z.string().optional().describe("创建人(默认当前用户)"),
21
+ creator: z.string().optional().describe("创建人(缺省取当前用户)"),
22
22
  custom_field_one: z.string().optional().describe("自定义字段 (支持 1-200)"),
23
23
  }),
24
24
  handler: async (client, params) => {
@@ -37,22 +37,22 @@ export const testTools = [
37
37
  },
38
38
  {
39
39
  name: "tapd_get_test_cases",
40
- description: "获取测试用例列表",
40
+ description: "查询测试用例列表,支持名称、状态、分类、迭代过滤与分页。只统计数量用数量统计工具。读操作;limit 默认 30、最大 200。返回用例数组。",
41
41
  inputSchema: z.object({
42
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
43
- id: z.string().optional().describe('测试用例ID,支持多ID查询;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
42
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
43
+ id: z.string().optional().describe('测试用例 ID,支持多 ID查询;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
44
44
  name: z.string().optional().describe("测试用例名称,支持模糊匹配"),
45
45
  status: z.string().optional().describe("状态: updating/abandon/normal"),
46
46
  priority: z.string().optional().describe("优先级"),
47
- category_id: z.string().optional().describe('分类ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
48
- iteration_id: z.string().optional().describe('迭代ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
47
+ category_id: z.string().optional().describe('分类 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
48
+ iteration_id: z.string().optional().describe('迭代 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
49
49
  creator: z.string().optional().describe("创建人"),
50
50
  owner: z.string().optional().describe("负责人"),
51
51
  created: z.string().optional().describe("创建时间,支持时间查询"),
52
52
  modified: z.string().optional().describe("修改时间,支持时间查询"),
53
53
  custom_field_one: z.string().optional().describe("自定义字段"),
54
- limit: z.number().optional().describe("返回数量,默认30,最大200"),
55
- page: z.number().optional().describe("页码,默认1"),
54
+ limit: z.number().optional().describe("返回数量,默认 30,最大 200"),
55
+ page: z.number().optional().describe("页码,默认 1"),
56
56
  order: z.string().optional().describe("排序规则"),
57
57
  fields: z.string().optional().describe("返回字段"),
58
58
  }),
@@ -66,15 +66,15 @@ export const testTools = [
66
66
  },
67
67
  {
68
68
  name: "tapd_get_test_cases_count",
69
- description: "获取测试用例数量",
69
+ description: "按相同过滤条件返回测试用例数量。要看列表用用例列表查询工具。读操作。返回 {count}。",
70
70
  inputSchema: z.object({
71
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
72
- id: z.string().optional().describe('测试用例ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
71
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
72
+ id: z.string().optional().describe('测试用例 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
73
73
  name: z.string().optional().describe("测试用例名称"),
74
74
  status: z.string().optional().describe("状态"),
75
75
  priority: z.string().optional().describe("优先级"),
76
- category_id: z.string().optional().describe('分类ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
77
- iteration_id: z.string().optional().describe('迭代ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
76
+ category_id: z.string().optional().describe('分类 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
77
+ iteration_id: z.string().optional().describe('迭代 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
78
78
  creator: z.string().optional().describe("创建人"),
79
79
  owner: z.string().optional().describe("负责人"),
80
80
  }),
@@ -88,20 +88,20 @@ export const testTools = [
88
88
  },
89
89
  {
90
90
  name: "tapd_update_test_case",
91
- description: "更新测试用例",
91
+ description: "按 ID 更新测试用例(步骤、预期结果、状态等)。写操作;id 必填。返回更新结果。",
92
92
  inputSchema: z.object({
93
- id: z.string().describe('测试用例ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
94
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
93
+ id: z.string().describe('测试用例 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
94
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
95
95
  name: z.string().optional().describe("测试用例名称"),
96
96
  status: z.string().optional().describe("状态"),
97
97
  priority: z.string().optional().describe("优先级"),
98
- category_id: z.string().optional().describe('分类ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
98
+ category_id: z.string().optional().describe('分类 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
99
99
  description: z.string().optional().describe("描述"),
100
100
  teststeps: z.string().optional().describe("测试步骤"),
101
101
  expectresult: z.string().optional().describe("预期结果"),
102
102
  precondition: z.string().optional().describe("前置条件"),
103
103
  type: z.string().optional().describe("用例类型"),
104
- iteration_id: z.string().optional().describe('迭代ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
104
+ iteration_id: z.string().optional().describe('迭代 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
105
105
  owner: z.string().optional().describe("负责人"),
106
106
  custom_field_one: z.string().optional().describe("自定义字段"),
107
107
  }),
@@ -116,12 +116,12 @@ export const testTools = [
116
116
  // 测试用例分类
117
117
  {
118
118
  name: "tapd_get_tcase_categories",
119
- description: "获取测试用例分类列表",
119
+ description: "查询测试用例分类列表。只统计数量用数量统计工具。读操作。返回分类数组。",
120
120
  inputSchema: z.object({
121
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
122
- id: z.string().optional().describe('分类ID,支持多ID查询;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
121
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
122
+ id: z.string().optional().describe('分类 ID,支持多 ID查询;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
123
123
  name: z.string().optional().describe("分类名称,支持模糊匹配"),
124
- parent_id: z.string().optional().describe("父分类ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度"),
124
+ parent_id: z.string().optional().describe("父分类 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度"),
125
125
  created: z.string().optional().describe("创建时间"),
126
126
  modified: z.string().optional().describe("修改时间"),
127
127
  limit: z.number().optional().describe("返回数量"),
@@ -139,12 +139,12 @@ export const testTools = [
139
139
  },
140
140
  {
141
141
  name: "tapd_get_tcase_categories_count",
142
- description: "获取测试用例分类数量",
142
+ description: "按相同过滤条件返回用例分类数量。要看列表用分类列表查询工具。读操作。返回 {count}。",
143
143
  inputSchema: z.object({
144
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
145
- id: z.string().optional().describe('分类ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
144
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
145
+ id: z.string().optional().describe('分类 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
146
146
  name: z.string().optional().describe("分类名称"),
147
- parent_id: z.string().optional().describe("父分类ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度"),
147
+ parent_id: z.string().optional().describe("父分类 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度"),
148
148
  }),
149
149
  handler: async (client, params) => {
150
150
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -156,11 +156,11 @@ export const testTools = [
156
156
  },
157
157
  {
158
158
  name: "tapd_add_tcase_category",
159
- description: "创建测试用例分类",
159
+ description: "创建测试用例分类,可挂父分类。写操作;name 必填。返回新分类。",
160
160
  inputSchema: z.object({
161
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
162
- name: z.string().describe("分类名称 (必填)"),
163
- parent_id: z.string().optional().describe("父分类ID(用于创建子分类);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度"),
161
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
162
+ name: z.string().describe("分类名称(必填)"),
163
+ parent_id: z.string().optional().describe("父分类 ID(用于创建子分类);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度"),
164
164
  }),
165
165
  handler: async (client, params) => {
166
166
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -173,9 +173,9 @@ export const testTools = [
173
173
  // 测试用例配置
174
174
  {
175
175
  name: "tapd_get_tcase_custom_fields_settings",
176
- description: "获取测试用例自定义字段配置",
176
+ description: "查询测试用例自定义字段配置。读操作。返回配置数组。",
177
177
  inputSchema: z.object({
178
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
178
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
179
179
  }),
180
180
  handler: async (client, params) => {
181
181
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -187,9 +187,9 @@ export const testTools = [
187
187
  },
188
188
  {
189
189
  name: "tapd_get_tcase_fields_info",
190
- description: "获取测试用例字段信息",
190
+ description: "查询测试用例可写字段元信息(类型、是否必填)。读操作。返回字段定义数组。",
191
191
  inputSchema: z.object({
192
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
192
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
193
193
  }),
194
194
  handler: async (client, params) => {
195
195
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -201,10 +201,10 @@ export const testTools = [
201
201
  },
202
202
  {
203
203
  name: "tapd_get_story_by_tcase_id",
204
- description: "获取测试用例关联的需求",
204
+ description: "按测试用例 ID 反查其关联的需求。正向(按需求找用例)用需求侧关联用例查询工具。读操作;tcase_id 必填。返回关联需求。",
205
205
  inputSchema: z.object({
206
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
207
- tcase_id: z.string().describe('测试用例ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
206
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
207
+ tcase_id: z.string().describe('测试用例 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
208
208
  }),
209
209
  handler: async (client, params) => {
210
210
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -217,12 +217,12 @@ export const testTools = [
217
217
  // 测试用例执行
218
218
  {
219
219
  name: "tapd_assign_tcase_instance",
220
- description: "分配测试用例执行人",
220
+ description: "在测试计划内给用例实例分配执行人。执行用例用用例执行工具。写操作;test_plan_id、tcase_id、owner 必填。返回分配结果。",
221
221
  inputSchema: z.object({
222
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
223
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
224
- tcase_id: z.string().describe('测试用例ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
225
- owner: z.string().describe("分配的执行人 (必填)"),
222
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
223
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
224
+ tcase_id: z.string().describe('测试用例 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
225
+ owner: z.string().describe("分配的执行人(必填)"),
226
226
  }),
227
227
  handler: async (client, params) => {
228
228
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -234,16 +234,16 @@ export const testTools = [
234
234
  },
235
235
  {
236
236
  name: "tapd_execute_tcase_instance",
237
- description: "执行测试用例",
237
+ description: "执行测试计划中的用例并记录结果(pass/fail/block),可带逐步骤结果、实际结果与关联缺陷。分配执行人用执行人分配工具。写操作;tcase_id、test_plan_id、result 必填。返回执行结果。",
238
238
  inputSchema: z.object({
239
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
240
- tcase_id: z.string().describe('测试用例ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
241
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
242
- result: z.string().describe("执行结果 (必填): pass/fail/block"),
239
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
240
+ tcase_id: z.string().describe('测试用例 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
241
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
242
+ result: z.string().describe("执行结果(必填): pass/fail/block"),
243
243
  run_step: z.string().optional().describe("执行步骤结果(JSON格式)"),
244
244
  actual_result: z.string().optional().describe("实际结果"),
245
- bug_id: z.string().optional().describe('关联缺陷ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
246
- executed_by: z.string().optional().describe("执行人(默认当前用户)"),
245
+ bug_id: z.string().optional().describe('关联缺陷 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
246
+ executed_by: z.string().optional().describe("执行人(缺省取当前用户)"),
247
247
  }),
248
248
  handler: async (client, params) => {
249
249
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -255,11 +255,11 @@ export const testTools = [
255
255
  },
256
256
  {
257
257
  name: "tapd_get_tcase_result",
258
- description: "获取测试用例执行结果",
258
+ description: "查询用例执行结果记录(可按计划、结果、执行人过滤)。写侧执行动作用用例执行工具。读操作。返回结果数组。",
259
259
  inputSchema: z.object({
260
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
261
- tcase_id: z.string().optional().describe('测试用例ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
262
- test_plan_id: z.string().optional().describe('测试计划ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
260
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
261
+ tcase_id: z.string().optional().describe('测试用例 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
262
+ test_plan_id: z.string().optional().describe('测试计划 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
263
263
  result: z.string().optional().describe("执行结果: pass/fail/block"),
264
264
  executed_by: z.string().optional().describe("执行人"),
265
265
  executed: z.string().optional().describe("执行时间"),
@@ -277,11 +277,11 @@ export const testTools = [
277
277
  },
278
278
  {
279
279
  name: "tapd_remove_tcase_instance",
280
- description: "测试用例移出测试计划",
280
+ description: "把测试用例移出测试计划。加入计划用计划侧用例关联工具。写操作;test_plan_id、tcase_id 必填。返回移除结果。",
281
281
  inputSchema: z.object({
282
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
283
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
284
- tcase_id: z.string().describe('测试用例ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
282
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
283
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
284
+ tcase_id: z.string().describe('测试用例 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
285
285
  }),
286
286
  handler: async (client, params) => {
287
287
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -293,11 +293,11 @@ export const testTools = [
293
293
  },
294
294
  {
295
295
  name: "tapd_delete_tcase_story_relation",
296
- description: "解除测试用例与需求关联",
296
+ description: "解除测试用例与需求的关联。建立关联用需求侧用例关联建立工具。写操作;tcase_id、story_id 必填。返回解除结果。",
297
297
  inputSchema: z.object({
298
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
299
- tcase_id: z.string().describe('测试用例ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
300
- story_id: z.string().describe('需求ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
298
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
299
+ tcase_id: z.string().describe('测试用例 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
300
+ story_id: z.string().describe('需求 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
301
301
  }),
302
302
  handler: async (client, params) => {
303
303
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -310,10 +310,10 @@ export const testTools = [
310
310
  // 测试计划 CRUD
311
311
  {
312
312
  name: "tapd_get_test_plans",
313
- description: "获取测试计划列表",
313
+ description: "查询测试计划列表,支持名称、状态、负责人、迭代过滤。只统计数量用数量统计工具。读操作;limit 默认 30、最大 200。返回计划数组。",
314
314
  inputSchema: z.object({
315
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
316
- id: z.string().optional().describe('测试计划ID,支持多ID查询;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
315
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
316
+ id: z.string().optional().describe('测试计划 ID,支持多 ID查询;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
317
317
  name: z.string().optional().describe("测试计划名称,支持模糊匹配"),
318
318
  status: z.string().optional().describe("状态"),
319
319
  creator: z.string().optional().describe("创建人"),
@@ -322,9 +322,9 @@ export const testTools = [
322
322
  end: z.string().optional().describe("结束日期"),
323
323
  created: z.string().optional().describe("创建时间"),
324
324
  modified: z.string().optional().describe("修改时间"),
325
- iteration_id: z.string().optional().describe('迭代ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
326
- limit: z.number().optional().describe("返回数量,默认30,最大200"),
327
- page: z.number().optional().describe("页码,默认1"),
325
+ iteration_id: z.string().optional().describe('迭代 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
326
+ limit: z.number().optional().describe("返回数量,默认 30,最大 200"),
327
+ page: z.number().optional().describe("页码,默认 1"),
328
328
  order: z.string().optional().describe("排序"),
329
329
  fields: z.string().optional().describe("返回字段"),
330
330
  }),
@@ -338,18 +338,18 @@ export const testTools = [
338
338
  },
339
339
  {
340
340
  name: "tapd_create_test_plan",
341
- description: "创建测试计划",
341
+ description: "创建测试计划。写操作;name 必填;负责人/创建人缺省取环境变量 TAPD_NICK_NAME。返回新计划。",
342
342
  inputSchema: z.object({
343
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
344
- name: z.string().describe("测试计划名称 (必填)"),
343
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
344
+ name: z.string().describe("测试计划名称(必填)"),
345
345
  description: z.string().optional().describe("描述"),
346
- owner: z.string().optional().describe("负责人(默认当前用户)"),
347
- creator: z.string().optional().describe("创建人(默认当前用户)"),
346
+ owner: z.string().optional().describe("负责人(缺省取当前用户)"),
347
+ creator: z.string().optional().describe("创建人(缺省取当前用户)"),
348
348
  begin: z.string().optional().describe("开始日期 (YYYY-MM-DD)"),
349
349
  end: z.string().optional().describe("结束日期 (YYYY-MM-DD)"),
350
350
  status: z.string().optional().describe("状态"),
351
- category_id: z.string().optional().describe('分类ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
352
- iteration_id: z.string().optional().describe('迭代ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
351
+ category_id: z.string().optional().describe('分类 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
352
+ iteration_id: z.string().optional().describe('迭代 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
353
353
  }),
354
354
  handler: async (client, params) => {
355
355
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -368,18 +368,18 @@ export const testTools = [
368
368
  },
369
369
  {
370
370
  name: "tapd_update_test_plan",
371
- description: "更新测试计划",
371
+ description: "按 ID 更新测试计划。写操作;id 必填。返回更新结果。",
372
372
  inputSchema: z.object({
373
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
374
- id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
373
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
374
+ id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
375
375
  name: z.string().optional().describe("测试计划名称"),
376
376
  description: z.string().optional().describe("描述"),
377
377
  owner: z.string().optional().describe("负责人"),
378
378
  begin: z.string().optional().describe("开始日期 (YYYY-MM-DD)"),
379
379
  end: z.string().optional().describe("结束日期 (YYYY-MM-DD)"),
380
380
  status: z.string().optional().describe("状态"),
381
- category_id: z.string().optional().describe('分类ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
382
- iteration_id: z.string().optional().describe('迭代ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
381
+ category_id: z.string().optional().describe('分类 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
382
+ iteration_id: z.string().optional().describe('迭代 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
383
383
  }),
384
384
  handler: async (client, params) => {
385
385
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -391,10 +391,10 @@ export const testTools = [
391
391
  },
392
392
  {
393
393
  name: "tapd_get_test_plan_count",
394
- description: "获取测试计划数量",
394
+ description: "按相同过滤条件返回测试计划数量。要看列表用计划列表查询工具。读操作。返回 {count}。",
395
395
  inputSchema: z.object({
396
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
397
- id: z.string().optional().describe('测试计划ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
396
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
397
+ id: z.string().optional().describe('测试计划 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
398
398
  name: z.string().optional().describe("测试计划名称"),
399
399
  status: z.string().optional().describe("状态"),
400
400
  creator: z.string().optional().describe("创建人"),
@@ -411,10 +411,10 @@ export const testTools = [
411
411
  // 测试计划详情
412
412
  {
413
413
  name: "tapd_get_test_plan_details",
414
- description: "获取测试计划测试结果详情",
414
+ description: "查询测试计划内用例的测试结果明细。整体进度统计用执行进度查询工具。读操作;test_plan_id 必填。返回结果明细。",
415
415
  inputSchema: z.object({
416
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
417
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
416
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
417
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
418
418
  limit: z.number().optional().describe("返回数量"),
419
419
  page: z.number().optional().describe("页码"),
420
420
  fields: z.string().optional().describe("返回字段"),
@@ -429,10 +429,10 @@ export const testTools = [
429
429
  },
430
430
  {
431
431
  name: "tapd_get_test_plan_progress",
432
- description: "获取测试计划执行进度",
432
+ description: "查询测试计划执行进度(通过/失败/阻塞统计)。逐用例明细用结果明细查询工具。读操作;test_plan_id 必填。返回进度统计。",
433
433
  inputSchema: z.object({
434
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
435
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
434
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
435
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
436
436
  }),
437
437
  handler: async (client, params) => {
438
438
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -444,9 +444,9 @@ export const testTools = [
444
444
  },
445
445
  {
446
446
  name: "tapd_get_test_plan_fields_info",
447
- description: "获取测试计划字段信息",
447
+ description: "查询测试计划可写字段元信息。读操作。返回字段定义数组。",
448
448
  inputSchema: z.object({
449
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
449
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
450
450
  }),
451
451
  handler: async (client, params) => {
452
452
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -459,11 +459,11 @@ export const testTools = [
459
459
  // 测试计划关联
460
460
  {
461
461
  name: "tapd_get_test_plan_tcases",
462
- description: "获取测试计划关联的测试用例",
462
+ description: "查询测试计划已关联的测试用例。加入用例用计划侧用例关联建立工具。读操作;test_plan_id 必填。返回用例数组。",
463
463
  inputSchema: z.object({
464
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
465
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
466
- tcase_id: z.string().optional().describe('测试用例ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
464
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
465
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
466
+ tcase_id: z.string().optional().describe('测试用例 ID;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
467
467
  limit: z.number().optional().describe("返回数量"),
468
468
  page: z.number().optional().describe("页码"),
469
469
  fields: z.string().optional().describe("返回字段"),
@@ -478,10 +478,10 @@ export const testTools = [
478
478
  },
479
479
  {
480
480
  name: "tapd_get_test_plan_relative_stories",
481
- description: "获取测试计划关联的需求",
481
+ description: "查询测试计划已关联的需求。建立关联用计划侧需求关联建立工具。读操作;test_plan_id 必填。返回需求列表。",
482
482
  inputSchema: z.object({
483
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
484
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
483
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
484
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
485
485
  limit: z.number().optional().describe("返回数量"),
486
486
  page: z.number().optional().describe("页码"),
487
487
  fields: z.string().optional().describe("返回字段"),
@@ -496,10 +496,10 @@ export const testTools = [
496
496
  },
497
497
  {
498
498
  name: "tapd_get_test_plan_bugs",
499
- description: "获取测试计划关联的缺陷",
499
+ description: "查询测试计划关联的缺陷。读操作;test_plan_id 必填。返回缺陷列表。",
500
500
  inputSchema: z.object({
501
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
502
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
501
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
502
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
503
503
  limit: z.number().optional().describe("返回数量"),
504
504
  page: z.number().optional().describe("页码"),
505
505
  fields: z.string().optional().describe("返回字段"),
@@ -514,11 +514,11 @@ export const testTools = [
514
514
  },
515
515
  {
516
516
  name: "tapd_create_story_relation",
517
- description: "创建测试计划与需求关联",
517
+ description: "把需求关联到测试计划。解除用计划侧需求关联解除工具;查询用计划侧关联需求查询工具。写操作;test_plan_id、story_id 必填。返回关联结果。",
518
518
  inputSchema: z.object({
519
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
520
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
521
- story_id: z.string().describe('需求ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
519
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
520
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
521
+ story_id: z.string().describe('需求 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
522
522
  }),
523
523
  handler: async (client, params) => {
524
524
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -530,11 +530,11 @@ export const testTools = [
530
530
  },
531
531
  {
532
532
  name: "tapd_delete_story_relation",
533
- description: "解除测试计划与需求关联",
533
+ description: "解除测试计划与需求的关联。建立用计划侧需求关联建立工具。写操作;test_plan_id、story_id 必填。返回解除结果。",
534
534
  inputSchema: z.object({
535
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
536
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
537
- story_id: z.string().describe('需求ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
535
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
536
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
537
+ story_id: z.string().describe('需求 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
538
538
  }),
539
539
  handler: async (client, params) => {
540
540
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();
@@ -546,11 +546,11 @@ export const testTools = [
546
546
  },
547
547
  {
548
548
  name: "tapd_create_tcase_relation",
549
- description: "创建测试计划与测试用例关联",
549
+ description: "把测试用例关联到测试计划(tcase_id 支持逗号分隔多个)。移出用移出工具。写操作;test_plan_id、tcase_id 必填。返回关联结果。",
550
550
  inputSchema: z.object({
551
- workspace_id: z.number().optional().describe('项目ID(可省略,使用默认配置)'),
552
- test_plan_id: z.string().describe('测试计划ID (必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
553
- tcase_id: z.string().describe('测试用例ID (必填),支持多个ID逗号分隔;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
551
+ workspace_id: z.number().optional().describe('项目 ID,可省略(默认取环境变量 TAPD_DEFAULT_WORKSPACE_ID)'),
552
+ test_plan_id: z.string().describe('测试计划 ID(必填);必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
553
+ tcase_id: z.string().describe('测试用例 ID(必填),支持多个 ID 逗号分隔;必须以字符串(带引号)传递,禁止传数值,20 位 ID 超出 JS 安全整数范围会丢精度'),
554
554
  }),
555
555
  handler: async (client, params) => {
556
556
  const workspaceId = params.workspace_id ?? TapdClient.getDefaultWorkspaceId();