專案介紹
大型企業級 Monorepo 前端專案,服務於 TikTok 線上廣告海外增長業務線,涵蓋媒體資產管理、財務結算、供應商採購、數據看板等多個業務領域。專案採用統一的技術架構和工程規範,支持多個業務子系統的協同開發與獨立部署,管理 50+ 子專案,百萬級程式碼規模。
我負責的模組橫跨兩個子系統:財務結算(合約管理、報價、結算單)與廣告採購(需求提交、審批流、評分任務、廣告採購流程)。
重大成就
Web Worker 多線程 CSV 校驗
CSV 格式校驗原本在前端主執行緒進行,資料量大時常造成 UI 卡住。我導入 Web Worker 多線程計算系統,將校驗工作移至獨立執行緒,並解決了公司內部 Armor 框架下使用 Web Worker 的相容性限制(Blob URL、Comlink、Module Worker)。校驗規則採 Yup + Regex 建構的 Schema,並抽象為可複用的公共工具。
此設計成功在 10 萬筆資料中 減少了 90% 的 UI 卡頓時間
函數快取工具優化渲染效能
專案內部使用了自研的表單渲染引擎來加速大型表單的開發,這個渲染引擎需要提供表單內容抽象化的 JS object,其中也包含了 onChange 等函數用於連動表單不同欄位的互動。
而這個引擎的重大效能缺陷是:每渲染表單就要計算一遍整個 schema。當表單內容很多,並且類型為 array 的時候,此效能缺陷造成的弊端會被顯著放大,肉眼可見的影響就是 UI 交互卡死,長時間等待表單生成。
為了解決這個問題,我做了兩個簡單的小工具函數
cache/cacheMany。模仿 ReactuseMemo,將計算結果快取進 Map,或是根據傳進來的參數為 key,存進多個 Map。利用這個小技巧加上其他常規優化手段,我成功讓一個沒有做分頁,一次要渲染 500 個表單 UI 的介面,其 Total Blocking Time (TBT) 降低了 98%
技術亮點
- 01
複雜表單互動元件開發
基於內部自研的 JSON Schema 動態表單渲染解決方案,開發大量業務表單互動元件,涵蓋級聯選擇、動態欄位、條件顯示等複雜場景,實現配置驅動的表單渲染,支援複雜校驗規則與欄位聯動邏輯
- 02
高精度數值計算處理
針對財務、報價等業務場景的 JavaScript 浮點數精度問題,實作浮點數精度計算方案
- 03
微前端整合
透過公司自研框架實現子應用動態載入,支援按需載入業務模組與獨立開發部署
- 04
國際化多語系
透過自研線上翻譯平台,在 runtime 獲取最新翻譯文件,實現多語系支援與動態更新
- 05
LLM 合約 AI 校驗功能開發
打造全端 AI 校驗系統,以多模態大型語言模型解析合約文件,對照動態規則逐條校驗後決定是否阻斷提交。亮點:規則由線上設定平台管理,可隨時新增、修改、停用,無需改程式碼;規則分為強制阻斷與純警告兩種類型,AI 高置信度不通過才觸發阻斷;使用者可填寫說明否決強制卡點,系統記錄結果供審計;實作 DB 查詢 Tool Call 並加 SQL 過濾層確保唯讀,讓模型可依規則需求自由取得系統資料;接入文件轉 Markdown 的 MCP,讓模型能統一處理 PDF、Word、Excel 等各種格式的合約文件
成效:每週校驗 6–7 份合約,每月省下約 5 人天(person-day)的人力
準確度與語料庫:模型初期對不同範例結構的合約辨識度不佳,後來將常見結構的合約放入語料庫(包含錯誤合約範例與正確合約範例),告知模型哪種文字敘述通常對應什麼規則,模型的判斷力逐漸變好,仍持續優化中
評估(eval):修改 prompt 時以上述語料庫測試,通過才會上線;使用公司自研、內部免費使用的模型(Doubao),未更換過模型,不需考慮金錢成本
追蹤(tracing):模型的每次對話內容由 Go 寫入線上 log 系統,可從該系統追查判斷原因
延遲處理:為因應模型延遲,將合約提交從同步改為非同步,使用者提交後平均約 5 分鐘收到通知,再返回頁面查看結果