我的 2026 决议:停止挑选 Jira 解决方案
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命令的文档(所有选项 + 细节):