Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add budget visualization #6

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

i-am-alvin
Copy link

@i-am-alvin i-am-alvin commented Jan 23, 2025

修改內容

在 BudgetVisualization 組件中新增、優化了分析區塊的排版與使用者體驗:

  • 新增總預算、案件數、每案依金額長條圖

  • 重新組織分析區塊的版面配置

    • 將標題和註解文字包裝在獨立的 div 中
    • 調整元素間距,提升整體視覺層級
  • 新增使用者提示資訊

    • 加入統計資料更新機制的說明文字
    • 提醒使用者需要捲動至頁面底部才能獲得完整統計資料

測試重點

  • 確認分析區塊的版面配置正確
  • 驗證提示文字清晰可見且易於理解
  • 檢查元素間距是否符合設計規範
  • 由於不是所有專區都有充分的預算數字,請主要是用「前瞻計畫、國科會、立法院、退輔會」來做檢查,會方便一點。

相關 Issue

#5

image

@i-am-alvin
Copy link
Author

預算視覺化統計資料的載入機制問題

問題描述

目前在預算視覺化(Budget Visualization)組件中,統計資料是根據當前載入的資料即時計算。由於採用分頁機制(每頁 20 筆),這導致:

  1. 初始載入時,統計數據只反映前 20 筆資料
  2. 使用者需要往下捲動才會更新統計數字
  3. 使用者可能誤解這些統計數字為完整資料的統計

目前的臨時解決方案

已在前端加入提示文字:

註:統計資料會隨著頁面捲動更新,請捲動至頁面底部以取得完整統計。

建議的長期解決方案

考慮以下幾個方向:

  1. 後端提供完整統計 API
    • 新增一個 endpoint 回傳整體統計資料
    • 分離統計資料與分頁資料的載入
  2. 前端優化
    • 第一次載入時就取得完整統計資料
    • 或維持現有分頁機制,但統計數字改為累加方式更新

討論重點

  1. 統計資料是否需要即時性?
  2. 是否可接受統計資料與顯示資料暫時不同步?
  3. 效能考量:完整資料載入 vs 分頁機制

開發時遇到這個問題,請 AI 簡單描述了一下,想看看怎麼樣處理會是比較好的 practice,感謝!
P.S. 開發時一直覺得很詭異,不過還好穩定出現 「20」,很快就猜到是分頁XD
漂亮的設計!

@i-am-alvin i-am-alvin changed the title 改善預算視覺化組件的分析區塊排版與使用者提示 feat: add budget visualization Jan 24, 2025
@azoezoe
Copy link

azoezoe commented Feb 3, 2025

你好!我是 READr 的記者 zoe~非常謝謝你的貢獻!我想到關於「通過案件分析」的呈現,在資料的解讀上可能會有個小問題,也想跟你討論一下,看是要用註記的方式提醒讀者,還是用什麼方式避免以下狀況。

這個網站裡的預算提案包含兩個過程:「委員會」和「黨團協商(二輪提案)」

  1. 在委員會被「保留」(代表立委開會沒有共識)的提案,會進到「黨團協商」中討論
  2. 在黨團協商中,各個黨團可以提出新的案子

所以在「黨團協商」的案子中,一般的狀況下,我們會去辨識黨團協商中提出的案子(掃描檔)有沒有蓋黨團的章,去辨識它的來源是 1 還是 2 (有蓋黨團的章就代表是 2)。如果是 1,我們就在舊案子更新它的進度,如果是 2,我們就新增一筆新資料。

但這次出現一個狀況,是 1 的案子經過修改(例如修改刪減比例、金額),也會蓋上黨團的章,導致它在我們的流程中變成新資料。這也是為什麼有些案子的狀態仍是「保留」的原因,它在後續的程序之後可能經過「修改」甚至「合併」,被當作新的案子。

所以「通過案件分析」中的「提案」統計數字中,有少數可能會是舊案被保留、但其實最後以新案的型態被通過的案子。如果「通過案件分析」是要看「提案」到「通過」的過程中有哪些案子被擋下來,這樣的統計可能不夠精確。

另外,目前平台的資料也沒有收集最原始的黨團協商新提案。這次的審查過程進到黨團協商時,各黨團其實提了幾千個新案,但因為兩天的黨團協商都沒有實質處理到提案們,最糟的情況是委員會被保留的案子、以及幾千案新案子,都要在一天的院會中被表決——但我想立委們也發現這不可能,所以在院會前撤了不少案子,我們最後人工處理的案子大概是 600 多案。此狀況也會讓「通過案件分析」的「提案」統計不夠精確。

以上兩個資料的狀況提供給您參考!

另外是資料欄位的疑問(關於 code 的部分我們會請前端工程師確認,這只是我作為資料記者的好奇 XD),目前長條圖的欄位是吃 cost 欄位對嗎?cost 欄位其實是原預算的金額,並不是實際減列/凍結的金額。不過年假時,有志工貢獻了這兩個欄位,我們預計會在這幾天將這個資料上架到資料庫裡,可以讓你使用!

@i-am-alvin
Copy link
Author

@azoezoe
Hi 妳好!新年開工愉快~

  1. 關於資料限制的部分,我覺得描述得很清楚,感謝!我再推一版上來,看看註解的方式是否能妥善傳達給讀者,再麻煩妳幫忙 review!

  2. Cost 的部分沒錯!如果有新的資料欄位可以用,再隨時讓我知道,thanks!

@azoezoe
Copy link

azoezoe commented Feb 7, 2025

@i-am-alvin
你好!感謝你,很期待之後的更新
今天同事已經協助把更新資料寫進資料庫,有新增 deleted(刪減金額)、frozen(凍結金額)欄位,僅有少數部分需要人工辨識的資料(約 300 多筆)是空值,之後有更新的話,資料庫也會自動更新

其他欄位是跟政府預算書相關的欄位,目前正在逐步補完中(已經上線三個部會),關於這些欄位的說明請參考這個 repo 的說明

再次感謝!

…ed UI layout

- Added ActionStats type for better data structure.
- Implemented statistics calculation for actions including total cases, passed cases, and percentage.
- Updated UI to display total cases and total budget in a more structured format.
- Enhanced chart section with clearer action representation and hover details.
- Added analysis section for passed cases with detailed breakdown.
… clarity

- Wrapped analysis header and note in a div for better layout.
- Added explanatory note regarding statistics update on page scroll.
@i-am-alvin i-am-alvin force-pushed the feat/issue-5/add-budget-visualization branch from c09f210 to af940d4 Compare February 17, 2025 05:54
…tions and improved UI

- Added helper functions to calculate deleted and frozen budget amounts
- Updated sorting and filtering logic to use new amount calculation methods
- Introduced budget impact tracking and sorting
- Expanded top stats section to show separate deleted and frozen amounts
- Added detailed explanatory notes in the analysis section
- Updated type definitions to support new budget calculation fields
- Enhanced the analysis section with additional context about the budget review process
- Explained potential discrepancies in case counting during committee and party negotiation stages
- Clarified the scope and limitations of the current budget proposal statistics
- Improved readability by using multiple paragraphs with specific details
@i-am-alvin
Copy link
Author

i-am-alvin commented Feb 17, 2025

Hi @azoezoe

我已經新增了兩個更新,分別是 fd135ed4e0a89c

  1. 更新 fd135ed
  • 更新了 frozen/deleted 的邏輯。
  • 長條圖的長度會根據 frozen/deleted 進行處理。
  • 若有部分 frozen/deleted 的案子,則顯示為灰色(其他)。
  • 新增總金額作為參考。
image
  1. 更新 4e0a89c
  • 根據資料可能的限制,增加了兩行註解,以提升「通過案件分析」的資料可靠度。
  • 註解內容:
    • 統計資料會隨著頁面捲動更新,請捲動至頁面底部以取得完整統計。
    • 本次預算審查分為「委員會」和「黨團協商」兩個階段。在委員會中被「保留」的案件,可能在黨團協商時以修改後的版本重新提出。這類案件在統計上會被視為兩個不同的提案,因此「通過案件分析」的數字可能會比實際案件數略高。
    • 在黨團協商階段,各黨團共提出數千件新提案,但最終多數提案在院會前被撤回。本平台僅收錄進入實質審查的約600件提案,因此實際提案總數會高於此處統計。
image

感謝您的協助!

@i-am-alvin
Copy link
Author

如果可以的話,也麻煩挑幾個案子手動檢查看看數字!
我自己檢查了「法務部」的案子,初步看起來都沒有問題,感謝~!

@azoezoe
Copy link

azoezoe commented Feb 18, 2025

@i-am-alvin 嗨嗨!謝謝你!剛剛我們工程師有協助 review PR 並提供測試機頁面給我們確認,我覺得很棒!目前有一些想法提供給你參考:

  1. 總減列金額、跟總凍結金額這兩個欄位,有點容易誤導

因為目前的提案中,有很多提案是針對「同一個預算科目」去提凍結或刪減,例如交通部民航局的「5829110200空運管理業務」,可能會有多個立委針對這個科目做不同提案,部會最後其實會以大的為主(例如 A 提了減列 300 萬、B 提了減列 100 萬,就以 A 為主)。因為目前網頁的做法是全部加總,這個金額不會等於部會實際刪減的預算,我怕讀者會誤會。

這個部分我們目前正在努力把預算的科目資料補齊,來做最後的分析報導,希望這禮拜能做完,就有更多欄位的資料可以給你視覺化 😭

  1. loadmore 才會生成資料的問題,資料能不能改抓 json?
    https://github.com/readr-data/2025_budget/blob/main/bucket_2025.json
    這個資料跟正式機上的資料是一致的(也會持續更新)。我們網頁開發時因為擔心一次拿到所有列表 firestore 的使用量會太大,才會做無限滾動,如果是特別要呈現圖表,可能可以針對個別的 subcategory 先整理過資料比較好,不知道這個 json 符不符合你的需求?

  2. 顯示位置的建議
    我們內部測試時發現兩個狀況:
    a. 在一個 categroy+subcategory 有眾多預算案的狀態下,圖表視覺化會因為預算案過多導致效益不佳 (可以看衛福部的衛生福利部分類,並往下載入所有的預算案)
    b. 同上,案子過多時,圖表會佔很大一塊,但看了圖表的案號想去看實際的提案時,就要滑動很長的區塊才能到目的

以上兩個問題,我在想,如果ˊ這個視覺化的區塊不要放在最上面,而是用其他方式觸發(比如說漢堡或按鈕,展開 side page 或 popup),會不會有機會解決,也讓讀者可以對照著看?

@i-am-alvin
Copy link
Author

i-am-alvin commented Feb 18, 2025

@azoezoe 感謝回覆!

顯示位置的建議
我們內部測試時發現兩個狀況:
a. 在一個 categroy+subcategory 有眾多預算案的狀態下,圖表視覺化會因為預算案過多導致效益不佳 (可以看衛福部的衛生福利部分類,並往下載入所有的預算案)
b. 同上,案子過多時,圖表會佔很大一塊,但看了圖表的案號想去看實際的提案時,就要滑動很長的區塊才能到目的

關於顯示位置的建議,如果改成浮動視窗的話,會不會更適合拉動畫面的時候一起比對?
image
image

收起 & 查看的範例如上,請參考看看

@i-am-alvin
Copy link
Author

總減列金額、跟總凍結金額這兩個欄位,有點容易誤導
因為目前的提案中,有很多提案是針對「同一個預算科目」去提凍結或刪減,例如交通部民航局的「5829110200空運管理業務」,可能會有多個立委針對這個科目做不同提案,部會最後其實會以大的為主(例如 A 提了減列 300 萬、B 提了減列 100 萬,就以 A 為主)。因為目前網頁的做法是全部加總,這個金額不會等於部會實際刪減的預算,我怕讀者會誤會。
這個部分我們目前正在努力把預算的科目資料補齊,來做最後的分析報導,希望這禮拜能做完,就有更多欄位的資料可以給你視覺化 😭

好奇這個部分適合直接拿掉嗎?或是有期待什麼統計值被放在上方!

@azoezoe
Copy link

azoezoe commented Feb 18, 2025

總減列金額、跟總凍結金額這兩個欄位,有點容易誤導
因為目前的提案中,有很多提案是針對「同一個預算科目」去提凍結或刪減,例如交通部民航局的「5829110200空運管理業務」,可能會有多個立委針對這個科目做不同提案,部會最後其實會以大的為主(例如 A 提了減列 300 萬、B 提了減列 100 萬,就以 A 為主)。因為目前網頁的做法是全部加總,這個金額不會等於部會實際刪減的預算,我怕讀者會誤會。
這個部分我們目前正在努力把預算的科目資料補齊,來做最後的分析報導,希望這禮拜能做完,就有更多欄位的資料可以給你視覺化 😭

好奇這個部分適合直接拿掉嗎?或是有期待什麼統計值被放在上方!

這個我覺得直接拿掉比較好!

@azoezoe
Copy link

azoezoe commented Feb 18, 2025

@azoezoe 感謝回覆!

顯示位置的建議

我們內部測試時發現兩個狀況:

a. 在一個 categroy+subcategory 有眾多預算案的狀態下,圖表視覺化會因為預算案過多導致效益不佳 (可以看衛福部的衛生福利部分類,並往下載入所有的預算案)

b. 同上,案子過多時,圖表會佔很大一塊,但看了圖表的案號想去看實際的提案時,就要滑動很長的區塊才能到目的

關於顯示位置的建議,如果改成浮動視窗的話,會不會更適合拉動畫面的時候一起比對?

image

image

收起 & 查看的範例如上,請參考看看

感謝回覆而且馬上就有範例可以看!
我覺得很讚!可以試試看!謝謝你~~

@i-am-alvin
Copy link
Author

i-am-alvin commented Feb 18, 2025 via email

@azoezoe
Copy link

azoezoe commented Feb 18, 2025

辛苦了!!很期待成果

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants