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

147 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: zentao
description: 禅道 Bug 管理集成 — 查询/创建/更新 Bug 与备注。在归档(archive)、验收(acceptance)、测试(test)流程中自动触发,也可手动调用 /zentao。遵守 AGENTS.md Bug 状态管理铁律。
triggers:
- /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` 字段。
-`openedBy``admin`/`chenqi` 等人类账号 → 铁律A
-`openedBy``agent-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
```bash
python .qoder/skills/zentao/scripts/zentao_client.py get <bug_id>
```
返回 JSON`id, title, status, openedBy, assignedTo, severity, pri, steps`
**每次修改前必须先 `get` 一次**,确认铁律适用。
### 2. 添加备注(最安全操作,所有 Bug 通用)
```bash
python .qoder/skills/zentao/scripts/zentao_client.py comment <bug_id> "备注内容"
```
备注会自动加上前缀 `[QoderCN @ 2026-06-15 HH:MM]`
**归档/验收/测试完成后必须调用此命令回写结果**
### 3. 创建 Bug智能体提的 Bug
```bash
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受铁律约束
```bash
python .qoder/skills/zentao/scripts/zentao_client.py update <bug_id> \
--status resolved --resolution fixed --assignedTo lisi
```
**脚本内置铁律检查**
-`openedBy` 是人类 → 拒绝修改 `status`/`assignedTo`,只允许 `comment`
- 若 Bug 已关闭/已解决 → 拒绝任何写操作
### 5. 批量查询
```bash
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`