CL3 開發週記|v1.4.x 走向 v1.5.1:從功能堆疊,走向可維護的平台工程
CL3 開發週記|v1.4.x 走向 v1.5.1:從功能堆疊,走向可維護的平台工程
發布日期:2026-03-14
作者:Michael
專案:CL3 Platform
這一週,CL3 的開發重點,不只是新增功能,而是更明確地把整個系統往「平台化、工程化、可維護化」推進。
若說前一階段的核心,是讓 CL3 能夠完成資料抓取、快照寫入、API 輸出與 Dashboard 呈現;那麼這一週更重要的任務,則是讓系統從「已經能運作」,進一步提升為「可以長期維護、可以穩定交付、可以逐步擴張」。
本週的工作,橫跨了幾個核心面向:
-
Dashboard UI 與資訊顯示優化
-
中英文 / 多語系架構落地
-
Admin 資產管理流程強化
-
版本、模組資訊與工程文件持續補強
表面上看,這些工作有些像是修正細節、補文件、調整欄位、優化畫面;但從系統發展的角度來看,這些事情都指向同一個目標:
讓 CL3 從一套功能集合,逐步成長為一個真正可持續演進的平台。
一、本週的核心意義:讓 CL3 更像一個真正可維運的系統
CL3 目前的架構方向已經相當明確:
-
Core:負責資料抓取、計算、市場狀態判斷與快照寫入
-
PostgreSQL:作為單一資料真實來源(SSOT)
-
API / Dashboard:專注讀取與呈現,不直接改寫核心決策資料
-
Admin:負責標的管理、資料來源設定與維護流程
這個架構本身,不只是技術拆分,而是一種治理方式。
因為只要系統未來要持續擴張,不論是增加更多標的、更多 driver、更多說明頁、更多管理功能,最後都會回到兩個根本問題:
第一,資料是否可信。
第二,維護是否可控。
這一週的很多工作,正是在補這兩個基礎。
二、Dashboard 進展:從能顯示,到更清楚、更一致、更易理解
1. Telemetry 卡片切換功能完成
本週完成了 Dashboard 上 Telemetry 區塊的顯示開關功能,並加入 localStorage 持久化。
這代表使用者可以依自身偏好,決定是否顯示特定資訊卡片,而且重新整理頁面後仍能保留上次的選擇。
這是一個很實際的使用體驗升級。
對一個持續成長中的系統來說,畫面資訊只會越來越多。若沒有適當的資訊管理機制,介面就會逐漸失去可讀性。這次的調整,雖然規模不大,但本質上是在為未來的資訊擴充預留空間。
2. Header 顯示資訊更清楚
本週也針對 Dashboard Header 做了優化,包括:
-
Build 資訊顯示
-
時區標示調整
-
模組版本與更新資訊呈現
原先偏技術式、較不直觀的內容,逐步轉成更適合長期維護與判讀的形式。例如時區不再只是固定顯示 UTC,而是優先顯示實際後端帶入的時區,如 Asia/Taipei。
這類細節在一般網站中也許不是關鍵,但在金融與監控型系統中,時間資訊的表達是否清楚,會直接影響資料判讀與追蹤能力。
3. /explain 與 Dashboard 版型一致化方向持續推進
本週也開始處理說明頁與主 Dashboard 的版型一致性問題。
過去隨著迭代速度提高,不同頁面之間難免形成設計語言不一致的狀況。這並不稀奇,但若要往產品化前進,就必須逐步統一。
因此,本週已朝向下列方向收斂:
-
統一主題樣式
-
統一頁面結構
-
統一語言切換邏輯
-
讓 Help Center / Explain 頁更像整體產品的一部分
這種整理,不一定會立即增加功能數量,但會顯著提升整體感與專業感。
三、多語系架構開始落地:這不只是翻譯,而是產品邏輯的一部分
這週一個很重要的里程碑,是 CL3 不再只是停留在「未來要支援多語系」的概念,而是開始實際朝多語系架構推進。
這個轉折點,來自很真實的使用者反饋:
當介面逐步對外展示時,單語系的限制會立刻浮現。若未來 CL3 不只是自己用,而是需要給夥伴、團隊成員、投資人或合作方理解,那麼語言層就不能再是後補項目。
因此,本週開始整理:
-
Dashboard 主要欄位文字
-
Explain / Help Center 文案
-
Admin 的部分操作用語
-
多語切換的基礎邏輯
這件事的價值,不只是「有中文、有英文」,而是讓系統未來具備更好的擴展性。
因為真正成熟的多語系,不是到處手動改字,而是從一開始就把文字層抽離、規則化、可維護化。這週雖然仍在初步推進階段,但方向已經很清楚,而且是正確的。
四、Admin 系統本週的關鍵推進:降低錯誤輸入,提升維護可控性
對 CL3 而言,Admin 並不只是後台頁面。
它本質上是整個資產治理與資料來源治理的入口。
如果 Admin 層沒有足夠的防呆與資訊透明,那麼後面的 Core、API、Dashboard 即使做得再完整,也仍然會因為錯誤主檔而失去可信度。
1. Driver / Source 資訊透明化
本週持續補強 Admin 資產編輯頁的資訊顯示,讓使用者不只是填寫欄位,而能更清楚理解:
-
目前使用的是哪一個 driver
-
這個標的來自哪個資料來源
-
哪些欄位應該可改
-
哪些欄位不應該任意修改
-
模組與 driver 的資訊來自何處
這是一個很重要的轉變。
因為當管理介面從「單純表單」提升到「具備上下文的維護介面」,錯誤率就會明顯下降。
2. ALLIANZ create flow 問題持續修補
本週也針對 ALLIANZ 的建立流程持續修補,包括 catalog 匯入後 is_active=true 的一致性問題。
這類問題如果不處理,表面上看起來只是資料表中一個欄位狀態,但實際上會造成以下連鎖影響:
-
新增後不顯示
-
使用者誤以為新增失敗
-
後續快照流程與前台顯示不一致
-
維護信任感下降
所以這不是單純的資料修補,而是在處理整個系統的操作可信度。
3. 特殊 driver 專用 Picker 的方向確立
這週另一個重要決策,是更明確地確認:
像 ALLIANZ 這類特殊資料源,不應該依賴人工自由輸入 symbol 與 URL。
因此接下來的方向已經很清楚:
-
ALLIANZ:採用 catalog picker
-
YFINANCE:採用 ticker search + validate picker
-
不同 driver,使用不同的受控輸入流程
這是一個很關鍵的產品判斷。
因為自由輸入雖然彈性高,但長期來看,錯誤率也高;而受控輸入雖然前期需要多做一些設計,卻能大幅降低維護成本。
對 CL3 這種需要穩定、可信、可持續演進的系統而言,這條路是值得的。
五、資料來源治理開始成形:Driver 不再只是抓資料,而是一套規則
本週一個很深的體會是:
當 CL3 持續擴張之後,driver 已經不能只被視為「某段抓資料的程式」。
它其實是一套規則,一層治理邏輯。
例如:
ALLIANZ 類型標的的特性
-
商品名稱長
-
share class 複雜
-
symbol 不適合靠人工自由命名
-
URL 與 source URL 概念容易混淆
-
若沒有 catalog 支援,維護成本高、錯誤機率也高
YFINANCE 類型標的的特性
-
ticker 必須正確
-
同名商品可能跨市場
-
symbol 格式需要驗證
-
若查不到資料,不能只是默默接受,而應該給出明確錯誤
因此,本週已經把 driver 防呆這件事,從零散修補提升到結構化任務的層次。
這非常重要,因為這代表 CL3 正在從「資料抓得到就好」,進入「資料來源要能被治理」的階段。
六、版本管理與工程文件:這週不是只在寫功能,也在補未來的可追溯性
這週也持續強化版本管理、模組資訊顯示與文件紀律,包括:
-
App / Module / Driver 版本資訊呈現
-
Build / Updated metadata 顯示
-
CHANGELOG 補齊
-
工作紀錄整理
-
VERSIONING 規範持續明確化
-
模組或檔案 header 補上版本資訊
這些事情常常最容易被忽略,因為它們不會像新功能一樣立刻被看見。
但真正長期的系統,成本最高的往往不是「開發新功能」,而是「幾週後沒有人知道這個功能是何時、為何、在哪一版進來的」。
所以這週持續做的這些工程紀律工作,本質上是在保護未來的維護成本。
這不只是文件整理,而是在建立系統的歷史可追溯性。
七、DEV 到 STG 的交付流程:開始更清楚地把「開發完成」與「可交付」分開
本週也花了不少力氣處理 DEV 與 STG 間的同步、tag、patch、git apply、git restore、git pull 衝突等實務問題。
這些事情通常不會出現在產品展示裡,但對工程現場來說,它們非常真實。
因為一旦系統開始進入跨環境驗證,便會很清楚地發現:
-
程式寫完,不等於功能真正完成
-
功能完成,不等於可以穩定部署
-
可以部署,不等於 STG 一定能順利同步
因此,本週也逐步整理出更清楚的交付意識:
-
哪些步驟應在 DEV 執行
-
哪些動作應在 STG 執行
-
何時應 commit
-
何時適合打 tag
-
哪些本地修改必須先清掉
-
哪些環境差異不能靠臨時手動修補來掩蓋
這些經驗雖然帶有不少摩擦成本,但它們其實是平台走向成熟必經的路。
八、本週遇到的真實挑戰
這一週的開發,不是單純一路往前衝,也同步暴露了一些很值得重視的現實問題。
1. 樣式層的歷史累積開始需要整理
隨著多輪快速迭代,像 admin.css、共用 layout、Dashboard / Explain 相關樣式,開始出現較高的維護壓力。
這並不代表前面的做法錯,而是系統已經走到需要「收斂樣式治理」的階段。
2. 模板路徑並存,容易誤改非實際生效檔案
像 api/templates/* 與 admin/templates/* 並存的情況,在快速開發中很常見。但一旦沒有先確認 route 實際掛載的是哪一份模板,就很容易出現「改了卻沒生效」的情況。
這提醒我們,未來在模板與前端資源治理上,還需要更進一步收斂。
3. STG 與 DEV 狀態不一致
這是本週最典型的現實問題之一。
尤其當某些問題曾在 STG 上做過手動修補、DB insert 或 update 時,如果源頭沒有回到 DEV 真正修正,後續就會反覆出現類似問題。
這也再次說明:臨時修復可以救急,但真正能降低成本的,永遠是源頭修正。
4. 功能若沒有同步補文件,很快就失去可追溯性
本週的工作再次證明,文件與版本並不是可有可無的附屬品。
只要變更沒有即時寫進 CHANGELOG、工作紀錄或版本資訊,幾天後就很容易失去脈絡。
九、本週的整體收穫:CL3 正從功能集合,逐步走向平台產品
若只看局部,本週好像做了很多「不夠炫」的事情:
-
補翻譯
-
改 Header
-
補版本資訊
-
修 Admin 流程
-
調整樣式
-
處理部署與同步問題
但若從系統發展的視角來看,本週真正重要的收穫其實是:
CL3 正在逐步具備平台產品該有的樣子。
一個真正可長期演進的系統,不是靠堆很多功能,而是靠這些更本質的能力:
-
架構清楚
-
資料可信
-
介面可理解
-
維護流程可複製
-
錯誤不容易被悄悄掩蓋
-
版本與歷史可追蹤
這一週做的事情,正是在打這些基礎。
十、下週方向
接下來,CL3 的下一步可以更聚焦在以下幾個方向:
1. 完成 Admin driver 防呆體驗
優先推進:
-
ALLIANZ catalog picker
-
YFINANCE ticker search / validate picker
讓資產建立流程從人工自由輸入,逐步轉向受控且可驗證的輸入方式。
2. 持續補齊多語系
先優先處理高頻區塊:
-
Dashboard 主要卡片與欄位
-
Assets 區塊
-
Admin 常用操作文案
-
Help Center / Explain 頁面內容
3. 強化 Help Center 與系統說明層
讓 CL3 不只是能跑,也能更清楚地對外說明:
-
這套系統是什麼
-
它如何運作
-
它如何支援決策
-
它與一般看盤工具的差異
4. 持續收斂 DEV → STG 交付流程
把版本、tag、更新步驟與驗證節點持續整理清楚,逐步降低交付摩擦成本。
結語:值得做的事,就值得把基礎打穩
這一週,不一定是最亮眼的一週,
但從 CL3 的長期發展來看,我認為這是一週很有價值的累積。
因為平台真正的力量,不是來自某個單一華麗功能,
而是來自每一次願意把基礎做對、把細節做穩、把結構拉直的選擇。
CL3 還在路上。
還有很多地方要補、要修、要整理、要升級。
但至少這一週,我們清楚地往前走了一步:
從能跑,走向可信;
從可用,走向可維護;
從工具,走向平台。
這條路不一定快,
但它會越走越穩。


留言
張貼留言