- name
- zentao-autoreport
- description
- 禅道自动记工时技能。用户描述今天做了什么事,自动搜索匹配任务,确认后调用禅道API记录工时。支持智能匹配、自动重新登录、正确计算剩余工时。使用 recordworkhour 接口,适配禅道 21.x 开源版。
禅道自动记工时
功能
用户说「今天做了xxx,花了x小时」,自动:
- 查询用户所有任务
- 智能匹配:将用户描述匹配到对应的任务
- 向用户确认:匹配结果是否正确
- 确认后自动记录工时:
- 重新登录获取最新有效的 zentaosid(防止过期) - 查询任务当前剩余工时 - 计算新剩余 = 当前剩余 - 本次消耗 - 调用 recordworkhour 接口提交 - 返回成功结果
配置要求
使用前必须询问用户获取:
ZENTAO_URL- 禅道服务器地址(如https://zentao.example.com/)ZENTAO_ACCOUNT- 登录用户名ZENTAO_PASSWORD- 登录密码ZENTAO_TOKEN- API Token(可选,用于通过 Token 方式访问任务信息)
配置保存到 $HOME/.config/zentao/.env(例如 /home/user/.config/zentao/.env 或 macOS 的 /Users/username/.config/zentao/.env)
注意:脚本会自动处理登录和会话管理,无需手动获取 ZENTAO_SID。
工作流程
1. 初始化
- 如果配置文件不存在 → 询问用户获取配置
- 如果配置文件存在 → 直接使用
2. 用户输入
用户提供今天做的工作描述(可多个),例如:
我今天做了数据治理的现场对接问题,帮我记录一下工时 2小时或者:
今天做了:
1. 数据治理现场对接 2小时
2. 需求评审 1小时3. 匹配任务
- 自动登录获取最新 zentaosid
- 获取用户所有任务
- 语义匹配工作描述到任务
- 列出匹配结果,向用户确认
- 如果用户说不对 → 重新匹配或让用户指定任务ID
4. 记录工时
确认后,对每个任务:
- 重新登录获取最新
zentaosid(防止过期) - 通过 API 查询任务当前剩余工时
- 计算
newLeft = currentLeft - consumed - 调用
recordworkhour接口提交记录 - 检查返回结果是否
{"result":"success"}
5. 返回结果
汇总所有记录,告诉用户成功/失败
脚本
执行时优先检查 Python 环境,如果有 Python 则使用 .py 版本,否则使用 .sh 版本。
scripts/report.py/scripts/report.sh- 主要执行脚本,处理一条工时记录scripts/match-tasks.py/scripts/match-tasks.sh- 获取所有任务并匹配
接口说明
使用禅道 21.x 开源版正确的 recordworkhour 接口,适配全新 RND UI:
- 接口路径:
index.php?m=task&f=recordworkhour&taskID={taskID} - 需要
zentaosidcookie(每次重新登录获取最新) - 支持指定日期(默认今天)
- 返回 JSON
result: success表示成功
使用示例
用户说:
我今天做了数据治理现场对接,花了2小时
AI:
匹配结果:任务 356 - 数据治理协助(张三),匹配度 100%,确认记录吗?
用户:
可以
AI:
🎉 成功记录! - 任务 356:2小时,"数据治理现场对接" - 当前累计:36小时,剩余:28小时