RedmineKit

Redmine Dashboards

Dashboards
5.0 (0)·New 次安装

用你现有的自定义查询直接搭出仪表板 —— 可拖拽的网格里放 KPI 卡片、表格和十五种图表,聚合在 SQL 里完成,并且只统计当前用户有权看到的数据。

$199 / 单台服务器

多台服务器: $399

5 个工作日内退款12 个月更新含源码
Redmine 6 中的一块 Redmine Charts 仪表板:显示 10,000 条问题的 KPI 卡片、项目环形图、按优先级分布的柱状图、状态环形图,以及按月新建数量的折线图。
一块实时仪表板 KPI 卡片、环形图、柱状图和折线图同在一块板上 —— 每个数字都在 SQL 中聚合,数据来自 Redmine 自身受权限约束的范围。
部件类型
23
图表变体
15
Redmine
4 · 5 · 6 · 7
数据库
MySQL、MariaDB、PostgreSQL
核心改动
无

拖拽式搭建

可缩放、可重排的网格,一边摆一边自动保存。把 KPI、图表和表格摆到这块板子讲清楚你要讲的事为止 —— 不用改布局文件,也不用刷新页面。

十五种图表

柱状图、条形图、堆叠柱状图、折线图、多折线、面积图、饼图、环形图、雷达图、极坐标、仪表盘、漏斗图、热力图、矩形树图和进度环 —— 由 Apache ECharts 绘制,浅色深色皆可。

把自定义查询画出来

让部件指向一个已保存的查询,它就继承那份筛选条件,自定义字段、关注者和子项目都在内。也可以一键把这个查询变成整块仪表板。

在 SQL 里聚合

GROUP BY、COUNT、SUM 和 AVG 都在数据库里执行,十万条问题是被统计而不是被实例化。结果按用户、部件和当前筛选条件缓存。

按观看者裁剪

每一次读取都从 Issue.visible(user)、TimeEntry.visible(user) 和 Query.visible(user) 出发,因此任何图表都不可能汇总出一个观看者并非成员的项目。

筛选、刷新与下钻

一条筛选栏即可重置整块板子,每块仪表板可设自己的刷新间隔以适合挂在墙上,而每根柱子、每块扇形和每个单元格都能点进背后的问题列表。

看它在 Redmine 里运行

这里的每张截图都来自一个标准的 Redmine 6 安装,插件直接放进 plugins/ 即可。仪表板就在 Redmine 自己的页头和菜单之下,因为它本来就运行在那里。

搭建一块板

仪表板的编辑模式:每个部件都显示拖动手柄和缩放角,布局自动保存。
编辑模式 打开「编辑」开关,每个部件都能拖动、调整大小。布局随改随存。
「添加部件」对话框:通过下拉框选择部件类型、数据源、可选的已保存查询、度量和聚合方式。
添加部件 选择部件类型、数据源和可选的已保存查询,再选定度量与聚合方式。全程无需写 SQL。

部件

部件类型选择器,列出十五种 ECharts 变体、KPI 和表格,以及 Markdown、备注、HTML、iframe、动态订阅和最近问题。
23 种部件类型 十五种 ECharts 变体,加上 KPI、表格和六种内容部件 —— Markdown、备注、HTML、iframe、动态订阅和最近问题。
仪表板上一个部件的专属菜单已展开,包含刷新、配置和删除操作。
部件操作 每个部件独立加载,各有自己的菜单 —— 刷新一张图,不必重新加载整块板。

共享与切换

仪表板共享对话框:私有、共享和公开三种可见性,以及角色、用户组和项目选择器。
共享 仪表板可以设为私有,共享给指定的角色、用户组或项目,也可以向所有已登录用户开放 —— 一律通过 Redmine 成员关系判定。
工具栏中的仪表板切换器,列出所有可见的板,并提供设为默认、导出为 JSON 和新建仪表板的选项。
切换仪表板 工具栏切换器列出你能看到的每块板。可将其中一块设为默认、导出为 JSON,或新建一块。

查询本身就是报表

这里不会要求你把数据再描述一遍。像平时那样筛选问题列表并保存,这个已保存的查询就成为部件聚合的范围 —— 正是 Redmine 渲染该列表时所用的同一个关系。

一个已保存的查询,三条通往仪表板的路
步骤你要做的你得到的
1. 保存查询照常筛选问题列表 —— 自定义字段、关注者、子项目 —— 然后点击保存一个命名查询,对你共享过的人可见
2. 让部件指向它在部件对话框里选择该查询数据源和一个合理的默认分组,系统替你推导
3. 或者直接生成整块板点击「从查询生成」一块绑定该查询的仪表板,KPI 卡片和图表一次请求全部生成

用下拉框配置,而不是写 SQL

一个部件由数据源、维度、度量和聚合方式组成。可按状态、优先级、跟踪标签、指派人,或任意日期字段按天、周、月、年分桶来分组问题;统计条数、求和预估工时,或取完成度的平均值。团队里没人需要为了一张图去写 SQL —— 而既然没有 SQL 可写,也就不存在能越过阅读者权限的查询。

「从查询生成」对话框:选择一个已保存的 Redmine 查询,生成一块绑定其筛选条件的 KPI 与图表仪表板。
从已保存查询生成 选择任意一个已保存查询,即可得到一块现成的 KPI 与图表仪表板 —— 状态、优先级、指派人、趋势和一张表格 —— 全部绑定该查询的筛选条件。

一张表单,配置所有部件

无论是 KPI、柱状图还是环形图,每个部件都用同一张简短的表单配置:标题和类型、数据源、用于筛选的可选已保存查询、度量,以及带 Top-N 的分组。切换类型,表单随之调整。

KPI 的部件配置表单:标题为问题总数,数据源为问题,已保存查询,度量为问题数,函数为 count。
KPI 卡片 一个数字:基于已保存查询的一个度量加一种聚合方式。
柱状图的部件配置表单:按优先级统计问题,按优先级分组,Top N 为 20。
柱状图 按任意维度分组,例如优先级,再用 Top-N 截掉长尾。
环形图的部件配置表单:按状态统计问题,按状态分组。
环形图 字段相同,只是类型不同。切换图表类型时,数据设置保持不变。
Redmine Charts 插件设置:启用缓存,缓存过期时间 300 秒,默认主题为浅色,自动刷新间隔为 0。
插件设置 缓存、缓存 TTL、默认主题和自动刷新,都在 Redmine 自己的设置页面里。

管理员只需一个设置页

在 管理 › 插件 › Redmine Charts 中,可以设置按用户的结果缓存、缓存 TTL(5–86400 秒,默认 300)、默认的浅色或深色主题,以及默认自动刷新间隔(0 表示关闭)。这个页面就是 Redmine 自己的插件设置页。

23 种部件类型,也给你自己的留了位置

每种类型都是注册表里的元数据,配置界面依据部件自身的声明自动生成,而不是为每张图手写一个表单。

开箱即有的目录
类别类型配置方式
图表柱状图、条形图、堆叠柱状图、折线图、多折线、面积图、饼图、环形图、雷达图、极坐标、仪表盘、漏斗图、热力图、矩形树图、进度环数据源、维度、度量、聚合
KPI / 数字一个带独立筛选条件的聚合数值count · sum · avg · min · max
表格基于同一份受权限约束数据的分页表格列选择器与筛选条件
内容Markdown、备注、HTML、iframe、动态订阅、最近问题自由文本,或 Redmine 自带的订阅源

由 Apache ECharts 绘制

十五种变体,为浅色和深色分别设计,尺寸变化时重绘,挂在墙上的大屏也依然清晰。安装包内已附带编译好的前端产物,因此安装既不需要 Node,也不需要构建步骤。

每一段都能下钻

点击一根柱子、一块扇形或热力图的一个格子,就会打开按这些问题精确筛选后的 Redmine 问题列表。数字始终可核对,因为你随时能落到它背后的那些行上。

全局筛选与自动刷新

一条筛选栏同时重置整块板上的所有部件,每块仪表板可设自己的刷新间隔,让走廊里的屏幕保持最新。设为零即关闭刷新。

模板与蓝图

把一块板存成可复用的模板、按团队复制,或导出为 JSON 蓝图再导入另一个实例 —— 从预发布到生产,不必手工重搭一遍。

一个插件,每个团队都有自己的板

交付负责人、支持团队和一位独立开发者,各自用手头已有的已保存查询,几分钟就搭好了这些仪表板。

完整的仪表板:KPI、环形图、优先级柱状图、月度趋势、按指派人统计的工作量,以及分页的问题表格。
项目组合总览 KPI、环形图、趋势、按指派人统计的工作量,以及分页的问题表格。
「指派给我的问题」仪表板,包含一个 KPI、一张面积图和一个状态环形图。
指派给我的问题 一块个人仪表板,带面积图和状态环形图。
「我创建的问题」仪表板,包含一个 KPI、一个跟踪标签环形图和优先级柱状图。
我创建的问题 跟踪标签构成、优先级分布和状态,一目了然。
支持服务仪表板:显示问题总数和已用工时的 KPI 卡片、状态环形图,按优先级、子跟踪类型和模块分布的条形图,以及按月新建数量的折线图。
支持服务总览 一个支持周期内的问题数、已用工时、优先级、子跟踪类型和各模块工作量。
全年支持服务仪表板:显示问题总数和已用工时的 KPI 卡片、状态环形图,按优先级、模块和子跟踪类型分布的条形图,以及按月新建数量的折线图。
一年支持数据总览 问题数量、已用工时、按优先级和模块的分布,以及逐月的变化趋势。

内置两个数据源,你的可以并排放

问题和工时都自带已注册好的维度与度量,二者都在 Redmine 自己的可见性范围之后。另一个插件添加的数据源会得到完全相同的待遇。

数据源维度度量
问题状态、优先级、跟踪标签、项目、指派人、作者、类别、版本、创建时间、更新时间、完成日期问题数、预估工时、完成度
工时项目、用户、活动、日期小时数、记录条数
你自己的你注册什么就是什么你注册什么就是什么

扩展靠注册,而不是打补丁

一个数据源就是一个类:有名称、维度、度量,以及一个受权限约束的 base_scope;一种部件类型则是一个 hash。在你自己插件的 init.rb 里用 RedmineCharts.register_data_source 或 register_widget_type 注册,它会立刻出现在配置界面里,并继承筛选、缓存和下钻。为此不需要改动本插件的任何代码。

看不到的数据,谁也聚合不出来

仪表板是让数字外泄的一条捷径,所以每次读取都从观看者自身的可见范围出发,而不是在最后补一次检查。

先可见性,后分组

Issue.visible(user)、TimeEntry.visible(user) 和 Query.visible(user) 会在统计任何一行之前就约束好关系。来自你并非成员的项目的合计,不可能出现在任何部件里,因为那些行从来就不在集合中。

四项细粒度权限

查看仪表板、创建仪表板、管理全部仪表板、管理模板 —— 每一项都可按角色分配。而且在有人为该项目启用「仪表板」模块之前,一切都处于关闭状态。

共享走成员关系

可以把一块板授予用户、用户组、角色或整个项目。每次请求都会通过 Redmine 自己的成员关系重新判定 viewable_by? 与 editable_by?,而不是依赖一份迟早会走样的平行权限表。

数据不出服务器

前端只与你自己 Redmine 上本插件的 JSON 接口通信,用的是已有的会话和 CSRF 令牌。没有外部服务,没有许可证回调,没有遥测。

为大型实例而造

统计十万条问题,不应该意味着加载十万个对象。在这里确实不需要。

打开一块板时发生了什么
关注点处理方式
聚合GROUP BY、COUNT、SUM 和 AVG 都在 SQL 中执行 —— 绝不会仅仅为了计数而实例化数据行
取值极多的维度当一个维度有成千上万个取值时,Top-N 折叠让返回结果保持精简
重复查看结果通过 Rails.cache 按用户、部件修改时间和当前筛选条件缓存;TTL 是一项设置,Redis 可直接使用
某个部件很慢各部件独立加载,一条重查询不会拖住整块板
前端产物缺失Rails 会在服务端渲染每个部件的数据作为兜底,页面只会降级,而不会变成一片空白

可移植是设计出来的,不是碰巧

跨版本、跨数据库的支持是从设计之初就考虑的 —— 迁移、JSON 存储和日期分桶,都是为了经受住这些差异而写的。

关注点支持范围实现方式
Redmine4.x、5.x、6.x、7.x声明 requires_redmine version_or_higher 4.0.0,且没有任何会随版本过时的核心覆盖
Rails5.2 → 8.0迁移以 5.2 为基线,直到 8.0 的每个版本都能理解
Ruby2.5+与 Redmine 4 的最低要求一致
数据库MySQL、MariaDB、PostgreSQLJSON 存放在普通 text 列中 —— 各处 DDL 完全相同 —— 序列化器会按 Rails 版本选择正确的写法
日期分组天、周、月、年先按可移植的 CAST(col AS DATE) 分组,再在 Ruby 中折叠成分桶 —— 没有任何厂商专用 SQL
重复执行迁移安全以防御方式编写,升级中断后可以重跑

第一天就能脚本化

所有接口都在 /redmine_charts/api 之下,返回 JSON,并执行与界面完全一致的权限 —— 因此仪表板可以从 CI 里创建,也可以按团队批量生成。

方法路径作用
GET/dashboards调用者可见的全部仪表板
POST/dashboards创建一块仪表板
GET/dashboards/:id获取一块仪表板及其部件
PATCH/dashboards/:id修改名称、布局或设置
POST/dashboards/:id/duplicate克隆,连同部件一起
GET/dashboards/:id/export导出 JSON 蓝图
POST/dashboards/import由蓝图创建一块仪表板
POST/dashboards/:id/widgets添加一个部件
GET/widgets/:id/data聚合后的、受权限约束的部件数据
GET/meta/data_sources数据源、维度、度量以及可用的已保存查询

今天已经交付的,以及接下来的

路线图上的内容在设计上都是增量的 —— 新的数据源、部件类型和导出服务 —— 因此没有一项会要求你迁移任何东西。它们被列为路线图而非功能,让你按今天盒子里真正有的东西来决定是否购买。

能力状态
仪表板:创建、复制、设为默认、导出和导入已上线
可拖拽、可调整大小的网格,自动保存已上线
KPI、表格以及完整的 ECharts 图表集已上线
可视化、无需 SQL 的部件配置已上线
复用已保存查询,一键生成整块板已上线
刷新整块板的全局筛选已上线
从图表下钻到问题列表已上线
按用户、受权限约束的 SQL 聚合与缓存已上线
共享、模板、浅色与深色主题已上线
跨版本、跨数据库、服务端兜底渲染已上线
PDF、PNG 和 Excel 导出计划中
用于超重报表的后台任务计划中
基于 WebSocket 的实时更新计划中
定时生成并邮件发送快照计划中
看板大屏模式计划中
AI 自然语言报表生成器计划中
日历、燃尽图和甘特摘要部件计划中

价格

单台服务器

$199

一个 Redmine 实例 · 用户数不限 · 12 个月更新。

Unlimited users12 months of updatesPriority email support
购买授权

多台服务器

$399

Redmine 服务器数量不限 · 用户数不限 · 12 个月更新。

Unlimited users12 months of updatesPriority email support
购买授权
购买