Przeglądaj źródła

@
fix: 移除完整性审查LLM遗漏兜底,结果仅输出缺失项

去除 _map_direct_check_to_items 中对LLM未返回标准项的自动补全,
避免给用户展示"LLM输出遗漏,视为未覆盖"这类系统内部兜底信息。
同时 direct_check_items 仅保留 is_covered=False 的条目,
减少覆盖项对用户注意力的分散。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@

WangXuMing 6 dni temu
rodzic
commit
c1e480cca3

+ 4 - 21
core/construction_review/component/reviewers/completeness_reviewer.py

@@ -484,26 +484,6 @@ class LightweightCompletenessChecker:
             })
             covered_codes.add(code)
 
-        # 补充LLM遗漏的标准项
-        for std in standard_items:
-            if std["third_code"] not in covered_codes:
-                items.append({
-                    "standard_code": std["third_code"],
-                    "standard_name": std.get("third_name", ""),
-                    "third_focus": std.get("third_focus", ""),
-                    "first_code": std.get("first_code", ""),
-                    "first_name": std.get("first_name", ""),
-                    "first_seq": std.get("first_seq", 0),
-                    "secondary_code": std.get("secondary_code", ""),
-                    "secondary_name": std.get("secondary_name", ""),
-                    "second_seq": std.get("second_seq", 0),
-                    "third_seq": std.get("third_seq", 0),
-                    "is_covered": False,
-                    "evidence": "",
-                    "reason": "LLM输出遗漏,视为未覆盖",
-                    "confidence": 0.0,
-                })
-
         return items
 
     async def _call_direct_llm_check(
@@ -847,13 +827,16 @@ class LightweightCompletenessChecker:
             chapter_classification=chapter_classification,
         )
 
+        # 仅输出缺失项,避免覆盖项分散注意力
+        missing_only_items = [i for i in direct_items if not i.get("is_covered", True)]
+
         return LightweightCompletenessResult(
             overall_status=overall_status,
             catalogue_check={},
             tertiary_completeness=tertiary_result,
             outline_check=None,
             recommendations=recommendations,
-            direct_check_items=direct_items,
+            direct_check_items=missing_only_items,
             direct_llm_call_count=llm_call_count,
         )
     

+ 0 - 14
utils_test/Completeness_Compare_Test/method_b_direct_llm.py

@@ -570,20 +570,6 @@ def _map_to_items(
             confidence=confidence,
         ))
 
-    # 补充LLM遗漏的标准项
-    covered_codes = {item.standard_code for item in items}
-    for std in standard_items:
-        if std["third_code"] not in covered_codes:
-            items.append(DirectCheckItem(
-                standard_code=std["third_code"],
-                standard_name=std.get("third_name", ""),
-                third_focus=std.get("third_focus", ""),
-                is_covered=False,
-                evidence="LLM未返回该项",
-                reason="LLM输出遗漏,视为未覆盖",
-                confidence=0.0,
-            ))
-
     return items