返回首页

Redmine 5.1 中的 SLA:插件选择和自定义 | 指南

Redmine 5.1 的 SLA 插件兼容性分析。由于版本不兼容和功能缺失,识别出缺乏现成解决方案。提出三种实现选项:商业解决方案、修改现有插件或自定义开发。

如何在没有现成插件的情况下在 Redmine 5.1 中实现 SLA?实用指南
Advertisement 728x90

# Redmine 5.1 中的 SLA:分析不可用插件并探索自定义路径

在任务管理中缺少自动化指标的情况下,管理者被迫手动监控截止日期,导致错误和效率低下。对于使用 Redmine 5.1 的公司,实现 SLA(服务水平协议)至关重要。然而,在插件中搜索现成解决方案时,发现了严重的兼容性和功能问题。

在 Docker 中设置测试环境

为了安全地测试插件而不危及生产系统,使用 Docker 部署了一个隔离的测试环境。该配置包括 Redmine 和 PostgreSQL 的独立容器、固定的 Redmine 5.1 版本,并且仅通过 localhost 访问。关键方案是将本地目录映射到文件和插件目录,从而避免每次更改都重建镜像。

示例 docker-compose.yml 配置:

Google AdInline article slot
services:
   postgres:
     image: postgres:16
     volumes:
       - db_data:/var/lib/postgresql/data
     environment:
       POSTGRES_USER: "redmine"
       POSTGRES_PASSWORD: "password"
       POSTGRES_DB: "redmine"
       PGDATA: "/var/lib/postgresql/data"
     restart: always
   redmine:
     image: redmine:5.1
     ports:
       - 80:3000
     volumes:
       - ./local-files:/usr/src/redmine/files
       - ./local-plugins:/usr/src/redmine/plugins
     depends_on:
       - postgres
     environment:
       REDMINE_DB_POSTGRES: "postgres"
       REDMINE_DB_USERNAME: "redmine"
       REDMINE_DB_PASSWORD: "password"
       REDMINE_DB_DATABASE: "redmine"
     restart: no
     

volumes:
  redmine_data:
  db_data:  

使用命令 docker-compose up -d 启动环境。成功启动后(无错误发生),作者登录 Web 界面(用户名:admin,密码:admin),并准备测试数据:跟踪器、项目和工单。在安装插件前,通过 Docker Desktop 中的卷导出创建了数据库备份。

插件测试方法

每个插件单独测试,以排除冲突。过程包括三个步骤:

  • 将插件文件夹复制到主机上的 ./local-plugins 目录。
  • 在 Redmine 容器内通过 bundle install 安装依赖。
  • (如需要)运行迁移命令 rake redmine:plugins:migrate

在安装依赖时,出现了典型的缺失 gems 问题,例如:

Google AdInline article slot
Could not find gem 'business_time (>= 0.13.0)'
Could not find gem 'holidays (>= 7.1.0)'

解决方案是手动安装缺失组件:

gem install business_time
gem install holidays

这一步对大多数测试的解决方案都是必需的。

与 Redmine 5.1 的插件兼容性分析

测试了八个匹配 SLA 控制功能的插件。解决方案的关键要求:

Google AdInline article slot
  • 监控对工单的响应时间。
  • 监控完全解决工单的时间。
  • 能够按指定参数过滤工单。

测试结果:

  • reporting_sla (最后更新 18.11.2025):与 Rails/Redmine 版本不兼容,需要深度修改。
  • likehopper/redmine_sla (12.02.2026):仅适用于 PostgreSQL,但测试环境中使用了 Oracle。高性能,因为将逻辑卸载到数据库。
  • redmine_issue_sla (29.01.2018):针对 Redmine 3.x 的过时插件,在 5.1 版本上无法启动。
  • redmine_sla_timer (12.07.2020):无描述,且与当前版本不兼容。
  • redmine_sla_ola (12.07.2020):唯一可用的选项,但需要额外设置——添加自定义字段 productsfirst_reply
  • agile (03.12.2025):处理项目管理任务,但不提供 SLA 功能。
  • RedmineUP Helpdesk:商业解决方案,支持服务,但无法覆盖所有场景,需要预算。

SLA 实现建议

分析选项后,未发现适用于 Redmine 5.1 的即开即用解决方案。组织有三条前进路径:

  • 购买商业解决方案(例如 RedmineUP)。优点:有支持、定期更新。缺点:安全策略限制,与特定需求不匹配。
  • 修改现有插件(redmine_sla_ola)。优点:核心功能已实现。缺点:需要自定义以适应流程,Redmine 更新时存在风险。
  • 开发自定义插件。优点:完全匹配业务流程,无多余功能。缺点:时间投入(演示版预计 3-5 天)。

对于 SLA 流程严格规范的组织,忽略自动化会导致更多截止日期错过。在选择实现路径时,不仅要考虑当前成本,还要考虑 TCO(总拥有成本)。商业解决方案可能需要年度许可费,而自定义则一次性解决问题,持续成本最低。

关键要点

  • 版本兼容性至关重要:大多数插件未针对 Redmine 5.1 更新,未经修改即无法使用。
  • 需要额外设置:即使“可用”插件也需自定义(例如添加字段),增加工作量。
  • Docker 必不可少:在隔离环境中测试可防止生产系统损坏,并加速回滚。
  • Gems 依赖是常见问题:缺失业务逻辑 gems(business_time、holidays)需要手动安装,复杂化流程。
  • 自定义 vs. 商业解决方案:预算有限且需求明确时,自研插件长期节省资源。

— Editorial Team

Advertisement 728x90

继续阅读