JIRA 个人工单自动化检查与更新

通过 JIRA REST API 自动检查并更新个人工单的版本、预计开发完成时间和开发回复状态,包含字段规则、工作流模拟、错误处理与定时触发。

功能名称:JIRA 个人工单自动化检查与更新

功能描述:

本功能旨在通过 JIRA REST API 自动检查当前用户(本人)的所有 JIRA 工单。针对以下三种情况,系统将进行相应的更新操作或执行特定工作流,以确保工单信息的完整性和准确性:

  • 缺少“开发回复状态”: 如果工单的 status** 字段值不为 **'开发已回复',则执行“开发回复工作流”,并同时更新“版本”和“预计开发完成时间”。
  • 仅缺少“版本”或“预计开发完成时间”: 如果工单仅缺少“版本”或“预计开发完成时间”之一,且 status 字段值为 '开发已回复',则调用 JIRA 问题更新接口,仅更新缺失的字段。
  • 同时缺少“开发回复状态”、“版本”和“预计开发完成时间”: 默认情况下,此情况等同于第1点,即执行“开发回复工作流”,并同时更新“版本”和“预计开发完成时间”。

技术要求:

  • 所有与 JIRA 的交互必须使用 jira/rest/api/2 系列接口。

字段更新规则:


1. 版本选择:

  • 查询范围: 默认需要查询对应工单项目的 fixVersions 字段下拉版本列表。 + 筛选规则:
  • 优先使用DC 开头的版本号,但不对其进行强制限制,意味着其他前缀的版本也可以被考虑。
  • 双周版本定义: 每个月有两个版本号。基本上是每月两个周四对应的日期版本号。例如,如果7月有两个双周发布周四,分别是7月10日和7月24日(假设日期),那么版本号中会包含 2025071020250724
  • 根据当前时间,自动选择下一个双周发布版本作为默认版本。
  • 版本命名规范示例: DC_V10.1.20250717,其中最后八位数字代表连续双周发布中的特定日期(例如:YYYYMMDD)。

2. 预计开发完成时间:

  • 数据校验:
  • 唯一性: 检查当前用户所有已填写的“预计开发完成时间”,确保新填写的日期不与现有日期重复。
  • 日期类型: 确保日期不是周六或周日。
  • 未来日期: 确保日期必须晚于当前日期。
  • 建议范围: 最好处于所选双周版本发布日期之前的几天。
  • 冲突处理: 如果根据上述规则无法找到符合条件的预计开发完成时间(例如,尝试版本发布前一天导致重复),系统不应强制选择重复日期。此时,应将该工单标记为特殊情况,并通过错误处理机制进行通知。

3. “开发回复流”的具体操作:

  • 您提到在JIRA界面上是点击“开发回复”按钮,会弹出一个窗口填写字段,最终 status 变成 '开发已回复'。这表明这很可能是一个JIRA工作流的转换(Transition)操作。 + 系统需要模拟这个工作流转换。在调用JIRA API时,需要找到对应的工作流转换ID。 + 如果弹窗中需要填写其他字段,开发时需要确认这些字段的API字段名并一同传递。如果确认是简单的状态转换,可能不需要额外参数。

4. 错误处理与通知机制:

  • 错误日志: 如果 JIRA API 调用失败(例如网络问题、JIRA服务器错误、权限不足等),请创建本地 SQLite 数据库记录详细日志。日志应包含:
  • 错误发生的时间
  • 涉及的 JIRA 工单号
  • 调用的 API 接口
  • JIRA 返回的具体错误原因(错误码、错误信息)
  • 操作类型(例如:更新版本、执行工作流)
  • 通知: 仅记录日志,无需通过其他方式通知。

5. 执行频率与触发方式:

  • API 触发: 支持通过 FastAPI 接口检查并直接触发该功能。 + 定时任务: 支持配置为定时任务,每天下午五点执行一次。系统应能选择其中一种方式运行,或同时支持两种方式(例如,API触发用于手动或紧急运行,定时任务用于日常维护)。

6. 权限要求:

  • 用于连接 JIRA 的默认账号和密码为 zengdi / 1。 + 该账号应具备涉及本人所有工单的必要权限,包括但不限于:
  • 浏览工单(Browse Projects)
  • 编辑工单(Edit Issues)
  • 执行工作流转换(Transition Issues)
  • 更新自定义字段的权限(如果“开发回复状态”是自定义字段的话)