OpenProject 17.5.0 版本发布解读:项目级工作包语义标识、Jira 迁移器增强与安全机制升级
2026/9/16 13:31:43 网站建设 项目流程

OpenProject 17.5.0 版本发布解读:项目级工作包语义标识、Jira 迁移器增强与安全机制升级

【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject

OpenProject 17.5.0(发布于 2026-06-10)是围绕“更清晰的工作包引用方式”展开的一次功能发布:管理员可以为整个实例启用 Beta 阶段的项目级工作包标识(例如PROJA-123),Jira Migrator 得以在迁移时保留 Jira 原生的问题编号,同时 Backlogs、Documents、Meetings 等模块也获得了体验增强。阅读本文后,你将了解这些新特性如何开启与验证、哪些属于破坏性变更(Sprint 共享、APIv3 会话认证、SAML SSRF 保护),以及本版本修复的安全漏洞 CVE-2026-52779 的影响范围。

本次发布概览

OpenProject 17.5.0 包含多项功能变更与大量 Bug 修复,官方建议升级到最新版本。重要功能变更包括:

  • 项目级工作包标识(Beta):全实例可选,替代默认数字序列,尤其适合从 Jira 迁移的组织;
  • Jira Migrator 增强:支持保留 Jira 问题编号,并新增截止日期、预计工时、剩余工时迁移;
  • Backlogs 增强:可按项目排除特定工作包类型,Done 状态配置扩展到 Backlogs,冲刺视图与工作包卡片重新设计;
  • Documents 模块:支持在文本段落中插入行内工作包链接;
  • CKEditor 增强##/###工作包宏在编辑时即展开显示类型、状态与标题等上下文;
  • Meetings 模块:会议系列支持按月调度(如“每月第一个周一”“每月最后一个周五”),并对会议邮件引入 1 分钟防抖;
  • 工作流管理:支持一次勾选多个角色进行配置;
  • 重要变更:Sprint 共享(SAFe)移至 Corporate 计划、APIv3 会话认证改用Sec-Fetch-Site头、SAML 集成纳入 SSRF 保护;
  • 安全修复:CVE-2026-52779(跨项目越权删除公共日历与 Team Planner 查询)。

项目级工作包标识:从数字序列到“PROJA-123”

OpenProject 17.5 引入了可选的项目级工作包标识(Beta)。管理员可以为整个 OpenProject 实例选择两种标识方案之一:

  • 默认数字序列(classic):工作包仅以全局递增的数字 ID 引用;
  • 项目级标识(semantic):以“项目标识 + 短横线 + 工作包 ID”的形式引用,例如PROJA-123

这一设置可以回退:启用项目级标识后,原有的数字 ID 依然有效,并能继续解析到相同的工作包,包括已有的 URL、书签与文档引用。换言之,切换标识格式不会使既有引用失效,历史引用在项目标识变更时同样保持可解析。

为什么对 Jira 迁移组织特别有价值

项目级标识最大的使用场景是从 Jira 迁移。启用项目级标识后,Jira Migrator 可以在迁移时保留 Jira 原有问题编号,帮助组织在新平台上延续既有的引用习惯、命名规范与工作流。除迁移场景外,项目级标识还带来更短的序列号与更清晰的项目上下文——在跨项目、邮件、文档、聊天与集成中提及工作包时,“项目前缀 + 编号”比纯数字更容易识别与分享。

切换流程与自动修复机制

切换到项目级标识是一次实例级的管理变更,会影响整个 OpenProject 中工作包的引用方式、URL 与链接格式。官方建议管理员在生产环境启用前先向用户沟通,因为工作包标识、URL 与引用都将改用新格式。OpenProject 会校验现有的项目标识,并在必要时自动生成更短、兼容的标识——从仓库源码结构看,这一转换由后台作业完成,例如 标识转换完成作业 与 回退到经典数字 ID 作业,对应的管理界面组件位于 标识设置表单组件 与 自动修复表格组件,管理端点实现于 work_packages_identifier_controller.rb。

管理入口见 系统管理指南:管理工作包标识。

在 URL、搜索、导出与集成中的支持

即使在 Beta 阶段,项目级标识已经覆盖了 OpenProject 的关键区域:

  • URL、搜索、过滤器;
  • 导出(含 PDF 导出);
  • 邮件通知;
  • API;
  • Documents 与文本编辑器中的工作包引用;
  • 现有集成(GitHub、GitLab 模块已适配新标识格式)。

需要注意:该特性仍处于Beta,部分区域可能仍显示数字标识,直到项目级标识支持完全落地;在这些位置数字标识依然完全可用,并能解析到相同的工作包。

在仓库中,该开关本身由设置项work_packages_identifier承载,其定义可见于 settings/definition.rb:classic表示使用工作包数字 ID,semantic表示使用“项目标识 - 工作包 ID”形式(如PROJA-123),默认为classic。设置模型位于 setting/work_package_identifier.rb。

释放未使用的项目标识

OpenProject 允许管理员释放不再需要的已保留项目标识。注意该选项目前仅在启用数字工作包标识(classic)时可用。释放标识不可撤销:使用该标识的外部链接与集成将停止解析,且该名称变为可供任意新项目占用的状态。对应管理面板的实现可见于 work_packages_identifier_controller.rb。

Jira Migrator:保留 Jira 编号、截止日期与工时

OpenProject 17.5 进一步改进了自 17.4 以 Beta 形式引入的 Jira Migrator。本版本的增强包括:

  • 保留 Jira 问题编号:在启用项目级工作包标识的前提下,迁移可以保留 Jira 原始问题编号,使组织在过渡期维持既有引用与命名习惯;
  • 新增字段迁移:截止日期(due date)、预计工时(estimated hours)、剩余工时(remaining hours)。

导入运行相关的管理端点位于 admin/import/jira 控制器。完整的迁移方法参见 Jira 迁移文档。

Backlogs 模块:类型排除、Done 状态与全新视图

从 Backlogs 中排除特定工作包类型

17.5 允许项目管理员将特定工作包类型从 Backlogs 中排除(按项目配置)。例如,可以将 Epic、Milestone 这类高层级规划项排除出 Backlog 视图,使冲刺规划与 Backlog 梳理聚焦于可执行条目;被排除的类型在项目其他位置仍然可用。配置位于 Backlogs 的项目设置中。从仓库源码结构看,排除类型通过查询范围(scope)实现,见 without_excluded_type.rb 与 in_backlog_for.rb。

“Done” 状态配置扩展到 Backlogs

17.5 将项目级“完成(Done)”状态配置扩展到 Backlogs 模块。被配置为 Done 的工作包会在 Backlog 视图与冲刺完成逻辑中被一致处理:例如团队可以把“开发完成、测试通过”视为开发工作完结,即使文档类任务尚未关闭,也能完成冲刺而不必把已完成的开发工作带入下一冲刺。

重新设计的冲刺视图与工作包卡片

17.5 对 Backlogs 模块的冲刺头部(Sprint/Bucket/Inbox 容器头)、冲刺视图与工作包卡片进行了重新设计:更清晰的视觉层级、更一致的操作用途,以及父工作包、故事点、优先级、负责人、冲刺状态等关键信息的更高可见性。模块完整说明见 Backlogs 系统管理指南。

工作包引用体验:Documents 行内链接与 CKEditor 宏

Documents 模块:段落中的行内工作包链接

Documents 模块基于 BlockNote 编辑器。17.5 之前,工作包链接总是以独立块的形式出现;现在可以直接在文本段落中插入行内工作包链接,使文档更自然、可读,同时链接仍会在新标签页打开被引用的工作包。

CKEditor:编辑时即展开的##/###工作包宏

对基于 CKEditor 的文本字段(工作包描述、Meetings 的议程项、Wiki 页面等),17.5 改进了#####工作包引用的展开方式:引用不再只显示标识符,而是在编辑过程中直接展示工作包类型、状态、标题等上下文信息,无需离开编辑器即可识别被引用的工作包。

Meetings 模块:月度调度与邮件防抖

会议系列的按月调度

重复会议(会议系列)现在支持按月循环,可按“每月第一个周一”“每月最后一个周五”等模式重复。这对周期性协调会、指导委员会、回顾会等遵循常见组织排期的会议尤为实用。

会议邮件防抖(Debounce)

17.5 改善了会议相关邮件的行为:会议正在被协作编辑时,OpenProject 不再对每次小改动都发送一封邮件,而是将多次更新合并为更少的邮件——仅在 1 分钟内没有新变更后才发送。这显著降低了协作准备会议时的收件箱噪音。Meetings 模块详见 用户指南。

工作流配置支持多角色选择

工作流(Workflow)管理现在允许管理员一次性勾选多个角色进行权限配置,减少了复杂角色体系下的重复配置工作。

重要变更与破坏性变更

Sprint 共享(SAFe)移至 Corporate 计划

自 17.5 起,跨项目的 Sprint 共享成为 Corporate 计划的功能。升级到 17.5 后,既有的 Sprint 共享配置仍然可用(包括旧版本中通过共享版本实现的 Sprint 共享,升级时会自动迁移),但新建、修改或重新启用共享 Sprint 配置需要 Corporate 计划。若既有配置被禁用后想重新启用,同样需要 Corporate 计划。

会话认证:非 GET 请求改用 Sec-Fetch-Site 头

此前,使用会话(session)认证访问 APIv3 端点时,非 GET 请求必须携带X-Requested-With: XMLHttpRequest请求头。该头通常与 jQuery 等前端框架相关联,OpenProject 前端发出的请求也会自动附加;对会话认证而言,它的作用是防止跨站请求伪造(CSRF)(例如通过简单 HTTP 表单发起的请求)。

17.5 起,这一检查被替换为对Sec-Fetch-Site: same-origin头的检测。该头由浏览器自动附加,且无法通过 JavaScript 添加或篡改。官方认为这不太可能造成中断:会话认证本就应只用于浏览器上下文(新头在其中依然存在);非浏览器的 API 访问应改用 OAuth 或 API Token 等认证方式,这些方式不受本变更影响。

SAML 集成纳入 SSRF 保护

OpenProject 在先前版本中已为与外部主机通信的集成引入 SSRF(服务器端请求伪造)防护,17.5 将这一防护扩展到 SAML 集成。大多数安装无需任何改动;但如果你通过内网 IP 运行 SAML IdP,可能需要把你的 IP 或网段加入OPENPROJECT_SSRF_PROTECTION_IP_ALLOWLIST配置白名单。仓库中该机制的核心实现位于 ssrf_protection.rb,允许列表通过OpenProject::Configuration.ssrf_protection_ip_allowlist读取并支持子网匹配;自定义错误提示见 httpx_ssrf_custom_error_message.rb。官方感谢安全研究者 aslantugay 通过 GitHub 安全通告报告了该缺陷。

安全修复:CVE-2026-52779

CVE-2026-52779:跨项目越权删除公共 Calendar 与 Team Planner 查询。Calendar 与 Team Planner 模块存在跨项目 IDOR/授权上下文混淆:在一个项目中拥有管理权限的用户,可以删除其在另一个项目中并无相应管理权限的公共 Calendar 或 Team Planner 查询。该漏洞经由 YesWeHack.com 的 OpenProject Bug Bounty 计划(欧盟委员会赞助)报告,修复详情可查阅对应 GitHub 安全通告(GHSA-jrx5-px3f-vfq4)。

其他值得关注的修复(节选)

17.5.0 的完整修复清单很长,这里按主题摘录与上述功能强相关的修复:

  • 语义标识相关:工作包列表按语义 ID 正确排序;语义模式下搜索结果显示语义 ID;邮件通知、活动时间线、Roadmap、批量编辑、工时与成本报告、删除确认对话框等处的数字 ID 显示问题;自动转换项目标识时避免占用保留关键字;切换 semantic/classic 后再移动工作包不再报错;workPackageValue:ID:attribute宏在语义 ID 下的失败修复;
  • Jira Migrator:状态徽章与导入名错位、非字母数字用户名导入失败、用户提及中不存在用户导致导入中断、限流的 Jira 实例导致项目选择器失效、重复导入运行之间未正确限定问题范围等问题;
  • Backlogs/冲刺:已关闭工作包仍被计入 bucket、移动端间距缺失、WP 页面 Sprint 字段偶发不可见、设置页 Tab 切换未持久化到 URL;
  • Documents/BlockNote:文本中输入#会删除光标后内容、复制粘贴与拖放时卡片退化为哈希链接、行内链接高度不一致、插入链接后光标位置错误等;
  • Meetings:单次发生(occurrence)的“取消”操作在“我的会议”与会议列表“Past”页被错误显示为“Delete”、/api/v3/recurring_meetings/:id/occurrences/:start_time/init端点授权不完整等。

完整清单见 17.5.0 Release Notes。

升级建议与总结

对准备升级到 OpenProject 17.5.0 的团队,建议关注以下三点:

  1. 计划标识变更:若希望保留 Jira 问题编号或统一团队引用习惯,可启用项目级工作包标识(Beta)。启用前向用户公告,理解其会自动修复项目标识且历史引用保持有效;
  2. 检查依赖旧行为的集成:非浏览器客户端不要依赖X-Requested-With会话认证行为,API 访问请改用 OAuth 或 API Token;SAML 走内网 IP 的环境按需配置OPENPROJECT_SSRF_PROTECTION_IP_ALLOWLIST
  3. 确认计划等级:若你的组织依赖跨项目 Sprint 共享,确认 Corporate 计划已就位,避免重新启用共享配置时受阻。

总体而言,17.5.0 的主线是“让工作包引用更清晰、更贴近团队既有习惯”,并以安全加固(SAML SSRF 保护、CSRF 头升级、跨项目越权修复)与 Backlogs/Meetings 的体验改进作为配套,是一次面向生产环境的稳健版本。

【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询