@zzp123/mcp-zentao 1.18.9 → 1.18.10

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.
package/CHANGELOG.md CHANGED
@@ -1,1018 +1,1018 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [1.18.7] - 2025-01-17
9
-
10
- ### Fixed
11
- - **修复配置读取失败日志导致 MCP 启动失败** 🔧
12
- - 删除 `config.ts` 中的 stderr 错误输出
13
- - 配置文件读取失败时静默返回 null,不输出任何日志
14
- - 配置不存在是正常情况(首次使用),不应该有错误输出
15
- - 避免 stderr 输出干扰 MCP 服务器启动
16
-
17
- ### Changed
18
- - `loadConfig()` 函数现在完全静默,失败时只返回 null
19
- - 错误处理完全由调用方(initZentao 工具)负责
20
-
21
- ### Impact
22
- - ✅ MCP 服务器启动更稳定
23
- - ✅ 首次使用时不会有错误提示
24
- - ✅ 完全符合 MCP stdio 协议(stderr 只用于致命错误)
25
-
26
- ## [1.18.6] - 2025-01-17
27
-
28
- ### Fixed
29
- - **彻底清除所有 console 输出** 🔧
30
- - 修复 `json-args.js` 中残留的 3 处 `console.error`
31
- - 将所有错误输出改为 `process.stderr.write`
32
- - 确保发布到 npm 的所有文件都不使用 console
33
-
34
- ### Changed
35
- - `json-args.js` 错误处理统一使用 stderr 输出
36
- - 错误消息格式统一为 `[ERROR]` 前缀
37
-
38
- ### Verification
39
- - ✅ Source files (src/): 0 console statements
40
- - ✅ Compiled files (dist/): 0 console statements
41
- - ✅ Helper scripts (json-args.js): 0 console statements
42
- - ✅ 100% console-free package
43
-
44
- ## [1.18.5] - 2025-01-17
45
-
46
- ### Fixed
47
- - **修复角色版本命令缺失问题** 🔧
48
- - 添加 `zentao`、`zentao-pm`、`zentao-qa`、`zentao-dev` 四个命令入口
49
- - 之前版本只有 `mcp-zentao` 一个命令,导致角色版本无法使用
50
- - 现在用户可以根据需要选择不同角色的命令
51
-
52
- ### Changed
53
- - 更新 package.json 的 bin 配置,支持所有角色版本命令
54
- - `zentao` - 完整版(91个工具)
55
- - `zentao-pm` - 产品经理版(39个工具)
56
- - `zentao-qa` - 测试工程师版(26个工具)
57
- - `zentao-dev` - 开发工程师版(38个工具)
58
-
59
- ### Technical
60
- - 将 bin 从单一入口改为多入口配置
61
- - 所有角色版本的编译文件都已包含在发布包中
62
-
63
- ### Migration
64
- ```bash
65
- # 现在可以使用不同的命令
66
- zentao # 完整版
67
- zentao-pm # 产品经理版
68
- zentao-qa # 测试工程师版
69
- zentao-dev # 开发工程师版
70
- ```
71
-
72
- ## [1.18.4] - 2025-01-17
73
-
74
- ### Fixed
75
- - **修复 MCP stdio 协议污染问题** 🔧
76
- - 删除所有 `console.log` / `console.error` / `console.warn` 语句(240+ 处)
77
- - MCP stdio 服务器的 stdout 仅用于 JSON-RPC 通信,任何日志输出都会破坏协议
78
- - 保留 2 处关键错误输出到 stderr(配置加载失败、MCP 启动失败)
79
- - 错误处理通过 `throw Error` 自动传递给 MCP 客户端
80
-
81
- ### Changed
82
- - 所有调试日志已移除,不再污染 stdout
83
- - MCP 服务器启动失败时输出到 stderr 并正确退出
84
- - 配置文件加载失败时输出到 stderr
85
-
86
- ### Impact
87
- - **协议兼容性**: 完全符合 MCP stdio 协议规范
88
- - **稳定性**: 避免因日志输出导致的协议解析失败
89
- - **性能**: 减少 I/O 开销,提升响应速度
90
- - **代码量**: 删除约 240 行日志代码
91
-
92
- ### Technical
93
- - 清理 `src/api/zentaoApi.ts` 中的 176 处日志
94
- - 清理 `src/index.ts` 中的 91 处日志
95
- - 清理 `src/index-dev.ts` 中的 38 处日志
96
- - 清理 `src/index-pm.ts` 中的 39 处日志
97
- - 清理 `src/index-qa.ts` 中的 26 处日志
98
- - 优化 `src/config.ts` 的错误输出到 stderr
99
- - 保留关键启动错误处理,输出格式:`[FATAL]` / `[ERROR]`
100
-
101
- ### Migration
102
- - 无需用户操作,升级后自动生效
103
- - 错误信息会通过 MCP 客户端(Claude Desktop)正确显示
104
- - 开发调试推荐使用官方 MCP Inspector 工具
105
-
106
- ## [1.18.3] - 2025-01-12
107
-
108
- ### Fixed
109
- - **修复MCP协议兼容性问题** 🔧
110
- - 修复 `changeStory` 和 `changeRequirement` 工具的参数类型错误
111
- - 移除 `z.union([z.object({...}), z.string()])` 改为纯对象类型
112
- - 解决 "Expected object, received string" 错误
113
- - 同时修复完整版和产品经理版本
114
-
115
- ### Technical
116
- - 更新 `src/index.ts` 中的 `changeStory` 和 `changeRequirement` 工具定义
117
- - 更新 `src/index-pm.ts` 中的 `changeStory` 工具定义
118
- - 符合MCP协议规范,所有参数必须是对象类型
119
-
120
- ## [1.17.6] - 2025-11-10
121
-
122
- ### Changed
123
- - **评论工具完全统一** 💬
124
- - 移除最后一个便捷工具 `addStoryComment`
125
- - 现在所有评论统一使用 `addComment` 工具
126
- - 支持11种对象类型:story, requirement, task, bug, testcase, testtask, todo, doc, doctemplate, execution, project
127
-
128
- ### Impact
129
- - **完整版**: 92工具 → 91工具 (-1个)
130
- - **产品经理版**: 40工具 → 39工具 (-1个)
131
- - **测试工程师版**: 27工具 → 26工具 (-1个)
132
- - **开发工程师版**: 39工具 → 38工具 (-1个)
133
- - **总计**: 完全统一评论API,累计减少约 106行重复代码
134
-
135
- ### Technical
136
- - 从 `src/roleConfig.ts` 中移除 `addStoryComment`
137
- - 从 `src/index.ts` 删除 `addStoryComment` 工具定义
138
- - 重新生成所有角色版本源文件
139
- - 更新 `prepare-publish.cjs` 中的工具计数
140
-
141
- ## [1.17.5] - 2025-11-10
142
-
143
- ### Changed
144
- - **评论工具简化** 💬
145
- - 移除 `addBugComment` 和 `addTaskComment` 便捷工具
146
- - 只保留通用的 `addComment` 工具和产品经理专用的 `addStoryComment`
147
- - 简化工具集,用户使用 `addComment` 可以为任何对象添加评论
148
-
149
- ### Impact
150
- - **完整版**: 94工具 → 92工具 (-2个)
151
- - **产品经理版**: 42工具 → 40工具 (-2个)
152
- - **测试工程师版**: 29工具 → 27工具 (-2个)
153
- - **开发工程师版**: 41工具 → 39工具 (-2个)
154
- - **总计**: 减少 6个工具定义,简化约 200行代码
155
-
156
- ### Technical
157
- - 更新 `src/roleConfig.ts` 中的 comment 工具列表
158
- - 从 `src/index.ts` 删除 `addTaskComment` 和 `addBugComment` 定义
159
- - 重新生成所有角色版本源文件
160
-
161
- ## [1.17.4] - 2025-11-10
162
-
163
- ### Changed
164
- - **产品经理版再次优化** 📊
165
- - 从产品经理版 (mcp-zentao-pm) 移除工单管理工具(5个工具)
166
- - 工具数量从 47 个减少到 42 个
167
- - 包大小从 44 KB 减少到约 40 KB
168
- - 更专注于需求、产品和计划管理核心功能
169
-
170
- ### Technical
171
- - 更新 `roleConfig.ts` 中的 pm 角色配置
172
- - 重新生成产品经理版源文件 (`src/index-pm.ts`)
173
-
174
- ## [1.17.3] - 2025-11-10
175
-
176
- ### Changed
177
- - **测试工程师版优化** 🧪
178
- - 从测试工程师版 (mcp-zentao-qa) 移除构建版本管理工具(4个工具)和工单管理工具(5个工具)
179
- - 工具数量从 38 个减少到 29 个
180
- - 包大小从 38 KB 减少到约 27 KB
181
- - 更专注于Bug跟踪和测试用例管理核心功能
182
-
183
- ### Technical
184
- - 更新 `roleConfig.ts` 中的 qa 角色配置
185
- - 重新生成测试工程师版源文件 (`src/index-qa.ts`)
186
-
187
- ## [1.17.2] - 2025-11-10
188
-
189
- ### Changed
190
- - **产品经理版优化** 📊
191
- - 从产品经理版 (mcp-zentao-pm) 移除反馈管理工具(7个工具)
192
- - 工具数量从 54 个减少到 47 个
193
- - 包大小从 25 KB 减少到约 22 KB
194
- - 更专注于产品规划和需求管理核心功能
195
-
196
- ### Technical
197
- - 更新 `roleConfig.ts` 中的 pm 角色配置
198
- - 重新生成产品经理版源文件 (`src/index-pm.ts`)
199
-
200
- ## [1.17.1] - 2025-11-10
201
-
202
- ### Changed
203
- - **开发工程师版优化** 🔧
204
- - 从开发工程师版 (mcp-zentao-dev) 移除工单管理工具(5个工具)
205
- - 工具数量从 46 个减少到 41 个
206
- - 包大小从 24 KB 减少到约 22 KB
207
- - 更专注于核心开发工作流
208
-
209
- ### Technical
210
- - 更新 `roleConfig.ts` 中的 dev 角色配置
211
- - 重新生成开发工程师版源文件 (`src/index-dev.ts`)
212
-
213
- ## [1.17.0] - 2025-11-10
214
-
215
- ### Added
216
- - **角色专用版本** 🎭
217
- - 新增三个角色专用的精简版本,大幅减少上下文占用
218
- - `zentao-pm`: 产品经理版本(54个工具,文件减小32%)
219
- - `zentao-qa`: 测试工程师版本(38个工具,文件减小45%)
220
- - `zentao-dev`: 开发工程师版本(46个工具,文件减小44%)
221
- - `zentao`: 完整版本(94个工具,所有功能)
222
-
223
- ### Changed
224
- - **优化上下文使用** 📊
225
- - 每个角色版本只包含相关工具,显著降低 LLM 上下文消耗
226
- - 产品经理版本:需求、产品、计划、反馈等管理工具
227
- - 测试工程师版本:Bug、测试用例、构建版本等测试工具
228
- - 开发工程师版本:任务、项目、执行、Bug解决等开发工具
229
-
230
- ### Technical
231
- - 新增角色版本源文件:`src/index-pm.ts`, `src/index-qa.ts`, `src/index-dev.ts`
232
- - 新增角色配置模块:`src/roleConfig.ts`
233
- - 新增生成脚本:`generate-role-versions.cjs`
234
- - 更新 package.json 支持多个 bin 入口点
235
-
236
- ### Documentation
237
- - 新增角色分类文档:`ROLES.md`
238
- - 新增角色配置指南:`ROLE_GUIDE.md`
239
-
240
- ## [1.16.0] - 2025-11-07
241
-
242
- ### Fixed
243
- - **修复评论功能 - 使用正确的 REST API v1 接口** 🔧
244
- - 之前版本使用的是 HTML 接口,现已改用标准 REST API
245
- - 修复了评论创建、更新、删除等功能
246
-
247
- ### Added
248
- - **完整的评论管理工具** 💬
249
- - `getComments`: 获取指定对象的评论列表
250
- - `getCommentDetail`: 获取单条评论详情
251
- - `addComment`: 创建评论(支持11种对象类型)
252
- - `updateComment`: 更新评论内容
253
- - `deleteComment`: 删除评论
254
- - 便捷工具:`addStoryComment`、`addTaskComment`、`addBugComment`
255
-
256
- ### Changed
257
- - **更新评论接口实现**
258
- - 使用标准 REST API:`POST /comment`、`GET /comments/{type}/{id}`
259
- - 支持更多对象类型:新增 execution、project 类型
260
- - 返回完整的评论对象信息(包含 id、actor、date 等)
261
-
262
- ### Technical
263
- - 更新 `Comment` 接口定义
264
- - 添加 `UpdateCommentRequest` 接口
265
- - 添加 `CommentListResponse` 接口
266
- - 所有评论方法使用统一的 `request()` 方法,保持 Token 认证
267
-
268
- ## [1.15.0] - 2025-11-07
269
-
270
- ### Added
271
- - **评论功能完整支持** 💬
272
- - 新增 `addComment` 通用评论工具,支持9种对象类型
273
- - 新增专用评论工具:
274
- - `addStoryComment`: 为需求添加评论(自动识别story/requirement)
275
- - `addTaskComment`: 为任务添加评论
276
- - `addBugComment`: 为Bug添加评论
277
- - 支持的对象类型:
278
- - story(软件需求)
279
- - requirement(用户需求)
280
- - task(任务)
281
- - bug(Bug)
282
- - testcase(测试用例)
283
- - testtask(测试单)
284
- - todo(待办)
285
- - doc(文档)
286
- - doctemplate(文档模板)
287
-
288
- ### Changed
289
- - **评论内容格式**
290
- - 支持纯文本评论
291
- - 支持HTML格式的富文本评论
292
- - 自动处理评论提交的响应格式
293
-
294
- ### Technical
295
- - 添加 `CommentObjectType` 类型定义
296
- - 添加 `AddCommentRequest` 和 `CommentResponse` 接口
297
- - 实现混合接口调用(使用HTML接口但保持REST API认证)
298
-
299
- ## [1.14.0] - 2025-11-07
300
-
301
- ### Added
302
- - **完整的用户需求(Requirement)支持** 🎯
303
- - 扩展 Story API,统一支持软件需求(story)和用户需求(requirement)
304
- - 所有现有 story 工具现已支持两种需求类型,自动识别
305
- - 新增4个专用的 requirement 工具:
306
- - `createRequirement`: 创建用户需求
307
- - `getRequirementDetail`: 获取用户需求详情
308
- - `changeRequirement`: 修改用户需求
309
- - `deleteRequirement`: 删除用户需求
310
- - `createStory` 工具新增 `type` 参数,可选择创建 story 或 requirement
311
-
312
- ### Changed
313
- - **更新现有需求工具描述**
314
- - `getStoryDetail`: 现支持 story 和 requirement 两种类型,自动识别
315
- - `changeStory`: 现支持 story 和 requirement 两种类型,自动识别
316
- - `deleteStory`: 现支持 story 和 requirement 两种类型,自动识别
317
- - `getProductStories`: 返回的列表可能包含两种类型的需求
318
-
319
- ### Improved
320
- - **更好的语义化**
321
- - 专用的 requirement 工具提供更清晰的意图表达
322
- - 统一接口底层实现,减少代码重复
323
- - 符合禅道 API v2.0 的最新扩展
324
-
325
- ## [1.13.0] - 2025-11-07
326
-
327
- ### Added
328
- - **产品和需求列表字段过滤功能** 📦
329
- - 为 `getProducts` 添加 `fields` 参数支持
330
- - 为 `getProductStories` 添加 `fields` 参数支持
331
- - 支持三种字段级别:
332
- - `basic`: 基本信息(产品:id, name, code, status;需求:id, title, assignedTo, openedBy)
333
- - `default`: 默认信息(产品:包含 PO/QD/RD 等;需求:包含 status/stage/pri 等,**默认使用**)
334
- - `full`: 完整信息(所有字段)
335
-
336
- ### Changed
337
- - **优化列表接口默认返回数据**
338
- - 产品列表默认使用 `default` 字段级别,返回核心管理信息
339
- - 需求列表默认使用 `basic` 字段级别,只返回最基本的4个字段
340
- - 显著减少数据传输量,提升列表查询响应速度
341
-
342
- ### Improved
343
- - **性能优化**
344
- - 列表接口数据量大幅减少,特别适合快速浏览和搜索场景
345
- - 减少不必要的字段传输,降低网络开销
346
- - 需要详细信息时可按需设置 `fields='full'`
347
-
348
- ## [1.12.0] - 2025-11-07
349
-
350
- ### Added
351
- - **字段级别过滤功能** 📦
352
- - 为 `getMyBugs` 和 `getProductBugs` 添加 `fields` 参数
353
- - 支持三种字段级别:
354
- - `basic`: 基本信息(8个核心字段:id, title, status, pri, severity, assignedTo, openedBy, openedDate)
355
- - `default`: 默认信息(18个常用字段,适合列表展示,**默认使用**)
356
- - `full`: 完整信息(所有字段)
357
- - 显著减少数据传输量,提升响应速度
358
-
359
- ### Changed
360
- - **优化默认返回数据**
361
- - 默认使用 `default` 字段级别,只返回列表展示所需的字段
362
- - 保持默认每页 20 条记录不变
363
- - 需要完整信息时可设置 `fields='full'`
364
-
365
- ### Improved
366
- - **性能优化**
367
- - 使用 default 模式减少约 60% 的数据传输量
368
- - 使用 basic 模式减少约 80% 的数据传输量
369
- - 更快的响应速度和更低的网络开销
370
- - 更适合移动端和弱网络环境使用
371
-
372
- ## [1.11.1] - 2025-11-07
373
-
374
- ### Fixed
375
- - **修复依赖冲突问题** 🔧
376
- - 移除 package.json 中的自引用依赖 `@zzp123/mcp-zentao@1.2.1`
377
- - 解决了 MCP 工具仍然使用旧版本参数(`onlyAssignedToMe`)的问题
378
- - 确保用户安装后立即使用最新的 API 定义
379
-
380
- ### Important
381
- - 如果你从旧版本升级,请重启你的 MCP 服务器或 Claude Desktop 以加载新的工具定义
382
-
383
- ## [1.11.0] - 2025-11-07
384
-
385
- ### Added
386
- - **完整的 Bug 状态筛选支持** ✨
387
- - 扩展 `BugStatus` 类型,新增 16 种状态筛选类型
388
- - 支持所有禅道官方 API 的状态筛选:assigntome、openedbyme、resolvedbyme、assignedbyme、assigntonull、unconfirmed、unclosed、unresolved、toclosed、postponedbugs、longlifebugs、overduebugs、review、feedback、needconfirm、bysearch
389
- - MCP 工具现在提供完整的 20 种状态选项供选择
390
-
391
- - **分支筛选功能** 🌿
392
- - 为 `getMyBugs` 和 `getProductBugs` 添加 `branch` 参数
393
- - 支持 'all'(所有分支)、'0'(主干分支)、分支ID
394
- - 默认值为 'all',符合禅道官方 API 规范
395
-
396
- ### Changed
397
- - **重构 Bug 列表 API 参数** 🔄
398
- - 移除 `onlyAssignedToMe` 参数,改用更灵活的 `status='assigntome'`
399
- - 调整参数顺序:`status, productId, page, limit, branch, order`
400
- - 优化参数构建逻辑,确保与禅道官方 API 完全一致
401
-
402
- ### Improved
403
- - **API 文档完善**
404
- - 为 `getMyBugs` 和 `getProductBugs` 添加详细的 JSDoc 注释
405
- - 更新工具描述,明确说明支持的状态筛选类型
406
- - 参数说明更加清晰,包含默认值和示例
407
-
408
- - **更好的用户体验**
409
- - MCP 工具提供完整的状态枚举,IDE 可以自动补全
410
- - 所有状态选项都有中文注释说明
411
- - 更符合禅道用户的使用习惯
412
-
413
- ### Technical
414
- - 完全符合禅道官方 Bug 列表 API 文档规范
415
- - 支持所有官方 API 参数:branch、status、order、limit、page
416
- - 默认值与官方 API 保持一致
417
-
418
- ## [1.10.0] - 2025-11-07
419
-
420
- ### Fixed
421
- - **修复 Bug 获取工具的 API 端点和参数问题** 🔧
422
- - 从错误的 `/bugs` 端点改为正确的 `/products/{productId}/bugs` 端点
423
- - 移除了低效的客户端过滤逻辑,改用服务器端原生支持的 `assigntome` 状态
424
- - 修复了 `onlyAssignedToMe` 参数无法正确工作的问题
425
-
426
- ### Added
427
- - **添加排序参数支持** ✨
428
- - 为 `getMyBugs` 和 `getProductBugs` 工具添加 `order` 参数
429
- - 支持多种排序方式:`id_desc`(ID降序)、`id_asc`(ID升序)、`pri_desc`(优先级降序)等
430
- - 默认使用 `id_desc` 排序,确保最新的 Bug 显示在前面
431
- - 与禅道官方 API 完全一致的参数格式
432
-
433
- ### Improved
434
- - **性能优化**
435
- - 使用服务器端过滤替代客户端过滤,显著提升查询效率
436
- - 减少不必要的数据传输,降低网络开销
437
- - 更准确的分页信息和总数统计
438
-
439
- ### Changed
440
- - 更新了 `getMyBugs` 方法签名,添加 `order` 参数
441
- - 更新了 `getProductBugs` 方法签名,添加 `order` 参数
442
- - 优化了查询参数的构建方式,使用 URLSearchParams 确保参数正确编码
443
-
444
- ## [1.9.0] - 2025-11-06
445
-
446
- ### Fixed
447
- - **修复 getMyBugs 工具过滤逻辑问题** 🔧
448
- - 禅道API的 `/bugs` 接口不支持 `assignedTo` 参数进行服务端过滤
449
- - 改为使用客户端过滤:获取更多数据后在本地筛选分配给当前用户的Bug
450
- - 修复了使用 `onlyAssignedToMe=true` 时无法正确获取当前用户Bug的问题
451
- - 现在能够正确识别 `assignedTo` 字段(支持对象和字符串两种格式)
452
-
453
- ### Improved
454
- - 优化了 `getMyBugs` 的性能:当需要过滤时自动获取100条数据以确保有足够的结果
455
- - 增加了详细的过滤日志输出,便于调试和追踪
456
-
457
- ### Changed
458
- - 扩展了 `Bug` 类型定义,添加了 `assignedTo`、`openedBy`、`resolvedBy` 等字段
459
- - 更新了文档,说明了禅道API的限制和客户端过滤的实现方式
460
-
461
- ## [1.8.9] - 2025-11-06
462
-
463
- ### Fixed
464
- - **修复 resolveBug 工具必须提供 resolvedBuild 参数的问题**
465
- - 当 resolution 为 "fixed" 时,如果未提供 resolvedBuild,自动设置为 "trunk"(主干版本)
466
- - 消除了使用 resolveBug 工具时的常见错误:"当解决方案为"已解决(fixed)"时,必须提供解决版本(resolvedBuild)"
467
- - 简化了解决Bug的操作流程,提升用户体验
468
-
469
- ### Improved
470
- - 添加了自动默认值设置的日志输出,便于调试和追踪
471
-
472
- ## [1.8.8] - 2025-11-06
473
-
474
- ### Fixed
475
- - **修复 getMyBugs 工具返回Bug数量为0的问题**
476
- - 移除了硬编码的 `assignedTo` 过滤条件
477
- - 默认获取所有Bug,不再只获取分配给当前用户的Bug
478
- - 添加 `onlyAssignedToMe` 参数,让用户可以选择是否只获取分配给自己的Bug
479
-
480
- ### Changed
481
- - **优化默认产品选择逻辑**
482
- - 当未指定 productId 时,默认使用第二个产品(如果存在)
483
- - 如果只有一个产品,则使用第一个产品
484
-
485
- ### Improved
486
- - 为 getMyBugs 工具添加更清晰的描述:"获取Bug列表 - 默认获取所有Bug,可选择只获取分配给我的Bug"
487
- - 增强了工具的灵活性,满足不同使用场景
488
-
489
- ## [1.8.7] - 2025-11-06
490
-
491
- ### Fixed
492
- - **修复 uploadImageFromClipboard 工具的图片URL生成问题**
493
- - 修正图片访问URL格式:从复杂的API参数格式改为简洁的 `/file-read-{id}.png` 格式
494
- - 确保上传后的图片能够正确显示和访问
495
- - URL示例:`http://47.120.4.95:7137/zentao/file-read-3750.png`
496
-
497
- ### Technical
498
- - 简化图片URL生成逻辑
499
- - 提高图片访问的兼容性和可靠性
500
-
501
- ## [1.8.6] - 2025-11-06
502
-
503
- ### Fixed
504
- - **修复 uploadImageFromClipboard 工具路径依赖问题**
505
- - 将 PowerShell 脚本内嵌到代码中,不再依赖外部文件
506
- - 解决了 Claude Code 工作目录与包安装目录不匹配的问题
507
- - 使用 Base64 编码避免转义问题
508
-
509
- ### Improved
510
- - **优化 uploadImageFromClipboard 工具的用户体验**
511
- - 默认行为:直接从剪贴板获取图片并上传到禅道
512
- - 简化了操作流程,用户只需说"上传图片"即可
513
- - 移除了对外部脚本文件的依赖,提高了可靠性
514
-
515
- ### Technical
516
- - 脚本完全内嵌,提高可移植性
517
- - 不再依赖 process.cwd() 路径解析
518
- - 更健壮的错误处理机制
519
-
520
- ## [1.8.5] - 2025-11-06
521
-
522
- ### Improved
523
- - **优化 changeStory 工具参数说明**
524
- - 为 `reviewer` 字段添加详细描述:说明其通常为必填字段,除非设置 `needNotReview=true` 跳过评审
525
- - 为 `needNotReview` 字段添加说明:如果不提供 `reviewer` 则应设置为 `true`
526
- - 为 `storyId` 参数添加描述,提升工具可读性
527
- - 为工具本身添加整体说明:"需求变更 - 支持对象或JSON字符串格式"
528
-
529
- ### Technical
530
- - 改进 MCP 工具的参数描述,帮助 AI 助手更好地理解参数使用规则
531
- - 提升工具在 Claude Code 等 AI IDE 中的可用性
532
-
533
- ## [1.8.0] - 2025-11-06
534
-
535
- ### Changed
536
- - **重构需求变更接口命名**
537
- - 将 `updateStory` 工具重命名为 `changeStory`,更准确地反映其功能
538
- - 将 `UpdateStoryRequest` 类型重命名为 `ChangeStoryRequest`
539
- - 将 `updateStory` API方法重命名为 `changeStory`
540
- - 使用功能完整的"修改需求其他字段"接口替代功能有限的"变更需求"接口
541
-
542
- ### Added
543
- - 向后兼容的类型别名:`UpdateStoryRequest` 作为 `ChangeStoryRequest` 的别名
544
-
545
- ### Technical
546
- - 统一需求变更相关的命名规范
547
- - 保持向后兼容性,旧的类型名称仍然可用
548
- - 所有测试通过,确保重构不影响现有功能
549
-
550
- ## [1.7.4] - 2025-11-06
551
-
552
- ### Fixed
553
- - **修复 createTask 和 updateStory 中的评审人相关错误**
554
- - 修复 `createTask` 工具中 `assignedTo` 参数类型错误(从字符串改为数组)
555
- - 修复 `createTask` 工具中必填参数缺失问题(execution, type, estStarted, deadline)
556
- - 修复 `updateStory` 工具中"评审人不能为null"错误
557
- - 为 `updateStory` 添加自动跳过评审机制(needNotReview=true)
558
-
559
- ### Changed
560
- - `CreateTaskRequest` 接口更新:将 assignedTo 从可选字符串改为必需数组
561
- - `createTask` MCP 工具参数重新定义:必填参数前置,类型修正
562
- - `updateStory` API 方法添加智能评审人处理逻辑
563
- - API 请求表单数据处理:支持数组类型参数的正确格式化
564
-
565
- ### Technical
566
- - 更新测试文件以适配新的接口要求
567
- - TypeScript 编译验证通过,确保类型安全
568
- - 保持向后兼容性,同时修复API规范问题
569
-
570
- ## [1.7.3] - 2025-11-06
571
-
572
- ### Fixed
573
- - **updateStory 工具参数格式优化**
574
- - 修复 `update` 参数只能接受对象格式的问题
575
- - 现在同时支持对象格式和 JSON 字符串格式
576
- - 自动解析 JSON 字符串并提供友好的错误提示
577
-
578
- ### Changed
579
- - `update` 参数使用 `z.union()` 同时接受对象和字符串格式
580
- - 添加 JSON 字符串解析逻辑,提升工具兼容性
581
-
582
- ## [1.7.2] - 2025-11-06
583
-
584
- ### Added
585
- - **updateStory 工具重大增强**
586
- - 新增29个可编辑字段支持,��全对接禅道最新API文档
587
- - 支持需求基本信息编辑:title, product, parent, module, branch, plan, type
588
- - 支持来源信息编辑:source, sourceNote(支持8种来源类型)
589
- - 支持分类与优先级:category, pri, estimate
590
- - 支持状态与阶段:stage, status
591
- - 支持关键词与标识:keywords, color, grade
592
- - 支持人员相关:mailto, reviewer, assignedTo, closedBy, feedbackBy
593
- - 支持关闭相关:closedReason, duplicateStory(7种关闭原因)
594
- - 支持评审相关:needNotReview
595
- - 支持通知相关:notifyEmail
596
- - 支持描述内容:spec, verify(HTML格式)
597
- - 支持备注:comment
598
-
599
- ### Changed
600
- - `UpdateStoryRequest` 接口完全重构,从7个字段扩展到29个字段
601
- - `updateStory` MCP 工具参数完全重新定义,支持所有新字段
602
- - 添加了详细的字段注释和类型定义,提升开发体验
603
-
604
- ### Technical
605
- - 所有字段均为可选参数,支持部分更新
606
- - `plan` 字段支持单个ID或数组格式
607
- - `closedReason` 使用枚举类型确保数据正确性
608
- - `mailto` 和 `reviewer` 字段支持数组格式
609
-
610
- ### Benefits
611
- - **功能完整性**:支持禅道需求管理的所有常用编辑功能
612
- - **灵活性**:可以批量更新多个字段,也可以单独更新单个字段
613
- - **类型安全**:完整的 TypeScript 类型定义,减少运行时错误
614
-
615
- ## [1.7.1] - 2025-11-06
616
-
617
- ### Fixed
618
- - **图片 HTML 格式优化**
619
- - `uploadFile` 和 `uploadImageFromClipboard` 工具现在生成的 `imageHtml` 会被 `<p>` 标签包裹
620
- - 修复了某些情况下图片在禅道中无法正确显示的问题
621
- - 确保生成的 HTML 格式与禅道富文本编辑器的标准格式一致
622
-
623
- ### Changed
624
- - 图片 HTML 格式从 `<img ... />` 改为 `<p><img ... /></p>`
625
- - 更新使用提示,明确说明图片会被包裹在 `<p>` 标签中
626
-
627
- ## [1.7.0] - 2025-11-06
628
-
629
- ### Added
630
- - **图片上传自动生成 HTML 格式**
631
- - `uploadFile` 工具现在返回 `imageHtml` 字段,包含禅道所需的完整 HTML 代码
632
- - `uploadImageFromClipboard` 工具同样返回 `imageHtml` 字段
633
- - 新增 `imageUrl` 字段,提供完整的图片访问地址
634
- - 新增 `fileId` 字段,方便后续引用
635
- - 新增使用提示 `tip` 字段,帮助用户正确使用
636
-
637
- ### Changed
638
- - ZentaoAPI 类新增 `getConfig()` 方法,允许获取配置信息以生成图片 URL
639
- - 图片上传返回格式优化,Claude Code 现在能自动识别并使用正确的 HTML 格式
640
-
641
- ### Technical
642
- - 图片 HTML 格式:`<img onload="setImageSize(this,0)" src="..." alt="..." />`
643
- - 自动包含 `onload="setImageSize(this,0)"` 以确保图片在禅道中正确显示
644
-
645
- ### Benefits
646
- - **提升用户体验**:Claude Code 无需手动构造 HTML 代码
647
- - **减少错误**:避免手动拼接 HTML 时的格式错误
648
- - **更直观**:返回结果中直接包含可用的 HTML 代码
649
-
650
- ## [1.6.1] - 2025-11-05
651
-
652
- ### Fixed
653
- - **修复 Windows 剪贴板图片读取问题**
654
- - 替换为新的 PowerShell 脚本 `scripts/get_clipboard.ps1`
655
- - 使用 `Add-Type` 加载 `System.Drawing` 程序集,确保正确处理图片
656
- - 改进错误处理,提供更详细的错误信息
657
- - 使用 `-ExecutionPolicy Bypass` 确保脚本可以执行
658
-
659
- ### Changed
660
- - Windows 平台现在使用外部 PowerShell 脚本文件而非内联脚本
661
- - 优化了 base64 转换流程,确保内存流正确关闭
662
-
663
- ## [1.6.0] - 2025-11-05
664
-
665
- ### Changed - 重大更新
666
- - **迁移到自定义模块接口** `/custom/modules` - 替代原生 `/modules` 接口
667
- - 接口路径:`GET /custom/modules`(原 `/modules`)
668
- - 支持字段过滤功能:通过 `fields` 参数指定返回字段
669
- - 默认返回精简字段:id、name、parent、grade、type
670
- - 可选字段:id、root、branch、name、parent、path、grade、order、type、owner、collector、short
671
-
672
- ### Added
673
- - 新增 `fields` 参数支持,可大幅减少返回数据量(60-80%)
674
- - 新增 `ModulesResponse` 接口:`{ modules: SimpleModule[], total: number }`
675
- - 更新 `SimpleModule` 接口,支持更多可选字段
676
-
677
- ### Technical
678
- - 返回数据结构变化:从嵌套树形结构改为扁平化数组
679
- - 通过 `parent` 字段关联父子关系,通过 `path` 字段表示层级路径
680
- - 移除 `simplifyModule()` 递归处理方法(不再需要)
681
- - 接口响应包含 `total` 字段,返回模块总数
682
-
683
- ### Benefits
684
- - **性能提升**:支持按需获取字段,减少60-80%数据传输量
685
- - **更灵活**:可根据实际需求指定返回字段
686
- - **更标准**:返回格式包含 total 统计信息
687
-
688
- ### Breaking Changes
689
- - `getModules()` 返回类型从 `SimpleModule[]` 改为 `ModulesResponse`
690
- - `SimpleModule` 不再包含 `children` 字段(数据已扁平化)
691
-
692
- ## [1.5.0] - 2025-11-05
693
-
694
- ### Added
695
- - **模块数据简化功能** - 新增 `SimpleModule` 接口,简化模块API返回数据
696
- - `getModules` 接口现在只返回核心字段:id、name、parent、grade、children
697
- - 移除冗余的字段(type、path、order等),大幅减少数据传输量
698
- - 保持树形结构,递归简化所有子模块数据
699
-
700
- ### Changed
701
- - 优化 `getModules()` 方法,返回类型从 `Module[]` 改为 `SimpleModule[]`
702
- - 添加 `simplifyModule()` 私有方法,用于递归转换模块数据结构
703
-
704
- ### Benefits
705
- - 减少网络传输数据量,提升API响应速度
706
- - 简化客户端数据处理逻辑
707
- - 更清晰的数据结构,只包含必要信息
708
-
709
- ## [1.4.3] - 2025-11-05
710
-
711
- ### Fixed
712
- - 将 `CHANGELOG.md` 添加到 npm 包发布文件列表中
713
- - 确保用户可以在安装包后查看完整的版本历史
714
-
715
- ## [1.4.2] - 2025-11-05
716
-
717
- ### Added
718
- - 创建 `CHANGELOG.md` - 完整的版本更新历史文档
719
- - 在 README.md 中添加版本历史章节和最新版本信息
720
- - 添加 npm 版本徽章和 MIT 许可证徽章
721
-
722
- ### Changed
723
- - 更新 README.md 中的包名从 `@bigtian/mcp-zentao` 到 `@zzp123/mcp-zentao`
724
- - 更新 API 文档示例代码,使用最新的接口签名
725
- - 添加版本标记到 API 方法说明(如 v1.4.0+, v1.2.0+)
726
- - 完善类型定义文档,添加 `ResolveBugRequest`、`UploadFileRequest`、`FileUploadResponse` 等新接口
727
-
728
- ### Documentation
729
- - 整理所有版本的更新内容到 CHANGELOG
730
- - 记录从 v1.0.x 到 v1.4.2 的完整演进历史
731
- - 提供清晰的版本规范说明
732
-
733
- ## [1.4.1] - 2025-11-05
734
-
735
- ### Fixed
736
- - 修复 `uploadImageFromClipboard` 工具上传成功后没有返回内容的问题,该问题导致 AI 一直等待响应而卡住
737
- - 改进返回数据结构,现在包含 `success` 标志位、文件大小、文件名等详细信息
738
- - 增强错误处理,为每个平台(Windows/macOS/Linux)提供专门的错误处理和清晰的错误提示
739
- - 添加完整的执行日志,方便调试和问题排查
740
-
741
- ### Changed
742
- - 优化返回格式,统一成功和失败响应的数据结构
743
- - 改进错误信息,包含堆栈跟踪和解决建议
744
-
745
- ## [1.4.0] - 2025-11-05
746
-
747
- ### Added
748
- - **新增解决Bug接口** `resolveBug` - 根据最新的禅道API文档添加
749
- - 接口路径:`POST /bugs/:id/resolve`
750
- - 支持7种解决方案:fixed(已解决)、bydesign(设计如此)、duplicate(重复Bug)、external(外部原因)、notrepro(无法重现)、postponed(延期处理)、willnotfix(不予解决)
751
- - 自动验证必填字段:fixed 需要 resolvedBuild,duplicate 需要 duplicateBug
752
- - 支持备注和指派功能
753
- - 新增 `ResolutionType` 类型定义
754
- - 新增 `ResolveBugRequest` 接口定义
755
-
756
- ### Technical
757
- - 在 `zentaoApi.ts` 中实现 `resolveBug()` 方法,包含参数验证逻辑
758
- - 在 `index.ts` 中注册 `resolveBug` MCP 工具
759
- - 完善类型系统,确保类型安全
760
-
761
- ## [1.3.2] - 2025-11-05
762
-
763
- ### Removed
764
- - 移除 `resolveBug` API 方法(之前的实现与文档不符)
765
- - 移除 `resolveBug` MCP 工具注册
766
- - 移除 `BugResolution` 接口类型定义
767
-
768
- ### Reason
769
- - 禅道REST API文档中的修改Bug接口(`PUT /bugs/:id`)不支持修改Bug状态
770
- - 该接口只支持修改基本信息(标题、优先级、严重程度等),不能修改 status、resolution、resolvedBuild 等字段
771
- - 这些字段只在返回数据中存在,不能作为请求参数
772
-
773
- ### Note
774
- - 此版本移除的功能在 v1.4.0 中以正确的实现方式重新添加
775
-
776
- ## [1.3.1] - 2025-11-05
777
-
778
- ### Fixed
779
- - **修复 Claude Code 中剪贴板图片无法上传的核心问题**
780
- - 修改 `uploadImageFromClipboard` 工具,使其主动读取系统剪贴板,而不是期望 Claude Code 提供 base64Data
781
-
782
- ### Changed
783
- - 工具现在直接使用操作系统原生方法读取剪贴板:
784
- - Windows: PowerShell 的 `System.Windows.Forms.Clipboard`
785
- - macOS: `pngpaste` 命令
786
- - Linux: `xclip` 命令
787
- - 移除 `base64Data` 必填参数,改为可选的 `filename` 和 `uid`
788
-
789
- ### Technical Details
790
- - **问题根源**:Claude Code 输入框中粘贴的图片会上传到 Claude 服务器用于视觉分析,MCP 工具运行在本地只能访问系统剪贴板,这是两个完全独立的数据源
791
- - **解决方案**:工具直接读取系统剪贴板,不依赖 Claude Code 传递图片数据
792
-
793
- ### Documentation
794
- - 创建 `为什么读取不到剪贴板图片.md` - 详细解释技术原理
795
- - 创建 `Claude-Code图片上传指南.md` - 提供正确的使用方法
796
- - 创建 `scripts/get-clipboard-base64.js` - 辅助脚本
797
-
798
- ## [1.3.0] - 2025-11-05
799
-
800
- ### Added
801
- - **命令行脚本支持** - 添加跨平台的剪贴板图片上传脚本
802
- - `scripts/upload-clipboard-image.js` - Node.js 实现(跨平台)
803
- - `scripts/upload-clipboard-image.ps1` - PowerShell 脚本(Windows)
804
- - `scripts/upload-clipboard-image.py` - Python 实现(跨平台)
805
- - 添加 npm 脚本命令:
806
- - `npm run upload:clipboard` - 运行 Node.js 脚本
807
- - `npm run upload:clipboard:py` - 运行 Python 脚本
808
- - 创建 `upload.bat.example` 配置模板
809
-
810
- ### Documentation
811
- - 创建 `scripts/README.md` - 详细的脚本使用文档
812
- - 创建 `scripts/MCP-INTEGRATION.md` - MCP 集成说明
813
- - 创建 `上传图片使用说明.md` - 中文快速开始指南
814
-
815
- ### Changed
816
- - 更新 package.json,将 scripts 文件夹包含到发布包中
817
-
818
- ### Features
819
- - 支持从系统剪贴板直接上传图片到禅道
820
- - 100% 可靠的命令行方式(不依赖 MCP)
821
- - 自动保存图片到本地 img 文件夹
822
- - 返回文件 ID 和访问 URL
823
-
824
- ## [1.2.2] - 2025-11-05
825
-
826
- ### Added
827
- - 创建专门的 `uploadImageFromClipboard` MCP 工具
828
- - 工具接受 `base64Data`(必填)、`filename`(可选)、`uid`(可选)参数
829
-
830
- ### Changed
831
- - 简化剪贴板图片上传流程
832
- - 使工具更加明确和易用
833
-
834
- ### Note
835
- - 此版本的实现在 v1.3.1 中被完全重写,以解决 Claude Code 集成问题
836
-
837
- ## [1.2.1] - 2025-11-05
838
-
839
- ### Added
840
- - `uploadFile` 工具支持 `base64Data` 参数,可以直接上传 base64 编码的图片
841
- - 自动创建 `img` 文件夹(如果不存在)
842
- - 智能图片格式检测(从 data URL 中提取)
843
- - 默认文件名生成(使用时间戳)
844
-
845
- ### Changed
846
- - 增强 `uploadFile` 工具,同时支持 `filePath` 和 `base64Data` 两种方式
847
- - 改进错误处理和参数验证
848
-
849
- ### Technical
850
- - 添加 data URL 解析逻辑
851
- - 支持 png、jpg、jpeg、gif 等常见图片格式
852
-
853
- ## [1.2.0] - 2025-11-05
854
-
855
- ### Added
856
- - **文件上传接口** `uploadFile` - POST `/files`
857
- - 支持 multipart/form-data 格式上传
858
- - 支持 `uid` 参数(用于富文本编辑器关联)
859
- - 支持多种文件格式(文档、图片、媒体、压缩包等)
860
- - **文件下载接口** `downloadFile` - GET `/files/:id`
861
- - 返回文件的二进制数据(Buffer)
862
- - 支持将文件保存到指定路径
863
-
864
- ### Technical
865
- - 添加 `FileUploadResponse` 接口类型
866
- - 添加 `UploadFileRequest` 接口类型
867
- - 实现 `zentaoApi.uploadFile()` 方法,使用 form-data 库
868
- - 实现 `zentaoApi.downloadFile()` 方法,支持 arraybuffer 响应
869
- - 安装依赖:`form-data` 和 `@types/form-data`
870
-
871
- ### MCP Tools
872
- - 注册 `uploadFile` MCP 工具
873
- - 注册 `downloadFile` MCP 工具
874
-
875
- ## [1.1.x] - 早期版本
876
-
877
- ### Added
878
- - 模块管理接口 `getModules` - GET `/modules`
879
- - 支持按类型和ID获取模块树
880
- - 支持需求、任务、Bug、用例、反馈、产品等多种模块类型
881
-
882
- ## [1.0.x] - 初始版本
883
-
884
- ### Added
885
- - **基础功能**
886
- - 禅道 API 认证(Token 获取)
887
- - 配置管理(本地配置文件)
888
- - MCP 服务器初始化
889
-
890
- - **任务管理**
891
- - `getMyTasks` - 获取我的任务列表
892
- - `getTaskDetail` - 获取任务详情
893
- - `updateTask` - 更新任务
894
- - `finishTask` - 完成任务
895
- - `createTask` - 创建任务
896
-
897
- - **Bug管理**
898
- - `getMyBugs` - 获取我的Bug列表
899
- - `getBugDetail` - 获取Bug详情
900
- - `createBug` - 创建Bug
901
- - `updateBug` - 修改Bug
902
- - `deleteBug` - 删除Bug
903
-
904
- - **产品管理**
905
- - `getProducts` - 获取产品列表
906
- - `getProductDetail` - 获取产品详情
907
- - `createProduct` - 创建产品
908
- - `updateProduct` - 更新产品
909
- - `deleteProduct` - 删除产品
910
-
911
- - **项目集管理**
912
- - `getPrograms` - 获取项目集列表
913
- - `getProgramDetail` - 获取项目集详情
914
- - `createProgram` - 创建项目集
915
- - `updateProgram` - 更新项目集
916
- - `deleteProgram` - 删除项目集
917
-
918
- - **项目管理**
919
- - `getProjects` - 获取项目列表
920
- - `getProjectDetail` - 获取项目详情
921
- - `createProject` - 创建项目
922
- - `updateProject` - 更新项目
923
- - `deleteProject` - 删除项目
924
-
925
- - **执行管理**
926
- - `getExecutions` - 获取执行列表
927
- - `getExecutionDetail` - 获取执行详情
928
- - `createExecution` - 创建执行
929
- - `updateExecution` - 更新执行
930
- - `deleteExecution` - 删除执行
931
-
932
- - **需求管理**
933
- - `getStories` - 获取需求列表
934
- - `getStoryDetail` - 获取需求详情
935
- - `createStory` - 创建需求
936
- - `updateStory` - 更新需求
937
- - `deleteStory` - 删除需求
938
-
939
- - **产品计划**
940
- - `getPlans` - 获取计划列表
941
- - `getPlanDetail` - 获取计划详情
942
- - `createPlan` - 创建计划
943
- - `updatePlan` - 更新计划
944
- - `deletePlan` - 删除计划
945
- - `linkBugsToPlan` - 关联Bug到计划
946
- - `unlinkBugsFromPlan` - 取消关联Bug
947
-
948
- - **版本管理**
949
- - `getBuilds` - 获取版本列表
950
- - `getBuildDetail` - 获取版本详情
951
- - `createBuild` - 创建版本
952
- - `updateBuild` - 更新版本
953
- - `deleteBuild` - 删除版本
954
-
955
- - **反馈管理**
956
- - `getFeedbacks` - 获取反馈列表
957
- - `getFeedbackDetail` - 获取反馈详情
958
- - `createFeedback` - 创建反馈
959
- - `updateFeedback` - 更新反馈
960
- - `deleteFeedback` - 删除反馈
961
- - `assignFeedback` - 指派反馈
962
- - `closeFeedback` - 关闭反馈
963
-
964
- - **测试用例**
965
- - `getTestCases` - 获取用例列表
966
- - `getTestCaseDetail` - 获取用例详情
967
- - `createTestCase` - 创建用例
968
- - `updateTestCase` - 更新用例
969
- - `deleteTestCase` - 删除用例
970
-
971
- - **工单管理**
972
- - `getTickets` - 获取工单列表
973
- - `getTicketDetail` - 获取工单详情
974
- - `createTicket` - 创建工单
975
- - `updateTicket` - 更新工单
976
- - `deleteTicket` - 删除工单
977
-
978
- - **用户管理**
979
- - `getMyProfile` - 获取我的信息
980
- - `getUsers` - 获取用户列表
981
- - `getUserDetail` - 获取用户详情
982
- - `createUser` - 创建用户
983
- - `updateUser` - 更新用户
984
- - `deleteUser` - 删除用户
985
-
986
- - **发布管理**
987
- - `getReleases` - 获取发布列表
988
- - `getReleaseDetail` - 获取发布详情
989
-
990
- ### Technical
991
- - TypeScript 实现,提供完整的类型定义
992
- - 基于 Axios 的 HTTP 客户端
993
- - MD5 密码加密
994
- - 自动 Token 管理和刷新
995
- - 配置文件支持(~/.zentao/config.json)
996
- - MCP (Model Context Protocol) 集成
997
- - Zod schema 验证
998
-
999
- ### Documentation
1000
- - README.md - 项目说明
1001
- - 禅道API文档.md - 完整的 API 文档
1002
-
1003
- ---
1004
-
1005
- ## 版本规范
1006
-
1007
- - **主版本号 (Major)**: 不兼容的 API 变更
1008
- - **次版本号 (Minor)**: 向下兼容的功能新增
1009
- - **修订号 (Patch)**: 向下兼容的问题修正
1010
-
1011
- ## 链接
1012
-
1013
- - [npm 包地址](https://www.npmjs.com/package/@zzp123/mcp-zentao)
1014
- - [GitHub 仓库](https://github.com/yourusername/mcp-zentao)(待更新)
1015
-
1016
- ## 贡献者
1017
-
1018
- - [@zzp123](https://github.com/zzp123) - 项目维护者
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.18.7] - 2025-01-17
9
+
10
+ ### Fixed
11
+ - **修复配置读取失败日志导致 MCP 启动失败** 🔧
12
+ - 删除 `config.ts` 中的 stderr 错误输出
13
+ - 配置文件读取失败时静默返回 null,不输出任何日志
14
+ - 配置不存在是正常情况(首次使用),不应该有错误输出
15
+ - 避免 stderr 输出干扰 MCP 服务器启动
16
+
17
+ ### Changed
18
+ - `loadConfig()` 函数现在完全静默,失败时只返回 null
19
+ - 错误处理完全由调用方(initZentao 工具)负责
20
+
21
+ ### Impact
22
+ - ✅ MCP 服务器启动更稳定
23
+ - ✅ 首次使用时不会有错误提示
24
+ - ✅ 完全符合 MCP stdio 协议(stderr 只用于致命错误)
25
+
26
+ ## [1.18.6] - 2025-01-17
27
+
28
+ ### Fixed
29
+ - **彻底清除所有 console 输出** 🔧
30
+ - 修复 `json-args.js` 中残留的 3 处 `console.error`
31
+ - 将所有错误输出改为 `process.stderr.write`
32
+ - 确保发布到 npm 的所有文件都不使用 console
33
+
34
+ ### Changed
35
+ - `json-args.js` 错误处理统一使用 stderr 输出
36
+ - 错误消息格式统一为 `[ERROR]` 前缀
37
+
38
+ ### Verification
39
+ - ✅ Source files (src/): 0 console statements
40
+ - ✅ Compiled files (dist/): 0 console statements
41
+ - ✅ Helper scripts (json-args.js): 0 console statements
42
+ - ✅ 100% console-free package
43
+
44
+ ## [1.18.5] - 2025-01-17
45
+
46
+ ### Fixed
47
+ - **修复角色版本命令缺失问题** 🔧
48
+ - 添加 `zentao`、`zentao-pm`、`zentao-qa`、`zentao-dev` 四个命令入口
49
+ - 之前版本只有 `mcp-zentao` 一个命令,导致角色版本无法使用
50
+ - 现在用户可以根据需要选择不同角色的命令
51
+
52
+ ### Changed
53
+ - 更新 package.json 的 bin 配置,支持所有角色版本命令
54
+ - `zentao` - 完整版(91个工具)
55
+ - `zentao-pm` - 产品经理版(39个工具)
56
+ - `zentao-qa` - 测试工程师版(26个工具)
57
+ - `zentao-dev` - 开发工程师版(38个工具)
58
+
59
+ ### Technical
60
+ - 将 bin 从单一入口改为多入口配置
61
+ - 所有角色版本的编译文件都已包含在发布包中
62
+
63
+ ### Migration
64
+ ```bash
65
+ # 现在可以使用不同的命令
66
+ zentao # 完整版
67
+ zentao-pm # 产品经理版
68
+ zentao-qa # 测试工程师版
69
+ zentao-dev # 开发工程师版
70
+ ```
71
+
72
+ ## [1.18.4] - 2025-01-17
73
+
74
+ ### Fixed
75
+ - **修复 MCP stdio 协议污染问题** 🔧
76
+ - 删除所有 `console.log` / `console.error` / `console.warn` 语句(240+ 处)
77
+ - MCP stdio 服务器的 stdout 仅用于 JSON-RPC 通信,任何日志输出都会破坏协议
78
+ - 保留 2 处关键错误输出到 stderr(配置加载失败、MCP 启动失败)
79
+ - 错误处理通过 `throw Error` 自动传递给 MCP 客户端
80
+
81
+ ### Changed
82
+ - 所有调试日志已移除,不再污染 stdout
83
+ - MCP 服务器启动失败时输出到 stderr 并正确退出
84
+ - 配置文件加载失败时输出到 stderr
85
+
86
+ ### Impact
87
+ - **协议兼容性**: 完全符合 MCP stdio 协议规范
88
+ - **稳定性**: 避免因日志输出导致的协议解析失败
89
+ - **性能**: 减少 I/O 开销,提升响应速度
90
+ - **代码量**: 删除约 240 行日志代码
91
+
92
+ ### Technical
93
+ - 清理 `src/api/zentaoApi.ts` 中的 176 处日志
94
+ - 清理 `src/index.ts` 中的 91 处日志
95
+ - 清理 `src/index-dev.ts` 中的 38 处日志
96
+ - 清理 `src/index-pm.ts` 中的 39 处日志
97
+ - 清理 `src/index-qa.ts` 中的 26 处日志
98
+ - 优化 `src/config.ts` 的错误输出到 stderr
99
+ - 保留关键启动错误处理,输出格式:`[FATAL]` / `[ERROR]`
100
+
101
+ ### Migration
102
+ - 无需用户操作,升级后自动生效
103
+ - 错误信息会通过 MCP 客户端(Claude Desktop)正确显示
104
+ - 开发调试推荐使用官方 MCP Inspector 工具
105
+
106
+ ## [1.18.3] - 2025-01-12
107
+
108
+ ### Fixed
109
+ - **修复MCP协议兼容性问题** 🔧
110
+ - 修复 `changeStory` 和 `changeRequirement` 工具的参数类型错误
111
+ - 移除 `z.union([z.object({...}), z.string()])` 改为纯对象类型
112
+ - 解决 "Expected object, received string" 错误
113
+ - 同时修复完整版和产品经理版本
114
+
115
+ ### Technical
116
+ - 更新 `src/index.ts` 中的 `changeStory` 和 `changeRequirement` 工具定义
117
+ - 更新 `src/index-pm.ts` 中的 `changeStory` 工具定义
118
+ - 符合MCP协议规范,所有参数必须是对象类型
119
+
120
+ ## [1.17.6] - 2025-11-10
121
+
122
+ ### Changed
123
+ - **评论工具完全统一** 💬
124
+ - 移除最后一个便捷工具 `addStoryComment`
125
+ - 现在所有评论统一使用 `addComment` 工具
126
+ - 支持11种对象类型:story, requirement, task, bug, testcase, testtask, todo, doc, doctemplate, execution, project
127
+
128
+ ### Impact
129
+ - **完整版**: 92工具 → 91工具 (-1个)
130
+ - **产品经理版**: 40工具 → 39工具 (-1个)
131
+ - **测试工程师版**: 27工具 → 26工具 (-1个)
132
+ - **开发工程师版**: 39工具 → 38工具 (-1个)
133
+ - **总计**: 完全统一评论API,累计减少约 106行重复代码
134
+
135
+ ### Technical
136
+ - 从 `src/roleConfig.ts` 中移除 `addStoryComment`
137
+ - 从 `src/index.ts` 删除 `addStoryComment` 工具定义
138
+ - 重新生成所有角色版本源文件
139
+ - 更新 `prepare-publish.cjs` 中的工具计数
140
+
141
+ ## [1.17.5] - 2025-11-10
142
+
143
+ ### Changed
144
+ - **评论工具简化** 💬
145
+ - 移除 `addBugComment` 和 `addTaskComment` 便捷工具
146
+ - 只保留通用的 `addComment` 工具和产品经理专用的 `addStoryComment`
147
+ - 简化工具集,用户使用 `addComment` 可以为任何对象添加评论
148
+
149
+ ### Impact
150
+ - **完整版**: 94工具 → 92工具 (-2个)
151
+ - **产品经理版**: 42工具 → 40工具 (-2个)
152
+ - **测试工程师版**: 29工具 → 27工具 (-2个)
153
+ - **开发工程师版**: 41工具 → 39工具 (-2个)
154
+ - **总计**: 减少 6个工具定义,简化约 200行代码
155
+
156
+ ### Technical
157
+ - 更新 `src/roleConfig.ts` 中的 comment 工具列表
158
+ - 从 `src/index.ts` 删除 `addTaskComment` 和 `addBugComment` 定义
159
+ - 重新生成所有角色版本源文件
160
+
161
+ ## [1.17.4] - 2025-11-10
162
+
163
+ ### Changed
164
+ - **产品经理版再次优化** 📊
165
+ - 从产品经理版 (mcp-zentao-pm) 移除工单管理工具(5个工具)
166
+ - 工具数量从 47 个减少到 42 个
167
+ - 包大小从 44 KB 减少到约 40 KB
168
+ - 更专注于需求、产品和计划管理核心功能
169
+
170
+ ### Technical
171
+ - 更新 `roleConfig.ts` 中的 pm 角色配置
172
+ - 重新生成产品经理版源文件 (`src/index-pm.ts`)
173
+
174
+ ## [1.17.3] - 2025-11-10
175
+
176
+ ### Changed
177
+ - **测试工程师版优化** 🧪
178
+ - 从测试工程师版 (mcp-zentao-qa) 移除构建版本管理工具(4个工具)和工单管理工具(5个工具)
179
+ - 工具数量从 38 个减少到 29 个
180
+ - 包大小从 38 KB 减少到约 27 KB
181
+ - 更专注于Bug跟踪和测试用例管理核心功能
182
+
183
+ ### Technical
184
+ - 更新 `roleConfig.ts` 中的 qa 角色配置
185
+ - 重新生成测试工程师版源文件 (`src/index-qa.ts`)
186
+
187
+ ## [1.17.2] - 2025-11-10
188
+
189
+ ### Changed
190
+ - **产品经理版优化** 📊
191
+ - 从产品经理版 (mcp-zentao-pm) 移除反馈管理工具(7个工具)
192
+ - 工具数量从 54 个减少到 47 个
193
+ - 包大小从 25 KB 减少到约 22 KB
194
+ - 更专注于产品规划和需求管理核心功能
195
+
196
+ ### Technical
197
+ - 更新 `roleConfig.ts` 中的 pm 角色配置
198
+ - 重新生成产品经理版源文件 (`src/index-pm.ts`)
199
+
200
+ ## [1.17.1] - 2025-11-10
201
+
202
+ ### Changed
203
+ - **开发工程师版优化** 🔧
204
+ - 从开发工程师版 (mcp-zentao-dev) 移除工单管理工具(5个工具)
205
+ - 工具数量从 46 个减少到 41 个
206
+ - 包大小从 24 KB 减少到约 22 KB
207
+ - 更专注于核心开发工作流
208
+
209
+ ### Technical
210
+ - 更新 `roleConfig.ts` 中的 dev 角色配置
211
+ - 重新生成开发工程师版源文件 (`src/index-dev.ts`)
212
+
213
+ ## [1.17.0] - 2025-11-10
214
+
215
+ ### Added
216
+ - **角色专用版本** 🎭
217
+ - 新增三个角色专用的精简版本,大幅减少上下文占用
218
+ - `zentao-pm`: 产品经理版本(54个工具,文件减小32%)
219
+ - `zentao-qa`: 测试工程师版本(38个工具,文件减小45%)
220
+ - `zentao-dev`: 开发工程师版本(46个工具,文件减小44%)
221
+ - `zentao`: 完整版本(94个工具,所有功能)
222
+
223
+ ### Changed
224
+ - **优化上下文使用** 📊
225
+ - 每个角色版本只包含相关工具,显著降低 LLM 上下文消耗
226
+ - 产品经理版本:需求、产品、计划、反馈等管理工具
227
+ - 测试工程师版本:Bug、测试用例、构建版本等测试工具
228
+ - 开发工程师版本:任务、项目、执行、Bug解决等开发工具
229
+
230
+ ### Technical
231
+ - 新增角色版本源文件:`src/index-pm.ts`, `src/index-qa.ts`, `src/index-dev.ts`
232
+ - 新增角色配置模块:`src/roleConfig.ts`
233
+ - 新增生成脚本:`generate-role-versions.cjs`
234
+ - 更新 package.json 支持多个 bin 入口点
235
+
236
+ ### Documentation
237
+ - 新增角色分类文档:`ROLES.md`
238
+ - 新增角色配置指南:`ROLE_GUIDE.md`
239
+
240
+ ## [1.16.0] - 2025-11-07
241
+
242
+ ### Fixed
243
+ - **修复评论功能 - 使用正确的 REST API v1 接口** 🔧
244
+ - 之前版本使用的是 HTML 接口,现已改用标准 REST API
245
+ - 修复了评论创建、更新、删除等功能
246
+
247
+ ### Added
248
+ - **完整的评论管理工具** 💬
249
+ - `getComments`: 获取指定对象的评论列表
250
+ - `getCommentDetail`: 获取单条评论详情
251
+ - `addComment`: 创建评论(支持11种对象类型)
252
+ - `updateComment`: 更新评论内容
253
+ - `deleteComment`: 删除评论
254
+ - 便捷工具:`addStoryComment`、`addTaskComment`、`addBugComment`
255
+
256
+ ### Changed
257
+ - **更新评论接口实现**
258
+ - 使用标准 REST API:`POST /comment`、`GET /comments/{type}/{id}`
259
+ - 支持更多对象类型:新增 execution、project 类型
260
+ - 返回完整的评论对象信息(包含 id、actor、date 等)
261
+
262
+ ### Technical
263
+ - 更新 `Comment` 接口定义
264
+ - 添加 `UpdateCommentRequest` 接口
265
+ - 添加 `CommentListResponse` 接口
266
+ - 所有评论方法使用统一的 `request()` 方法,保持 Token 认证
267
+
268
+ ## [1.15.0] - 2025-11-07
269
+
270
+ ### Added
271
+ - **评论功能完整支持** 💬
272
+ - 新增 `addComment` 通用评论工具,支持9种对象类型
273
+ - 新增专用评论工具:
274
+ - `addStoryComment`: 为需求添加评论(自动识别story/requirement)
275
+ - `addTaskComment`: 为任务添加评论
276
+ - `addBugComment`: 为Bug添加评论
277
+ - 支持的对象类型:
278
+ - story(软件需求)
279
+ - requirement(用户需求)
280
+ - task(任务)
281
+ - bug(Bug)
282
+ - testcase(测试用例)
283
+ - testtask(测试单)
284
+ - todo(待办)
285
+ - doc(文档)
286
+ - doctemplate(文档模板)
287
+
288
+ ### Changed
289
+ - **评论内容格式**
290
+ - 支持纯文本评论
291
+ - 支持HTML格式的富文本评论
292
+ - 自动处理评论提交的响应格式
293
+
294
+ ### Technical
295
+ - 添加 `CommentObjectType` 类型定义
296
+ - 添加 `AddCommentRequest` 和 `CommentResponse` 接口
297
+ - 实现混合接口调用(使用HTML接口但保持REST API认证)
298
+
299
+ ## [1.14.0] - 2025-11-07
300
+
301
+ ### Added
302
+ - **完整的用户需求(Requirement)支持** 🎯
303
+ - 扩展 Story API,统一支持软件需求(story)和用户需求(requirement)
304
+ - 所有现有 story 工具现已支持两种需求类型,自动识别
305
+ - 新增4个专用的 requirement 工具:
306
+ - `createRequirement`: 创建用户需求
307
+ - `getRequirementDetail`: 获取用户需求详情
308
+ - `changeRequirement`: 修改用户需求
309
+ - `deleteRequirement`: 删除用户需求
310
+ - `createStory` 工具新增 `type` 参数,可选择创建 story 或 requirement
311
+
312
+ ### Changed
313
+ - **更新现有需求工具描述**
314
+ - `getStoryDetail`: 现支持 story 和 requirement 两种类型,自动识别
315
+ - `changeStory`: 现支持 story 和 requirement 两种类型,自动识别
316
+ - `deleteStory`: 现支持 story 和 requirement 两种类型,自动识别
317
+ - `getProductStories`: 返回的列表可能包含两种类型的需求
318
+
319
+ ### Improved
320
+ - **更好的语义化**
321
+ - 专用的 requirement 工具提供更清晰的意图表达
322
+ - 统一接口底层实现,减少代码重复
323
+ - 符合禅道 API v2.0 的最新扩展
324
+
325
+ ## [1.13.0] - 2025-11-07
326
+
327
+ ### Added
328
+ - **产品和需求列表字段过滤功能** 📦
329
+ - 为 `getProducts` 添加 `fields` 参数支持
330
+ - 为 `getProductStories` 添加 `fields` 参数支持
331
+ - 支持三种字段级别:
332
+ - `basic`: 基本信息(产品:id, name, code, status;需求:id, title, assignedTo, openedBy)
333
+ - `default`: 默认信息(产品:包含 PO/QD/RD 等;需求:包含 status/stage/pri 等,**默认使用**)
334
+ - `full`: 完整信息(所有字段)
335
+
336
+ ### Changed
337
+ - **优化列表接口默认返回数据**
338
+ - 产品列表默认使用 `default` 字段级别,返回核心管理信息
339
+ - 需求列表默认使用 `basic` 字段级别,只返回最基本的4个字段
340
+ - 显著减少数据传输量,提升列表查询响应速度
341
+
342
+ ### Improved
343
+ - **性能优化**
344
+ - 列表接口数据量大幅减少,特别适合快速浏览和搜索场景
345
+ - 减少不必要的字段传输,降低网络开销
346
+ - 需要详细信息时可按需设置 `fields='full'`
347
+
348
+ ## [1.12.0] - 2025-11-07
349
+
350
+ ### Added
351
+ - **字段级别过滤功能** 📦
352
+ - 为 `getMyBugs` 和 `getProductBugs` 添加 `fields` 参数
353
+ - 支持三种字段级别:
354
+ - `basic`: 基本信息(8个核心字段:id, title, status, pri, severity, assignedTo, openedBy, openedDate)
355
+ - `default`: 默认信息(18个常用字段,适合列表展示,**默认使用**)
356
+ - `full`: 完整信息(所有字段)
357
+ - 显著减少数据传输量,提升响应速度
358
+
359
+ ### Changed
360
+ - **优化默认返回数据**
361
+ - 默认使用 `default` 字段级别,只返回列表展示所需的字段
362
+ - 保持默认每页 20 条记录不变
363
+ - 需要完整信息时可设置 `fields='full'`
364
+
365
+ ### Improved
366
+ - **性能优化**
367
+ - 使用 default 模式减少约 60% 的数据传输量
368
+ - 使用 basic 模式减少约 80% 的数据传输量
369
+ - 更快的响应速度和更低的网络开销
370
+ - 更适合移动端和弱网络环境使用
371
+
372
+ ## [1.11.1] - 2025-11-07
373
+
374
+ ### Fixed
375
+ - **修复依赖冲突问题** 🔧
376
+ - 移除 package.json 中的自引用依赖 `@zzp123/mcp-zentao@1.2.1`
377
+ - 解决了 MCP 工具仍然使用旧版本参数(`onlyAssignedToMe`)的问题
378
+ - 确保用户安装后立即使用最新的 API 定义
379
+
380
+ ### Important
381
+ - 如果你从旧版本升级,请重启你的 MCP 服务器或 Claude Desktop 以加载新的工具定义
382
+
383
+ ## [1.11.0] - 2025-11-07
384
+
385
+ ### Added
386
+ - **完整的 Bug 状态筛选支持** ✨
387
+ - 扩展 `BugStatus` 类型,新增 16 种状态筛选类型
388
+ - 支持所有禅道官方 API 的状态筛选:assigntome、openedbyme、resolvedbyme、assignedbyme、assigntonull、unconfirmed、unclosed、unresolved、toclosed、postponedbugs、longlifebugs、overduebugs、review、feedback、needconfirm、bysearch
389
+ - MCP 工具现在提供完整的 20 种状态选项供选择
390
+
391
+ - **分支筛选功能** 🌿
392
+ - 为 `getMyBugs` 和 `getProductBugs` 添加 `branch` 参数
393
+ - 支持 'all'(所有分支)、'0'(主干分支)、分支ID
394
+ - 默认值为 'all',符合禅道官方 API 规范
395
+
396
+ ### Changed
397
+ - **重构 Bug 列表 API 参数** 🔄
398
+ - 移除 `onlyAssignedToMe` 参数,改用更灵活的 `status='assigntome'`
399
+ - 调整参数顺序:`status, productId, page, limit, branch, order`
400
+ - 优化参数构建逻辑,确保与禅道官方 API 完全一致
401
+
402
+ ### Improved
403
+ - **API 文档完善**
404
+ - 为 `getMyBugs` 和 `getProductBugs` 添加详细的 JSDoc 注释
405
+ - 更新工具描述,明确说明支持的状态筛选类型
406
+ - 参数说明更加清晰,包含默认值和示例
407
+
408
+ - **更好的用户体验**
409
+ - MCP 工具提供完整的状态枚举,IDE 可以自动补全
410
+ - 所有状态选项都有中文注释说明
411
+ - 更符合禅道用户的使用习惯
412
+
413
+ ### Technical
414
+ - 完全符合禅道官方 Bug 列表 API 文档规范
415
+ - 支持所有官方 API 参数:branch、status、order、limit、page
416
+ - 默认值与官方 API 保持一致
417
+
418
+ ## [1.10.0] - 2025-11-07
419
+
420
+ ### Fixed
421
+ - **修复 Bug 获取工具的 API 端点和参数问题** 🔧
422
+ - 从错误的 `/bugs` 端点改为正确的 `/products/{productId}/bugs` 端点
423
+ - 移除了低效的客户端过滤逻辑,改用服务器端原生支持的 `assigntome` 状态
424
+ - 修复了 `onlyAssignedToMe` 参数无法正确工作的问题
425
+
426
+ ### Added
427
+ - **添加排序参数支持** ✨
428
+ - 为 `getMyBugs` 和 `getProductBugs` 工具添加 `order` 参数
429
+ - 支持多种排序方式:`id_desc`(ID降序)、`id_asc`(ID升序)、`pri_desc`(优先级降序)等
430
+ - 默认使用 `id_desc` 排序,确保最新的 Bug 显示在前面
431
+ - 与禅道官方 API 完全一致的参数格式
432
+
433
+ ### Improved
434
+ - **性能优化**
435
+ - 使用服务器端过滤替代客户端过滤,显著提升查询效率
436
+ - 减少不必要的数据传输,降低网络开销
437
+ - 更准确的分页信息和总数统计
438
+
439
+ ### Changed
440
+ - 更新了 `getMyBugs` 方法签名,添加 `order` 参数
441
+ - 更新了 `getProductBugs` 方法签名,添加 `order` 参数
442
+ - 优化了查询参数的构建方式,使用 URLSearchParams 确保参数正确编码
443
+
444
+ ## [1.9.0] - 2025-11-06
445
+
446
+ ### Fixed
447
+ - **修复 getMyBugs 工具过滤逻辑问题** 🔧
448
+ - 禅道API的 `/bugs` 接口不支持 `assignedTo` 参数进行服务端过滤
449
+ - 改为使用客户端过滤:获取更多数据后在本地筛选分配给当前用户的Bug
450
+ - 修复了使用 `onlyAssignedToMe=true` 时无法正确获取当前用户Bug的问题
451
+ - 现在能够正确识别 `assignedTo` 字段(支持对象和字符串两种格式)
452
+
453
+ ### Improved
454
+ - 优化了 `getMyBugs` 的性能:当需要过滤时自动获取100条数据以确保有足够的结果
455
+ - 增加了详细的过滤日志输出,便于调试和追踪
456
+
457
+ ### Changed
458
+ - 扩展了 `Bug` 类型定义,添加了 `assignedTo`、`openedBy`、`resolvedBy` 等字段
459
+ - 更新了文档,说明了禅道API的限制和客户端过滤的实现方式
460
+
461
+ ## [1.8.9] - 2025-11-06
462
+
463
+ ### Fixed
464
+ - **修复 resolveBug 工具必须提供 resolvedBuild 参数的问题**
465
+ - 当 resolution 为 "fixed" 时,如果未提供 resolvedBuild,自动设置为 "trunk"(主干版本)
466
+ - 消除了使用 resolveBug 工具时的常见错误:"当解决方案为"已解决(fixed)"时,必须提供解决版本(resolvedBuild)"
467
+ - 简化了解决Bug的操作流程,提升用户体验
468
+
469
+ ### Improved
470
+ - 添加了自动默认值设置的日志输出,便于调试和追踪
471
+
472
+ ## [1.8.8] - 2025-11-06
473
+
474
+ ### Fixed
475
+ - **修复 getMyBugs 工具返回Bug数量为0的问题**
476
+ - 移除了硬编码的 `assignedTo` 过滤条件
477
+ - 默认获取所有Bug,不再只获取分配给当前用户的Bug
478
+ - 添加 `onlyAssignedToMe` 参数,让用户可以选择是否只获取分配给自己的Bug
479
+
480
+ ### Changed
481
+ - **优化默认产品选择逻辑**
482
+ - 当未指定 productId 时,默认使用第二个产品(如果存在)
483
+ - 如果只有一个产品,则使用第一个产品
484
+
485
+ ### Improved
486
+ - 为 getMyBugs 工具添加更清晰的描述:"获取Bug列表 - 默认获取所有Bug,可选择只获取分配给我的Bug"
487
+ - 增强了工具的灵活性,满足不同使用场景
488
+
489
+ ## [1.8.7] - 2025-11-06
490
+
491
+ ### Fixed
492
+ - **修复 uploadImageFromClipboard 工具的图片URL生成问题**
493
+ - 修正图片访问URL格式:从复杂的API参数格式改为简洁的 `/file-read-{id}.png` 格式
494
+ - 确保上传后的图片能够正确显示和访问
495
+ - URL示例:`http://47.120.4.95:7137/zentao/file-read-3750.png`
496
+
497
+ ### Technical
498
+ - 简化图片URL生成逻辑
499
+ - 提高图片访问的兼容性和可靠性
500
+
501
+ ## [1.8.6] - 2025-11-06
502
+
503
+ ### Fixed
504
+ - **修复 uploadImageFromClipboard 工具路径依赖问题**
505
+ - 将 PowerShell 脚本内嵌到代码中,不再依赖外部文件
506
+ - 解决了 Claude Code 工作目录与包安装目录不匹配的问题
507
+ - 使用 Base64 编码避免转义问题
508
+
509
+ ### Improved
510
+ - **优化 uploadImageFromClipboard 工具的用户体验**
511
+ - 默认行为:直接从剪贴板获取图片并上传到禅道
512
+ - 简化了操作流程,用户只需说"上传图片"即可
513
+ - 移除了对外部脚本文件的依赖,提高了可靠性
514
+
515
+ ### Technical
516
+ - 脚本完全内嵌,提高可移植性
517
+ - 不再依赖 process.cwd() 路径解析
518
+ - 更健壮的错误处理机制
519
+
520
+ ## [1.8.5] - 2025-11-06
521
+
522
+ ### Improved
523
+ - **优化 changeStory 工具参数说明**
524
+ - 为 `reviewer` 字段添加详细描述:说明其通常为必填字段,除非设置 `needNotReview=true` 跳过评审
525
+ - 为 `needNotReview` 字段添加说明:如果不提供 `reviewer` 则应设置为 `true`
526
+ - 为 `storyId` 参数添加描述,提升工具可读性
527
+ - 为工具本身添加整体说明:"需求变更 - 支持对象或JSON字符串格式"
528
+
529
+ ### Technical
530
+ - 改进 MCP 工具的参数描述,帮助 AI 助手更好地理解参数使用规则
531
+ - 提升工具在 Claude Code 等 AI IDE 中的可用性
532
+
533
+ ## [1.8.0] - 2025-11-06
534
+
535
+ ### Changed
536
+ - **重构需求变更接口命名**
537
+ - 将 `updateStory` 工具重命名为 `changeStory`,更准确地反映其功能
538
+ - 将 `UpdateStoryRequest` 类型重命名为 `ChangeStoryRequest`
539
+ - 将 `updateStory` API方法重命名为 `changeStory`
540
+ - 使用功能完整的"修改需求其他字段"接口替代功能有限的"变更需求"接口
541
+
542
+ ### Added
543
+ - 向后兼容的类型别名:`UpdateStoryRequest` 作为 `ChangeStoryRequest` 的别名
544
+
545
+ ### Technical
546
+ - 统一需求变更相关的命名规范
547
+ - 保持向后兼容性,旧的类型名称仍然可用
548
+ - 所有测试通过,确保重构不影响现有功能
549
+
550
+ ## [1.7.4] - 2025-11-06
551
+
552
+ ### Fixed
553
+ - **修复 createTask 和 updateStory 中的评审人相关错误**
554
+ - 修复 `createTask` 工具中 `assignedTo` 参数类型错误(从字符串改为数组)
555
+ - 修复 `createTask` 工具中必填参数缺失问题(execution, type, estStarted, deadline)
556
+ - 修复 `updateStory` 工具中"评审人不能为null"错误
557
+ - 为 `updateStory` 添加自动跳过评审机制(needNotReview=true)
558
+
559
+ ### Changed
560
+ - `CreateTaskRequest` 接口更新:将 assignedTo 从可选字符串改为必需数组
561
+ - `createTask` MCP 工具参数重新定义:必填参数前置,类型修正
562
+ - `updateStory` API 方法添加智能评审人处理逻辑
563
+ - API 请求表单数据处理:支持数组类型参数的正确格式化
564
+
565
+ ### Technical
566
+ - 更新测试文件以适配新的接口要求
567
+ - TypeScript 编译验证通过,确保类型安全
568
+ - 保持向后兼容性,同时修复API规范问题
569
+
570
+ ## [1.7.3] - 2025-11-06
571
+
572
+ ### Fixed
573
+ - **updateStory 工具参数格式优化**
574
+ - 修复 `update` 参数只能接受对象格式的问题
575
+ - 现在同时支持对象格式和 JSON 字符串格式
576
+ - 自动解析 JSON 字符串并提供友好的错误提示
577
+
578
+ ### Changed
579
+ - `update` 参数使用 `z.union()` 同时接受对象和字符串格式
580
+ - 添加 JSON 字符串解析逻辑,提升工具兼容性
581
+
582
+ ## [1.7.2] - 2025-11-06
583
+
584
+ ### Added
585
+ - **updateStory 工具重大增强**
586
+ - 新增29个可编辑字段支持,��全对接禅道最新API文档
587
+ - 支持需求基本信息编辑:title, product, parent, module, branch, plan, type
588
+ - 支持来源信息编辑:source, sourceNote(支持8种来源类型)
589
+ - 支持分类与优先级:category, pri, estimate
590
+ - 支持状态与阶段:stage, status
591
+ - 支持关键词与标识:keywords, color, grade
592
+ - 支持人员相关:mailto, reviewer, assignedTo, closedBy, feedbackBy
593
+ - 支持关闭相关:closedReason, duplicateStory(7种关闭原因)
594
+ - 支持评审相关:needNotReview
595
+ - 支持通知相关:notifyEmail
596
+ - 支持描述内容:spec, verify(HTML格式)
597
+ - 支持备注:comment
598
+
599
+ ### Changed
600
+ - `UpdateStoryRequest` 接口完全重构,从7个字段扩展到29个字段
601
+ - `updateStory` MCP 工具参数完全重新定义,支持所有新字段
602
+ - 添加了详细的字段注释和类型定义,提升开发体验
603
+
604
+ ### Technical
605
+ - 所有字段均为可选参数,支持部分更新
606
+ - `plan` 字段支持单个ID或数组格式
607
+ - `closedReason` 使用枚举类型确保数据正确性
608
+ - `mailto` 和 `reviewer` 字段支持数组格式
609
+
610
+ ### Benefits
611
+ - **功能完整性**:支持禅道需求管理的所有常用编辑功能
612
+ - **灵活性**:可以批量更新多个字段,也可以单独更新单个字段
613
+ - **类型安全**:完整的 TypeScript 类型定义,减少运行时错误
614
+
615
+ ## [1.7.1] - 2025-11-06
616
+
617
+ ### Fixed
618
+ - **图片 HTML 格式优化**
619
+ - `uploadFile` 和 `uploadImageFromClipboard` 工具现在生成的 `imageHtml` 会被 `<p>` 标签包裹
620
+ - 修复了某些情况下图片在禅道中无法正确显示的问题
621
+ - 确保生成的 HTML 格式与禅道富文本编辑器的标准格式一致
622
+
623
+ ### Changed
624
+ - 图片 HTML 格式从 `<img ... />` 改为 `<p><img ... /></p>`
625
+ - 更新使用提示,明确说明图片会被包裹在 `<p>` 标签中
626
+
627
+ ## [1.7.0] - 2025-11-06
628
+
629
+ ### Added
630
+ - **图片上传自动生成 HTML 格式**
631
+ - `uploadFile` 工具现在返回 `imageHtml` 字段,包含禅道所需的完整 HTML 代码
632
+ - `uploadImageFromClipboard` 工具同样返回 `imageHtml` 字段
633
+ - 新增 `imageUrl` 字段,提供完整的图片访问地址
634
+ - 新增 `fileId` 字段,方便后续引用
635
+ - 新增使用提示 `tip` 字段,帮助用户正确使用
636
+
637
+ ### Changed
638
+ - ZentaoAPI 类新增 `getConfig()` 方法,允许获取配置信息以生成图片 URL
639
+ - 图片上传返回格式优化,Claude Code 现在能自动识别并使用正确的 HTML 格式
640
+
641
+ ### Technical
642
+ - 图片 HTML 格式:`<img onload="setImageSize(this,0)" src="..." alt="..." />`
643
+ - 自动包含 `onload="setImageSize(this,0)"` 以确保图片在禅道中正确显示
644
+
645
+ ### Benefits
646
+ - **提升用户体验**:Claude Code 无需手动构造 HTML 代码
647
+ - **减少错误**:避免手动拼接 HTML 时的格式错误
648
+ - **更直观**:返回结果中直接包含可用的 HTML 代码
649
+
650
+ ## [1.6.1] - 2025-11-05
651
+
652
+ ### Fixed
653
+ - **修复 Windows 剪贴板图片读取问题**
654
+ - 替换为新的 PowerShell 脚本 `scripts/get_clipboard.ps1`
655
+ - 使用 `Add-Type` 加载 `System.Drawing` 程序集,确保正确处理图片
656
+ - 改进错误处理,提供更详细的错误信息
657
+ - 使用 `-ExecutionPolicy Bypass` 确保脚本可以执行
658
+
659
+ ### Changed
660
+ - Windows 平台现在使用外部 PowerShell 脚本文件而非内联脚本
661
+ - 优化了 base64 转换流程,确保内存流正确关闭
662
+
663
+ ## [1.6.0] - 2025-11-05
664
+
665
+ ### Changed - 重大更新
666
+ - **迁移到自定义模块接口** `/custom/modules` - 替代原生 `/modules` 接口
667
+ - 接口路径:`GET /custom/modules`(原 `/modules`)
668
+ - 支持字段过滤功能:通过 `fields` 参数指定返回字段
669
+ - 默认返回精简字段:id、name、parent、grade、type
670
+ - 可选字段:id、root、branch、name、parent、path、grade、order、type、owner、collector、short
671
+
672
+ ### Added
673
+ - 新增 `fields` 参数支持,可大幅减少返回数据量(60-80%)
674
+ - 新增 `ModulesResponse` 接口:`{ modules: SimpleModule[], total: number }`
675
+ - 更新 `SimpleModule` 接口,支持更多可选字段
676
+
677
+ ### Technical
678
+ - 返回数据结构变化:从嵌套树形结构改为扁平化数组
679
+ - 通过 `parent` 字段关联父子关系,通过 `path` 字段表示层级路径
680
+ - 移除 `simplifyModule()` 递归处理方法(不再需要)
681
+ - 接口响应包含 `total` 字段,返回模块总数
682
+
683
+ ### Benefits
684
+ - **性能提升**:支持按需获取字段,减少60-80%数据传输量
685
+ - **更灵活**:可根据实际需求指定返回字段
686
+ - **更标准**:返回格式包含 total 统计信息
687
+
688
+ ### Breaking Changes
689
+ - `getModules()` 返回类型从 `SimpleModule[]` 改为 `ModulesResponse`
690
+ - `SimpleModule` 不再包含 `children` 字段(数据已扁平化)
691
+
692
+ ## [1.5.0] - 2025-11-05
693
+
694
+ ### Added
695
+ - **模块数据简化功能** - 新增 `SimpleModule` 接口,简化模块API返回数据
696
+ - `getModules` 接口现在只返回核心字段:id、name、parent、grade、children
697
+ - 移除冗余的字段(type、path、order等),大幅减少数据传输量
698
+ - 保持树形结构,递归简化所有子模块数据
699
+
700
+ ### Changed
701
+ - 优化 `getModules()` 方法,返回类型从 `Module[]` 改为 `SimpleModule[]`
702
+ - 添加 `simplifyModule()` 私有方法,用于递归转换模块数据结构
703
+
704
+ ### Benefits
705
+ - 减少网络传输数据量,提升API响应速度
706
+ - 简化客户端数据处理逻辑
707
+ - 更清晰的数据结构,只包含必要信息
708
+
709
+ ## [1.4.3] - 2025-11-05
710
+
711
+ ### Fixed
712
+ - 将 `CHANGELOG.md` 添加到 npm 包发布文件列表中
713
+ - 确保用户可以在安装包后查看完整的版本历史
714
+
715
+ ## [1.4.2] - 2025-11-05
716
+
717
+ ### Added
718
+ - 创建 `CHANGELOG.md` - 完整的版本更新历史文档
719
+ - 在 README.md 中添加版本历史章节和最新版本信息
720
+ - 添加 npm 版本徽章和 MIT 许可证徽章
721
+
722
+ ### Changed
723
+ - 更新 README.md 中的包名从 `@bigtian/mcp-zentao` 到 `@zzp123/mcp-zentao`
724
+ - 更新 API 文档示例代码,使用最新的接口签名
725
+ - 添加版本标记到 API 方法说明(如 v1.4.0+, v1.2.0+)
726
+ - 完善类型定义文档,添加 `ResolveBugRequest`、`UploadFileRequest`、`FileUploadResponse` 等新接口
727
+
728
+ ### Documentation
729
+ - 整理所有版本的更新内容到 CHANGELOG
730
+ - 记录从 v1.0.x 到 v1.4.2 的完整演进历史
731
+ - 提供清晰的版本规范说明
732
+
733
+ ## [1.4.1] - 2025-11-05
734
+
735
+ ### Fixed
736
+ - 修复 `uploadImageFromClipboard` 工具上传成功后没有返回内容的问题,该问题导致 AI 一直等待响应而卡住
737
+ - 改进返回数据结构,现在包含 `success` 标志位、文件大小、文件名等详细信息
738
+ - 增强错误处理,为每个平台(Windows/macOS/Linux)提供专门的错误处理和清晰的错误提示
739
+ - 添加完整的执行日志,方便调试和问题排查
740
+
741
+ ### Changed
742
+ - 优化返回格式,统一成功和失败响应的数据结构
743
+ - 改进错误信息,包含堆栈跟踪和解决建议
744
+
745
+ ## [1.4.0] - 2025-11-05
746
+
747
+ ### Added
748
+ - **新增解决Bug接口** `resolveBug` - 根据最新的禅道API文档添加
749
+ - 接口路径:`POST /bugs/:id/resolve`
750
+ - 支持7种解决方案:fixed(已解决)、bydesign(设计如此)、duplicate(重复Bug)、external(外部原因)、notrepro(无法重现)、postponed(延期处理)、willnotfix(不予解决)
751
+ - 自动验证必填字段:fixed 需要 resolvedBuild,duplicate 需要 duplicateBug
752
+ - 支持备注和指派功能
753
+ - 新增 `ResolutionType` 类型定义
754
+ - 新增 `ResolveBugRequest` 接口定义
755
+
756
+ ### Technical
757
+ - 在 `zentaoApi.ts` 中实现 `resolveBug()` 方法,包含参数验证逻辑
758
+ - 在 `index.ts` 中注册 `resolveBug` MCP 工具
759
+ - 完善类型系统,确保类型安全
760
+
761
+ ## [1.3.2] - 2025-11-05
762
+
763
+ ### Removed
764
+ - 移除 `resolveBug` API 方法(之前的实现与文档不符)
765
+ - 移除 `resolveBug` MCP 工具注册
766
+ - 移除 `BugResolution` 接口类型定义
767
+
768
+ ### Reason
769
+ - 禅道REST API文档中的修改Bug接口(`PUT /bugs/:id`)不支持修改Bug状态
770
+ - 该接口只支持修改基本信息(标题、优先级、严重程度等),不能修改 status、resolution、resolvedBuild 等字段
771
+ - 这些字段只在返回数据中存在,不能作为请求参数
772
+
773
+ ### Note
774
+ - 此版本移除的功能在 v1.4.0 中以正确的实现方式重新添加
775
+
776
+ ## [1.3.1] - 2025-11-05
777
+
778
+ ### Fixed
779
+ - **修复 Claude Code 中剪贴板图片无法上传的核心问题**
780
+ - 修改 `uploadImageFromClipboard` 工具,使其主动读取系统剪贴板,而不是期望 Claude Code 提供 base64Data
781
+
782
+ ### Changed
783
+ - 工具现在直接使用操作系统原生方法读取剪贴板:
784
+ - Windows: PowerShell 的 `System.Windows.Forms.Clipboard`
785
+ - macOS: `pngpaste` 命令
786
+ - Linux: `xclip` 命令
787
+ - 移除 `base64Data` 必填参数,改为可选的 `filename` 和 `uid`
788
+
789
+ ### Technical Details
790
+ - **问题根源**:Claude Code 输入框中粘贴的图片会上传到 Claude 服务器用于视觉分析,MCP 工具运行在本地只能访问系统剪贴板,这是两个完全独立的数据源
791
+ - **解决方案**:工具直接读取系统剪贴板,不依赖 Claude Code 传递图片数据
792
+
793
+ ### Documentation
794
+ - 创建 `为什么读取不到剪贴板图片.md` - 详细解释技术原理
795
+ - 创建 `Claude-Code图片上传指南.md` - 提供正确的使用方法
796
+ - 创建 `scripts/get-clipboard-base64.js` - 辅助脚本
797
+
798
+ ## [1.3.0] - 2025-11-05
799
+
800
+ ### Added
801
+ - **命令行脚本支持** - 添加跨平台的剪贴板图片上传脚本
802
+ - `scripts/upload-clipboard-image.js` - Node.js 实现(跨平台)
803
+ - `scripts/upload-clipboard-image.ps1` - PowerShell 脚本(Windows)
804
+ - `scripts/upload-clipboard-image.py` - Python 实现(跨平台)
805
+ - 添加 npm 脚本命令:
806
+ - `npm run upload:clipboard` - 运行 Node.js 脚本
807
+ - `npm run upload:clipboard:py` - 运行 Python 脚本
808
+ - 创建 `upload.bat.example` 配置模板
809
+
810
+ ### Documentation
811
+ - 创建 `scripts/README.md` - 详细的脚本使用文档
812
+ - 创建 `scripts/MCP-INTEGRATION.md` - MCP 集成说明
813
+ - 创建 `上传图片使用说明.md` - 中文快速开始指南
814
+
815
+ ### Changed
816
+ - 更新 package.json,将 scripts 文件夹包含到发布包中
817
+
818
+ ### Features
819
+ - 支持从系统剪贴板直接上传图片到禅道
820
+ - 100% 可靠的命令行方式(不依赖 MCP)
821
+ - 自动保存图片到本地 img 文件夹
822
+ - 返回文件 ID 和访问 URL
823
+
824
+ ## [1.2.2] - 2025-11-05
825
+
826
+ ### Added
827
+ - 创建专门的 `uploadImageFromClipboard` MCP 工具
828
+ - 工具接受 `base64Data`(必填)、`filename`(可选)、`uid`(可选)参数
829
+
830
+ ### Changed
831
+ - 简化剪贴板图片上传流程
832
+ - 使工具更加明确和易用
833
+
834
+ ### Note
835
+ - 此版本的实现在 v1.3.1 中被完全重写,以解决 Claude Code 集成问题
836
+
837
+ ## [1.2.1] - 2025-11-05
838
+
839
+ ### Added
840
+ - `uploadFile` 工具支持 `base64Data` 参数,可以直接上传 base64 编码的图片
841
+ - 自动创建 `img` 文件夹(如果不存在)
842
+ - 智能图片格式检测(从 data URL 中提取)
843
+ - 默认文件名生成(使用时间戳)
844
+
845
+ ### Changed
846
+ - 增强 `uploadFile` 工具,同时支持 `filePath` 和 `base64Data` 两种方式
847
+ - 改进错误处理和参数验证
848
+
849
+ ### Technical
850
+ - 添加 data URL 解析逻辑
851
+ - 支持 png、jpg、jpeg、gif 等常见图片格式
852
+
853
+ ## [1.2.0] - 2025-11-05
854
+
855
+ ### Added
856
+ - **文件上传接口** `uploadFile` - POST `/files`
857
+ - 支持 multipart/form-data 格式上传
858
+ - 支持 `uid` 参数(用于富文本编辑器关联)
859
+ - 支持多种文件格式(文档、图片、媒体、压缩包等)
860
+ - **文件下载接口** `downloadFile` - GET `/files/:id`
861
+ - 返回文件的二进制数据(Buffer)
862
+ - 支持将文件保存到指定路径
863
+
864
+ ### Technical
865
+ - 添加 `FileUploadResponse` 接口类型
866
+ - 添加 `UploadFileRequest` 接口类型
867
+ - 实现 `zentaoApi.uploadFile()` 方法,使用 form-data 库
868
+ - 实现 `zentaoApi.downloadFile()` 方法,支持 arraybuffer 响应
869
+ - 安装依赖:`form-data` 和 `@types/form-data`
870
+
871
+ ### MCP Tools
872
+ - 注册 `uploadFile` MCP 工具
873
+ - 注册 `downloadFile` MCP 工具
874
+
875
+ ## [1.1.x] - 早期版本
876
+
877
+ ### Added
878
+ - 模块管理接口 `getModules` - GET `/modules`
879
+ - 支持按类型和ID获取模块树
880
+ - 支持需求、任务、Bug、用例、反馈、产品等多种模块类型
881
+
882
+ ## [1.0.x] - 初始版本
883
+
884
+ ### Added
885
+ - **基础功能**
886
+ - 禅道 API 认证(Token 获取)
887
+ - 配置管理(本地配置文件)
888
+ - MCP 服务器初始化
889
+
890
+ - **任务管理**
891
+ - `getMyTasks` - 获取我的任务列表
892
+ - `getTaskDetail` - 获取任务详情
893
+ - `updateTask` - 更新任务
894
+ - `finishTask` - 完成任务
895
+ - `createTask` - 创建任务
896
+
897
+ - **Bug管理**
898
+ - `getMyBugs` - 获取我的Bug列表
899
+ - `getBugDetail` - 获取Bug详情
900
+ - `createBug` - 创建Bug
901
+ - `updateBug` - 修改Bug
902
+ - `deleteBug` - 删除Bug
903
+
904
+ - **产品管理**
905
+ - `getProducts` - 获取产品列表
906
+ - `getProductDetail` - 获取产品详情
907
+ - `createProduct` - 创建产品
908
+ - `updateProduct` - 更新产品
909
+ - `deleteProduct` - 删除产品
910
+
911
+ - **项目集管理**
912
+ - `getPrograms` - 获取项目集列表
913
+ - `getProgramDetail` - 获取项目集详情
914
+ - `createProgram` - 创建项目集
915
+ - `updateProgram` - 更新项目集
916
+ - `deleteProgram` - 删除项目集
917
+
918
+ - **项目管理**
919
+ - `getProjects` - 获取项目列表
920
+ - `getProjectDetail` - 获取项目详情
921
+ - `createProject` - 创建项目
922
+ - `updateProject` - 更新项目
923
+ - `deleteProject` - 删除项目
924
+
925
+ - **执行管理**
926
+ - `getExecutions` - 获取执行列表
927
+ - `getExecutionDetail` - 获取执行详情
928
+ - `createExecution` - 创建执行
929
+ - `updateExecution` - 更新执行
930
+ - `deleteExecution` - 删除执行
931
+
932
+ - **需求管理**
933
+ - `getStories` - 获取需求列表
934
+ - `getStoryDetail` - 获取需求详情
935
+ - `createStory` - 创建需求
936
+ - `updateStory` - 更新需求
937
+ - `deleteStory` - 删除需求
938
+
939
+ - **产品计划**
940
+ - `getPlans` - 获取计划列表
941
+ - `getPlanDetail` - 获取计划详情
942
+ - `createPlan` - 创建计划
943
+ - `updatePlan` - 更新计划
944
+ - `deletePlan` - 删除计划
945
+ - `linkBugsToPlan` - 关联Bug到计划
946
+ - `unlinkBugsFromPlan` - 取消关联Bug
947
+
948
+ - **版本管理**
949
+ - `getBuilds` - 获取版本列表
950
+ - `getBuildDetail` - 获取版本详情
951
+ - `createBuild` - 创建版本
952
+ - `updateBuild` - 更新版本
953
+ - `deleteBuild` - 删除版本
954
+
955
+ - **反馈管理**
956
+ - `getFeedbacks` - 获取反馈列表
957
+ - `getFeedbackDetail` - 获取反馈详情
958
+ - `createFeedback` - 创建反馈
959
+ - `updateFeedback` - 更新反馈
960
+ - `deleteFeedback` - 删除反馈
961
+ - `assignFeedback` - 指派反馈
962
+ - `closeFeedback` - 关闭反馈
963
+
964
+ - **测试用例**
965
+ - `getTestCases` - 获取用例列表
966
+ - `getTestCaseDetail` - 获取用例详情
967
+ - `createTestCase` - 创建用例
968
+ - `updateTestCase` - 更新用例
969
+ - `deleteTestCase` - 删除用例
970
+
971
+ - **工单管理**
972
+ - `getTickets` - 获取工单列表
973
+ - `getTicketDetail` - 获取工单详情
974
+ - `createTicket` - 创建工单
975
+ - `updateTicket` - 更新工单
976
+ - `deleteTicket` - 删除工单
977
+
978
+ - **用户管理**
979
+ - `getMyProfile` - 获取我的信息
980
+ - `getUsers` - 获取用户列表
981
+ - `getUserDetail` - 获取用户详情
982
+ - `createUser` - 创建用户
983
+ - `updateUser` - 更新用户
984
+ - `deleteUser` - 删除用户
985
+
986
+ - **发布管理**
987
+ - `getReleases` - 获取发布列表
988
+ - `getReleaseDetail` - 获取发布详情
989
+
990
+ ### Technical
991
+ - TypeScript 实现,提供完整的类型定义
992
+ - 基于 Axios 的 HTTP 客户端
993
+ - MD5 密码加密
994
+ - 自动 Token 管理和刷新
995
+ - 配置文件支持(~/.zentao/config.json)
996
+ - MCP (Model Context Protocol) 集成
997
+ - Zod schema 验证
998
+
999
+ ### Documentation
1000
+ - README.md - 项目说明
1001
+ - 禅道API文档.md - 完整的 API 文档
1002
+
1003
+ ---
1004
+
1005
+ ## 版本规范
1006
+
1007
+ - **主版本号 (Major)**: 不兼容的 API 变更
1008
+ - **次版本号 (Minor)**: 向下兼容的功能新增
1009
+ - **修订号 (Patch)**: 向下兼容的问题修正
1010
+
1011
+ ## 链接
1012
+
1013
+ - [npm 包地址](https://www.npmjs.com/package/@zzp123/mcp-zentao)
1014
+ - [GitHub 仓库](https://github.com/yourusername/mcp-zentao)(待更新)
1015
+
1016
+ ## 贡献者
1017
+
1018
+ - [@zzp123](https://github.com/zzp123) - 项目维护者