diff --git a/hina/rule_engine/confusion_groups.py b/hina/rule_engine/confusion_groups.py index 0e48280..40f1d85 100644 --- a/hina/rule_engine/confusion_groups.py +++ b/hina/rule_engine/confusion_groups.py @@ -69,8 +69,8 @@ def resolve_dedup_vs_nodedup(features: dict) -> dict: evidence.append("WS-PREV-KEY 存在 → 含重复") return {"resolved_type": "項目チェック(重複含む)", "confidence": 0.90, "evidence": evidence} else: - evidence.append("未检测到 WS-PREV-KEY → 不含重复") - return {"resolved_type": "項目チェック(重複含まず)", "confidence": 0.85, "evidence": evidence} + evidence.append("未检测到 WS-PREV-KEY → 可能不含重复(置信度低:缺少 WS-PREV-KEY 不代表一定是项目检查)") + return {"resolved_type": "項目チェック(重複含まず)", "confidence": 0.50, "evidence": evidence} def resolve_validation_vs_keybreak(features: dict) -> dict: @@ -90,8 +90,8 @@ def resolve_validation_vs_keybreak(features: dict) -> dict: return {"resolved_type": "編集処理(校验)", "confidence": 0.85, "evidence": evidence} if has_counter: - evidence.append("WS-*CNT 计数器存在 → キーブレイク") - return {"resolved_type": "キーブレイク", "confidence": 0.80, "evidence": evidence} + evidence.append("WS-*CNT 计数器存在 → 可能キーブレイク(置信度低:计数器是通用模式,非决定性证据)") + return {"resolved_type": "キーブレイク", "confidence": 0.55, "evidence": evidence} evidence.append("既无错误字段也无计数器,无法判定") return {"resolved_type": "unknown", "confidence": 0.0, "evidence": evidence} @@ -134,8 +134,8 @@ def resolve_simple_vs_two_stage(features: dict) -> dict: evidence.append("OPEN→CLOSE→再OPEN 模式 → 二级匹配") return {"resolved_type": "二段階マッチング", "confidence": 0.90, "evidence": evidence} else: - evidence.append(f"OPEN 模式为 '{open_pattern}' → 简单匹配") - return {"resolved_type": "単純マッチング", "confidence": 0.80, "evidence": evidence} + evidence.append(f"OPEN 模式为 '{open_pattern}' → 默认为単純マッチング(非決定的: 无 OPEN-CLOSE-OPEN 模式不代表一定是匹配程序)") + return {"resolved_type": "単純マッチング", "confidence": 0.50, "evidence": evidence} def resolve_pure_vs_mixed(features: dict) -> dict: diff --git a/tests/hina/test_rule_engine.py b/tests/hina/test_rule_engine.py index 3173d67..be650a0 100644 --- a/tests/hina/test_rule_engine.py +++ b/tests/hina/test_rule_engine.py @@ -82,11 +82,11 @@ def test_dedup_vs_nodedup_dedup(): def test_dedup_vs_nodedup_nodedup(): - """WS-PREV-KEY 不存在 → 不含重复""" + """WS-PREV-KEY 不存在 → 不含重复(低确信度:无 WS-PREV-KEY 不代表一定是项目检查)""" features = {"variable_patterns": {"has_prev_key": False, "has_accumulator": False, "has_error_field": False}} result = resolve_dedup_vs_nodedup(features) assert result["resolved_type"] == "項目チェック(重複含まず)" - assert result["confidence"] >= 0.70 + assert result["confidence"] >= 0.30 # ═══════════════════════════════════════════════════════════════════════════ @@ -102,11 +102,11 @@ def test_validation_vs_keybreak_validation(): def test_validation_vs_keybreak_keybreak(): - """WS-*CNT 计数器存在 → キーブレイク""" + """WS-*CNT 计数器存在 → キーブレイク(低确信度:计数器是通用模式)""" features = {"variable_patterns": {"has_error_field": False, "has_counter": True, "has_prev_key": False}} result = resolve_validation_vs_keybreak(features) assert result["resolved_type"] == "キーブレイク" - assert result["confidence"] >= 0.75 + assert result["confidence"] >= 0.40 def test_validation_vs_keybreak_unknown(): @@ -163,11 +163,11 @@ def test_simple_vs_two_stage_two_stage(): def test_simple_vs_two_stage_simple(): - """顺序 OPEN → 简单匹配""" + """顺序 OPEN → 简单匹配(低确信度:非 OPEN-CLOSE-OPEN 不代表一定是匹配程序)""" features = {"open_pattern": "sequential"} result = resolve_simple_vs_two_stage(features) assert result["resolved_type"] == "単純マッチング" - assert result["confidence"] >= 0.75 + assert result["confidence"] >= 0.40 # ═══════════════════════════════════════════════════════════════════════════