Skip to content

v1.1.3

Latest

Choose a tag to compare

@aimidy aimidy released this 23 Oct 08:00
· 1 commit to main since this release

🧩 修正項目:Negated Rule Error Handling

此次更新重點針對 evaluateCondition
函式在處理「否定(not)」邏輯時的錯誤行為進行了修正。
原本在錯誤發生時,系統可能誤將結果反轉為 true,導致條件判斷不準確。
此版本解決了該問題,確保當條件觸發 onError 時,返回結果為
false,而不會被錯誤地反轉。


🔍 主要變更內容

  1. 新增錯誤標識常數
    引入 EVALUATION_ERROR 符號以明確區分正常邏輯結果與異常情況。

  2. 重構核心邏輯

    • 將 evaluateCondition 拆分為
      evaluateConditionInternal,以更清楚地控制錯誤傳遞與回傳值。\
    • 在多層巢狀結構(如 any、all 群組)中,若遇錯誤,系統會標記
      encounteredError 並傳回
      EVALUATION_ERROR,而非直接反轉布林值。\
    • 若最終結果為 EVALUATION_ERROR,則會回傳 false。
  3. 測試覆蓋

    • 新增單元測試,確保 negated 條件與群組在觸發 onError
      時均不會被誤判為 true。\
    • 強化 onError 呼叫次數驗證,確保異常狀況被正確攔截。

✅ 改進效果

  • 準確性提升:錯誤不再導致條件結果反轉。\
  • 測試可靠度提升:擴充單元測試確保各種組合條件下邏輯正確。\
  • 可維護性提升:重構後的程式結構更清晰、錯誤傳遞機制更一致。

🧠 開發者備註

此修正特別針對使用 not
關鍵字的規則在遇到未知運算子或執行錯誤時的判定問題。
若你在整合規則引擎時使用自訂運算子,請留意 onError
回呼的正確設置,避免誤判情形。

What's Changed

  • Prevent negated rules from masking evaluation errors by @aimidy in #1

New Contributors

  • @aimidy made their first contribution in #1

Full Changelog: v1.1.2...v1.1.3