🧩 修正項目:Negated Rule Error Handling
此次更新重點針對 evaluateCondition
函式在處理「否定(not)」邏輯時的錯誤行為進行了修正。
原本在錯誤發生時,系統可能誤將結果反轉為 true,導致條件判斷不準確。
此版本解決了該問題,確保當條件觸發 onError 時,返回結果為
false,而不會被錯誤地反轉。
🔍 主要變更內容
-
新增錯誤標識常數
引入EVALUATION_ERROR符號以明確區分正常邏輯結果與異常情況。 -
重構核心邏輯
- 將
evaluateCondition拆分為
evaluateConditionInternal,以更清楚地控制錯誤傳遞與回傳值。\ - 在多層巢狀結構(如
any、all群組)中,若遇錯誤,系統會標記
encounteredError並傳回
EVALUATION_ERROR,而非直接反轉布林值。\ - 若最終結果為
EVALUATION_ERROR,則會回傳false。
- 將
-
測試覆蓋
- 新增單元測試,確保 negated 條件與群組在觸發
onError
時均不會被誤判為true。\ - 強化
onError呼叫次數驗證,確保異常狀況被正確攔截。
- 新增單元測試,確保 negated 條件與群組在觸發
✅ 改進效果
- 準確性提升:錯誤不再導致條件結果反轉。\
- 測試可靠度提升:擴充單元測試確保各種組合條件下邏輯正確。\
- 可維護性提升:重構後的程式結構更清晰、錯誤傳遞機制更一致。
🧠 開發者備註
此修正特別針對使用 not
關鍵字的規則在遇到未知運算子或執行錯誤時的判定問題。
若你在整合規則引擎時使用自訂運算子,請留意 onError
回呼的正確設置,避免誤判情形。
What's Changed
New Contributors
Full Changelog: v1.1.2...v1.1.3