禅道 18.8 无 RESTful API 2.0,官方 zentao-cli/MCP 不可用。zentao.py 以 v1 tokens 换会话, 走页面 JSON 模式读取「我的 Bug」列表与 Bug 详情(描述/截图/评论/修改历史/附件), 截图下载到本地供 Agent 查看;Token 存 ~/.config(0600),密码仅存 macOS 钥匙串。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
name, description
| name | description |
|---|---|
| zentao-bug | 读取禅道(njlkairport.chandao.net,开源版 18.8)中的 Bug 单——我的 Bug 列表、单个 Bug 的标题/描述/截图/评论/修改历史/附件——并按 AirLogistics 项目规范定位代码完成修复。禅道 18.8 没有 API 2.0,官方 zentao-cli / MCP 不可用,必须用本 skill 的 zentao.py。当用户提到"禅道"、"bug 单"、"我的 bug"、"修 bug"、"处理 bug"、给出 Bug 编号(如 "#632"、"bug 632")或禅道链接(bug-view-xxx.html / my-work-bug.html)时使用。 |
禅道 Bug 读取与修复
工具
Z=.claude/skills/zentao-bug/zentao.py
python3 $Z whoami # 当前账号 + 会话是否有效
python3 $Z list # 指派给我的 Bug(= 网页「地盘 → 我的Bug」)
python3 $Z list --status active # 只看激活的
python3 $Z list --type resolvedBy # 由我解决 / openedBy / closedBy
python3 $Z list --json # 结构化输出
python3 $Z view 632 # Bug 详情(Markdown)
view 输出并保存到 ~/.cache/zentao-lite/bugs/<id>/bug.md:基本信息、重现步骤、附件、历史记录与评论(评论以 > 引用块呈现)。
描述和评论中的截图下载到 images/,文中以绝对路径  引用。
截图是需求的主要载体(团队习惯把原型/标注贴在描述和评论里,几乎不用附件),必须逐张用 Read 查看,不能只看文字。
登录(只能由用户本人执行)
退出码 2 表示未登录或会话过期。禅道会话默认空闲 24 分钟失效。让用户在自己的终端执行:
python3 .claude/skills/zentao-bug/zentao.py login --account <账号>
密码交互输入、不回显;默认存入 macOS 钥匙串,此后会话过期会自动重新登录(--no-keychain 则不保存)。
不要向用户索要密码,也不要替用户在命令行里带密码登录。
修复流程
- 读单:
view <id>,Read 全部截图;评论里常有后续补充或改口,以最新评论为准。 - 定位页面:Bug 标题/描述通常写的是菜单名(如"出港移库""进港仓库")。按 CLAUDE.md「页面定位规则」,
以首页菜单实际跳转的 Activity 为准(平板
app/.../HomeFragment.kt,手机module_p的GnViewModel/GjViewModel)。 - 判断端:截图是手机竖屏(如 5.5 寸设计稿样式)还是平板横屏,决定改
res/layout/还是res/layout-sw600dp/; 业务逻辑改动两端都要检查(CLAUDE.md「业务以平板为准」)。截图提到"原型"时对照documents/5.5寸手持端设计文件/。 - 修改并验证:遵守 CLAUDE.md 的 UI 规范;
./gradlew assembleDebug编译通过;能在模拟器验证的就验证并截图比对。 - 汇报:按 Bug 逐条说明改了什么、改在哪里、如何验证、有无未覆盖项。多个 Bug 时每个 Bug 单独提交,
提交信息带
Bug #<id>。不确定截图意图时先问用户,禁止臆测。
写回禅道
暂未实现(写操作会改动线上 Bug 状态,需用户确认后再加)。修复完成后由用户在禅道手动"解决", 可附上提交号与改动摘要供用户粘贴。
实现说明
- 认证:
POST /api.php/v1/tokens换 Token;数据走页面 JSON 模式(.html→.json),Cookiezentaosid=<Token>。 - 接口:
/my-work-bug-<type>-0-id_desc-0-<perPage>-<page>.json、/bug-view-<id>.json、/file-read-<fileID>.<ext>。 - REST v1 的
/products/<id>/bugs只返回激活中的 Bug,不能替代"我的 Bug"页面。 - 凭据:Token 在
~/.config/zentao-lite/config.json(0600),密码只在钥匙串(服务名zentao-lite)。logout一并清除。