我的 2026 决议:停止挑选 Jira 解决方案

发布: (2026年1月1日 GMT+8 00:06)
6 min read
原文: Dev.to

Source: Dev.to

TL;DR: 在 Jira 中,状态(Status)和解决方案(Resolution)是两个独立的字段。根据工作流配置的不同,Jira 可能会提示你选择解决方案、自动设置解决方案,或者什么都不做——这会导致问题已经 完成(Done)但仍然 未解决(Unresolved)。imdone-cli 0.28.0 的修复让在需要时将问题移动到 完成 时自动设置解决方案。

状态 vs. 解决方案

  • 状态 – 问题在工作流中的位置(例如 待办 → 进行中 → 完成)。
  • 解决方案 – 问题结束的原因(例如 已修复、不会修复、重复)。

因为它们是独立的,下面这种状态是完全合法的:

status = Done
resolution = Unresolved

这不仅仅是表面上的差异;它会渗透到仪表盘、过滤器和工作流规则中。

Jira 如何处理解决方案

提示

转换页面会包含 Resolution 字段,Jira 会要求你选择一个。

自动设置

通过后置函数或自动化在后台设置解决方案——不出现提示。

完全不设置

既没有提示,也没有自动化或后置函数……结果就是 完成 + 未解决

在拥有多个项目、继承工作流或临时调整的环境中,你可能在不同看板上看到上述任意行为,导致低级别的痛点:

  • 报表把“已解决”解释为“有解决方案”,而不是“在完成状态”。
  • “显示未解决问题”的过滤器会意外地把 完成 项目也包括进去。
  • 验证器可能会或不会在 完成 转换时要求解决方案,导致摩擦不一致。

检测问题

project = PROJ AND statusCategory = Done AND resolution = Unresolved

如果你的实例不支持 statusCategory

project = PROJ AND status in (Done, Closed) AND resolution = Unresolved

只要任意查询返回结果,就说明工作流存在隐蔽的错误。

常见的管理员侧修复

  • 完成 转换上添加后置函数来设置 Resolution
  • 添加验证器,要求在转换完成前必须填写 Resolution
  • 添加自动化:“当状态类别变为 完成 时,若为空则设置解决方案”。

这些方案可以起作用,但往往会遇到:

  • 项目之间的差异。
  • 忘记哪些工作流用了哪些设置。
  • 持续的管理员维护工作。
  • 仍然需要手动清理的边缘情况。

开发者视角的方案:imdone-cli 0.28.0

当你把问题移动到 完成 状态类别时,imdone-cli 将会:

  • 自动设置 Resolution = "Done"(前提是问题没有已有的解决方案)。
  • 永不覆盖 已存在的解决方案。
  • 保持非阻塞——即使设置解决方案失败,移动仍然成功。
  • 仅在 移动到 完成 类别的状态时才生效。

基本用法

imdone move PROJ-123 Done

指定解决方案

imdone move PROJ-123 Done -r "Fixed"

跳过解决方案处理

imdone move PROJ-123 Done --no-resolution

交互式选择

imdone move PROJ-123 Done -p

在交互模式下,CLI 会:

  • 从 Jira API 获取可用的解决方案(包含描述)。
  • 包含 Skip(跳过)选项。
  • 若 API 调用失败,则回退到常用的解决方案列表。

为什么这很重要

目标并不是“让 Jira 更合规”,而是消除在工作循环结束时出现的微小上下文切换。如果你的 Jira 已经会提示或自动设置解决方案,那很好。如果你曾经被以下情况困扰过:

  • “为什么这个仍然是未解决的?”
  • “为什么那个图表没有变化?”
  • “为什么这个项目的转换失败,而那个项目却成功?”

……那么这个小而实用的改动可以帮助开发者让 完成 真正等同于 已完成

快速调查

在你的团队中,Jira 是:

  • 提示选择解决方案?
  • 自动设置解决方案?
  • 完全忽略解决方案?

我想了解这些设置在真实团队中的普遍程度。

进一步阅读

  • move 命令的文档(所有选项 + 细节):
Back to Blog

相关文章

阅读更多 »

我让 Codedraft 变得主动!

概述:CodeDraft 现在已激活并处于观察状态。它不再等你记得捕获学习内容,而是在后台运行,主动在需要时提出建议……