You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Jira API检测Jira问题的历史状态(二次重开场景)

Jira二次重开状态检测的实现方案

是的,你必须获取问题的历史记录才能实现二次重开的检测,而且Jira的状态变更确实仅在历史记录(changelog)中被追踪。

核心原因

issue.fields.status只能返回当前的状态值,完全没有状态流转的时序、次数或来源状态信息——这些关键数据全部存在问题的变更历史里,也就是你在GUI问题页面看到的"历史"标签内容。

实现思路

通过Jira API获取问题的变更历史,遍历所有状态变更条目,统计从Closed到Open的转换次数,当次数达到2次及以上时触发你的特定动作。

Python代码示例

from jira import JIRA

# 初始化Jira客户端
jira = JIRA(
    server="你的Jira实例地址",
    basic_auth=("你的账号", "API令牌/密码")
)

# 获取问题时必须指定expand='changelog',否则不会返回历史记录
issue = jira.issue("PROJECT-XXX", expand="changelog")

# 统计从Closed到Open的重开次数
reopen_count = 0
for history_entry in issue.changelog.histories:
    for change_item in history_entry.items:
        # 匹配状态从Closed变为Open的变更
        if (change_item.field == "status" 
            and change_item.fromString == "Closed" 
            and change_item.toString == "Open"):
            reopen_count += 1

# 检测到二次重开时触发动作
if reopen_count >= 2:
    # 示例:添加评论
    jira.add_comment(issue.key, "检测到二次重开,已触发预设自动化动作")
    # 这里可以替换为你的其他动作,比如修改字段、触发webhook等

注意事项

  • 确保状态名称和你的Jira实例完全匹配(比如部分实例可能用"已关闭"/"打开"而非英文)
  • 如果问题历史条目过多,可以通过JQL过滤变更时间范围,减少遍历的数据量,提升效率
  • 调用API时expand='changelog'是必填项,默认请求不会返回历史数据,这是Jira API的性能优化设计

内容的提问来源于stack exchange,提问作者Madrid Spain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:04:58