Files
his/.qoder/skills/zentao/SKILL.md

4.8 KiB
Raw Blame History

name, description, triggers
name description triggers
zentao 禅道 Bug 管理集成 — 查询/创建/更新 Bug 与备注。在归档(archive)、验收(acceptance)、测试(test)流程中自动触发,也可手动调用 /zentao。遵守 AGENTS.md Bug 状态管理铁律。
/zentao
archive 完成后自动回写备注
acceptance 通过后自动更新状态
playwright-test 完成后自动回写测试结果

禅道集成技能(开源版)

服务器: https://zentao.gentronhealth.com API 基址: https://zentao.gentronhealth.com/api.php/v1 文档: https://zentao.gentronhealth.com/api.php/v1/index.html

🔒 铁律(必须硬编码到所有操作中)

来自 AGENTS.md

铁律A: 人类提的 Bug → 只加备注,不改状态,不改分配
铁律B: 智能体提的 Bug → 可改分配 + 加备注
铁律C: 已关闭/已解决的 Bug → 不再处理(只读查询)
铁律D: 任何修改前先 GET 一次,确认状态和提出人

判定提出人openedBy 字段。

  • openedByadmin/chenqi 等人类账号 → 铁律A
  • openedByagent-bot/qodercn 等智能体账号 → 铁律B
  • status ∈ {closed, resolved} → 铁律C

📦 配置(首次使用前必填)

D:/his/.qoder/skills/zentao/.env 中填入:

ZENTAO_URL=https://zentao.gentronhealth.com
ZENTAO_TOKEN=<从禅道「个人设置 → API接口」获取>
ZENTAO_PRODUCT_ID=<产品浏览页 URL 中的数字>
ZENTAO_DEFAULT_EXECUTION=<默认执行 ID可选>
ZENTAO_AGENT_ACCOUNT=qodercn   # 智能体自身账号用于铁律B判定

获取 Token登录 → 右上角用户名 → 「个人设置」 → 「API接口」 → 新增 Token。

🔧 可用操作

1. 查询 Bug

python .qoder/skills/zentao/scripts/zentao_client.py get <bug_id>

返回 JSONid, title, status, openedBy, assignedTo, severity, pri, steps每次修改前必须先 get 一次,确认铁律适用。

2. 添加备注(最安全操作,所有 Bug 通用)

python .qoder/skills/zentao/scripts/zentao_client.py comment <bug_id> "备注内容"

备注会自动加上前缀 [QoderCN @ 2026-06-15 HH:MM]归档/验收/测试完成后必须调用此命令回写结果

3. 创建 Bug智能体提的 Bug

python .qoder/skills/zentao/scripts/zentao_client.py create \
  --title "xxx" --steps "复现步骤..." --severity 2 --pri 2 \
  --assignedTo zhangsan --module 0

openedBy 将自动设为 ZENTAO_AGENT_ACCOUNT

4. 更新 Bug受铁律约束

python .qoder/skills/zentao/scripts/zentao_client.py update <bug_id> \
  --status resolved --resolution fixed --assignedTo lisi

脚本内置铁律检查

  • openedBy 是人类 → 拒绝修改 status/assignedTo,只允许 comment
  • 若 Bug 已关闭/已解决 → 拒绝任何写操作

5. 批量查询

python .qoder/skills/zentao/scripts/zentao_client.py list \
  --status active --assignedTo zhangsan --limit 20

🔄 自动嵌入流程

归档后chenlin-archive 完成)

[chenlin 完成归档] 
  ↓
[zentao] 自动触发:
  1. 获取 Bug 信息get <id>
  2. 添加归档备注「已归档commit: abc1234分支: develop」
  3. 若为智能体提的 Bug → 更新状态为 resolved
  4. 若为人类提的 Bug → 仅加备注,等待人类手动关闭

验收通过后acceptance 完成)

[huatuo 验收通过]
  ↓
[zentao] 自动触发:
  1. 添加验收备注:「验收通过,证据: [测试报告路径]」
  2. 按铁律更新状态

测试完成后playwright-test 完成)

[zhangfei 测试通过]
  ↓
[zentao] 自动触发:
  1. 添加测试备注「Playwright 回归通过X/Y 用例全过,报告: [路径]」

🛡️ 安全与审计

  • 所有写操作记录到 D:/his/.qoder/skills/zentao/audit.log,格式:
    [ISO时间] [操作人] [动作] [bug_id] [结果] [摘要]
    
  • Token 不打印到 stdout不从 git 提交(已加入 .gitignore
  • 写操作失败时返回非零退出码 + JSON 错误,便于上层捕获

🧪 手动调用示例

/zentao get 318
/zentao comment 318 "后端编译通过,前端 lint 通过,待验收"
/zentao list --status active --assignedTo chenqi
/zentao create --title "登录页验证码刷新失效" --steps "1. 打开登录页 2. 点击验证码 3. ..." --severity 2

⚠️ 常见陷阱

陷阱 说明
修改人类提的 Bug 状态 触发铁律A脚本会拒绝执行
操作已关闭 Bug 触发铁律C只允许 get
Token 过期 禅道 Token 默认有效期 1 年,过期需重新生成
开源版 vs 企业版 API 差异 本技能仅适配开源版,企业版需另行适配

📋 依赖

  • Python 3.8+
  • requests 库(pip install requests
  • 网络可达 zentao.gentronhealth.com