- 小工具類型
- 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 原有的頁首與選單之下,因為它就是在那裡執行。
建立看板


小工具


分享與切換


查詢本身就是報表
這裡不需要您再描述一次資料。照平常的方式篩選議題清單並儲存,這個已儲存的查詢就成為小工具彙總的範圍——與 Redmine 用來呈現清單本身的是同一個 relation。
| 步驟 | 您要做的事 | 您得到的結果 |
|---|---|---|
| 1. 儲存查詢 | 篩選議題清單——自訂欄位、監看者、子專案——然後按「儲存」 | 一個具名查詢,分享對象與您原先設定的相同 |
| 2. 讓小工具指向它 | 在小工具對話框中選擇該查詢 | 自動推導出資料來源與合理的預設分組 |
| 3. 或直接產生整面看板 | 點選「從查詢建立」 | 一次請求就產生綁定該查詢的 KPI 磚與圖表儀表板 |
用下拉選單設定,而不是 SQL
一個小工具由來源、維度、量值與彙總方式組成。議題可依狀態、優先權、追蹤標籤、被分派者,或任一日期欄位(以日、週、月或年分組)分類;可以計數、加總預估工時,或計算完成率平均值。團隊裡沒有人需要寫 SQL 才能得到圖表——而且既然沒有 SQL 要寫,就不會有任何查詢能越過檢視者本身的權限。

所有小工具都用同一張表單設定
無論是 KPI、長條圖還是環圈圖,每個小工具都用同一張簡短表單設定:標題與類型、資料來源、作為篩選條件的選用已儲存查詢、量值,以及含 Top-N 的分組。變更類型時,表單會隨之調整。




管理員只需一個設定頁
在「網站管理 › 外掛 › Redmine Charts」中,您可以設定每位使用者的結果快取、快取 TTL(5–86400 秒,預設 300)、預設的淺色或深色佈景主題,以及預設的自動重新整理間隔(設為 0 即關閉)。這個頁面就是 Redmine 原有的外掛設定畫面。
23 種小工具類型,還能加入您自己的
每種類型都是由登錄表驅動的中繼資料,因此設定介面會依小工具本身的宣告自動產生,而不是每種圖表各寫一張表單。
| 類別 | 類型 | 設定項目 |
|---|---|---|
| 圖表 | 長條圖、橫條圖、堆疊長條圖、折線圖、多線折線圖、區域圖、圓餅圖、環圈圖、雷達圖、極座標圖、儀表圖、漏斗圖、熱度圖、矩形樹狀圖、進度環 | 來源、維度、量值、彙總方式 |
| KPI/數字 | 單一彙總數字,具有自己的篩選條件 | count · sum · avg · min · max |
| 表格 | 分頁表格,同樣依權限範圍限定資料 | 欄位選擇器與篩選條件 |
| 內容 | Markdown、筆記、HTML、iframe、活動動態、最近議題 | 自由文字,或 Redmine 原有的動態之一 |
以 Apache ECharts 繪製
十五種圖表樣式,支援淺色與深色佈景主題,調整大小時重新繪製,在牆面顯示器上依然清晰。前端套件已預先建置並包含在安裝包中,因此安裝外掛不需要 Node,也不需要建置步驟。
每個區塊都能向下鑽研
點選長條、扇形或熱度圖格子,就會開啟恰好篩選出那些議題的 Redmine 議題清單。數字因此始終可以稽核,因為您隨時能看到背後的資料列。
全域篩選與自動重新整理
一列篩選條件即可同時重新限定看板上所有小工具的範圍,而每面儀表板各自的重新整理間隔,能讓走廊上的螢幕保持最新。設為零即關閉重新整理。
範本與藍圖
將看板儲存為可重複使用的範本、為每個團隊複製一份,或匯出為 JSON 藍圖再匯入另一個執行個體——從預備環境搬到正式環境,不必手動重建。
一個外掛,每個團隊都有自己的看板
交付主管、客服團隊與一位開發人員,各自用手邊既有的已儲存查詢,在幾分鐘內就建好了這些看板。





內建兩種資料來源,您的也能並列其中
議題與工時紀錄兩種來源隨附,其維度與量值皆已預先登錄,且都受 Redmine 本身的可見範圍限制。其他外掛新增的來源也會以完全相同的方式處理。
| 來源 | 維度 | 量值 |
|---|---|---|
| 議題 | 狀態、優先權、追蹤標籤、專案、被分派者、作者、分類、版本、建立日期、更新日期、完成日期 | 議題數、預估工時、完成率 |
| 工時紀錄 | 專案、使用者、活動、日期 | 工時、紀錄筆數 |
| 您自己的來源 | 您登錄的任何維度 | 您登錄的任何量值 |
擴充靠登錄,不靠修補
資料來源是一個類別,包含名稱、維度、量值,以及依權限範圍限定的 base_scope;小工具類型則是一個 hash。在您自己外掛的 init.rb 中以 RedmineCharts.register_data_source 或 register_widget_type 登錄其中任一種,它就會立即出現在設定介面中——並沿用篩選、快取與向下鑽研功能。完全不需要修改本外掛的任何內容。
看不到的資料,就不會被彙總
儀表板是洩漏數字的捷徑,因此每次讀取都從檢視者本身的範圍開始,而不是最後才拿來比對。
先限定可見範圍,再分組
Issue.visible(user)、TimeEntry.visible(user) 與 Query.visible(user) 會在計算任何一列之前就先限制 relation。您不是成員的專案,其總數不可能出現在任何小工具中,因為那些資料列從一開始就不在集合裡。
四項細部權限
檢視儀表板、建立儀表板、管理所有儀表板、管理範本——每一項都可依角色指派。而且在有人為該專案啟用「Charts & Dashboards」模組之前,一切都保持關閉。
透過成員資格分享
可將看板開放給使用者、群組、角色或整個專案。每次請求都會透過 Redmine 本身的成員資格重新判定 viewable_by? 與 editable_by?,而不是依賴一份會逐漸失去同步的平行存取清單。
資料不會離開伺服器
前端只會與您自家 Redmine 上本外掛的 JSON API 溝通,使用既有的工作階段與 CSRF 權杖。沒有外部服務、沒有授權回報、沒有遙測。
為大型執行個體而打造
計算十萬筆議題,不該需要載入十萬個物件。在這裡確實不需要。
| 考量 | 處理方式 |
|---|---|
| 彙總 | GROUP BY、COUNT、SUM 與 AVG 都在 SQL 中執行——絕不會為了計數而實例化資料列 |
| 值很多的維度 | 當某個維度有數千個值時,Top-N 摺疊可讓回傳資料保持精簡 |
| 重複檢視 | 結果透過 Rails.cache 依使用者、小工具 mtime 與作用中的篩選條件快取;TTL 可設定,Redis 可直接使用 |
| 單一緩慢的小工具 | 小工具各自獨立載入,因此單一繁重查詢永遠不會拖住整面看板 |
| JS 套件遺失 | Rails 會在伺服器端算繪每個小工具的資料作為備援,因此頁面會降級顯示,而不是一片空白 |
刻意設計的可攜性,而非碰巧
跨版本與跨資料庫的支援是設計時就納入的——資料庫遷移、JSON 儲存與日期分組全都是為了因應差異而撰寫。
| 考量 | 支援 | 做法 |
|---|---|---|
| Redmine | 4.x, 5.x, 6.x, 7.x | 宣告 requires_redmine version_or_higher 4.0.0,沒有任何會隨版本過時的核心覆寫 |
| Rails | 5.2 → 8.0 | 資料庫遷移以 5.2 基準為目標,直到 8.0 的每個版本都能理解 |
| Ruby | 2.5+ | 符合 Redmine 4 的最低需求 |
| 資料庫 | MySQL, MariaDB, PostgreSQL | JSON 存放在一般文字欄位中——各處 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 自然語言報表產生器 | 規劃中 |
| 行事曆、燃盡圖與甘特摘要小工具 | 規劃中 |
三個步驟完成安裝
需要 shell 存取權限,並能執行 rake 任務。安裝外掛前請務必先備份。
cd /path/to/redmine # unzip the package from your email or download link unzip redmine_charts-1.0.0.zip -d plugins/ bundle install
bundle exec rake redmine:plugins:migrate NAME=redmine_charts RAILS_ENV=production # optional: the built-in dashboard templates bundle exec rake redmine_charts:seed_templates RAILS_ENV=production touch tmp/restart.txt
# Project → Settings → Modules → Charts & Dashboards # then grant the dashboard permissions to the roles that need them # a Dashboards entry appears in the top menu for anyone who holds one
它會修補或覆寫任何 Redmine 核心檔案嗎?
安裝時需要 Node.js 或建置步驟嗎?
我現有的已儲存查詢能用嗎?包括複雜的那些?
有人能看到自己無權存取之專案的數字嗎?
支援哪些資料庫?
它可以在哪些 Redmine 與 Rails 版本上執行?
我們可以加入自己的資料來源或圖表類型嗎?
1.0 版刻意沒有納入哪些功能?
價格
需要客製化的 Redmine 解決方案嗎?
想要的功能在我們現有的外掛中找不到嗎?
RedmineKit 提供 Redmine 外掛客製化開發、外掛修改、工作流程自動化、第三方系統整合,以及為您的業務量身打造的解決方案。
請告訴我們您的需求。我們會評估需求,並提出合適的解決方案,附上預估費用與時程。
