瀏覽代碼

v0.0.8-debug
- 调整完整性审查输出字段位置格式,恢复前端显示

WangXuMing 1 月之前
父節點
當前提交
29ddb51fec

+ 42 - 15
core/construction_review/component/ai_review_engine.py

@@ -767,27 +767,41 @@ class AIReviewEngine(BaseReviewer):
                 # 构建reference_source(使用一级分类名称作为参考来源)
                 reference_source = "《桥梁公司危险性较大工程管理实施细则(2025版)》"
                 
+                # 转换风险等级为英文(用于risk_info)
+                risk_level_en = "high" if "高" in risk_level else ("medium" if "中" in risk_level else "low")
+                
+                # 构建与参数合规审查格式一致的结果
                 response_items.append({
-                    "issue_point": issue_point,
-                    "risk_level": risk_level,
-                    "location": location_str,
-                    "suggestion": suggestion,
-                    "reason": reason,
-                    "review_references": review_references,
-                    "reference_source": reference_source
+                    "check_item": "completeness_check",
+                    "chapter_code": chapter_code if chapter_code != "all" else first_name,
+                    "check_item_code": f"{chapter_code if chapter_code != 'all' else first_name}_completeness_check",
+                    "check_result": {
+                        "issue_point": issue_point,
+                        "location": location_str,
+                        "suggestion": suggestion,
+                        "reason": reason,
+                        "risk_level": risk_level
+                    },
+                    "exist_issue": True,
+                    "risk_info": {"risk_level": risk_level_en}
                 })
             
             # 如果没有缺失项,显示完整度
             if not response_items:
                 completeness_rate = result_dict.get('tertiary_completeness', {}).get('completeness_rate', '0%')
                 response_items.append({
-                    "issue_point": f"【内容完整】三级分类覆盖完整,完整率: {completeness_rate}",
-                    "risk_level": "低风险",
-                    "location": chapter_name or "全文档",
-                    "suggestion": "",
-                    "reason": "",
-                    "review_references": "",
-                    "reference_source": ""
+                    "check_item": "completeness_check",
+                    "chapter_code": chapter_code if chapter_code != "all" else "all",
+                    "check_item_code": f"{chapter_code if chapter_code != 'all' else 'all'}_completeness_check",
+                    "check_result": {
+                        "issue_point": f"【内容完整】三级分类覆盖完整,完整率: {completeness_rate}",
+                        "location": chapter_name or "全文档",
+                        "suggestion": "",
+                        "reason": "",
+                        "risk_level": "低风险"
+                    },
+                    "exist_issue": False,
+                    "risk_info": {"risk_level": "low"}
                 })
             
             execution_time = time.time() - start_time
@@ -832,7 +846,20 @@ class AIReviewEngine(BaseReviewer):
             error_result = {
                 "details": {
                     "name": "completeness_check",
-                    "response": [{"issue_point": f"【审查异常】{error_msg}", "risk_level": "高风险", "location": chapter_name or chapter_code, "suggestion": "请检查系统配置或联系管理员", "reason": ""}],
+                    "response": [{
+                        "check_item": "completeness_check",
+                        "chapter_code": chapter_code if chapter_code != "all" else "unknown",
+                        "check_item_code": f"{chapter_code if chapter_code != 'all' else 'unknown'}_completeness_check",
+                        "check_result": {
+                            "issue_point": f"【审查异常】{error_msg}",
+                            "location": chapter_name or chapter_code,
+                            "suggestion": "请检查系统配置或联系管理员",
+                            "reason": "",
+                            "risk_level": "高风险"
+                        },
+                        "exist_issue": True,
+                        "risk_info": {"risk_level": "high"}
+                    }],
                     "review_location_label": "三级完整性审查",
                     "chapter_code": chapter_code,
                     "original_content": ""

+ 51 - 11
core/construction_review/component/reviewers/check_completeness/completeness_checker.py

@@ -811,7 +811,7 @@ def result_to_dict(result: CompletenessResult) -> Dict[str, Any]:
     Returns:
         Dict[str, Any]: 字典格式的结果
     """
-    # 转换风险等级为标准格式
+    # 转换风险等级为标准格式(英文)
     def convert_risk_level(risk: str) -> str:
         risk_lower = str(risk).lower()
         if "高" in risk_lower or "high" in risk_lower:
@@ -820,29 +820,69 @@ def result_to_dict(result: CompletenessResult) -> Dict[str, Any]:
             return "medium"
         else:
             return "low"
+    
+    # 转换风险等级为中文格式(用于 check_result 中的 risk_level)
+    def convert_risk_level_cn(risk: str) -> str:
+        risk_lower = str(risk).lower()
+        if "高" in risk_lower or "high" in risk_lower:
+            return "高风险"
+        elif "中" in risk_lower or "medium" in risk_lower:
+            return "中风险"
+        else:
+            return "低风险"
+    
+    # 从 location 中提取章节代码
+    def extract_chapter_code(location: str, issue_point: str) -> str:
+        """从 location 或 issue_point 中提取章节代码"""
+        # 章节名称到代码的映射
+        chapter_map = {
+            "编制依据": "basis",
+            "工程概况": "overview",
+            "施工计划": "plan",
+            "施工工艺技术": "technology",
+            "安全保证措施": "safety",
+            "质量保证措施": "quality",
+            "环境保证措施": "environment",
+            "施工管理及作业人员配备与分工": "management",
+            "验收要求": "acceptance",
+            "应急处置措施": "emergency",
+            "其他资料": "other",
+            "目录": "catalogue"
+        }
+        
+        # 先从 location 中查找
+        for cn_name, code in chapter_map.items():
+            if cn_name in location:
+                return code
+        
+        # 再从 issue_point 中查找
+        for cn_name, code in chapter_map.items():
+            if cn_name in issue_point:
+                return code
+        
+        # 默认返回 completeness
+        return "completeness"
 
     # 构建 response 列表,格式与参数合规审查一致
     response_list = []
     for issue in result.issues:
-        risk_level = convert_risk_level(issue.risk_level)
+        risk_level_en = convert_risk_level(issue.risk_level)
+        risk_level_cn = convert_risk_level_cn(issue.risk_level)
+        chapter_code = extract_chapter_code(issue.location, issue.issue_point)
+        
         response_list.append({
             "check_item": "completeness_check",
-            "chapter_code": "completeness",
-            "check_item_code": "completeness_check",
+            "chapter_code": chapter_code,
+            "check_item_code": f"{chapter_code}_completeness_check",
             "check_result": {
                 "issue_point": issue.issue_point,
                 "location": issue.location,
                 "suggestion": issue.suggestion,
                 "reason": issue.reason,
-                "reference_source": issue.reference_source
+                "risk_level": risk_level_cn
             },
             "exist_issue": True,
-            "risk_info": {"risk_level": risk_level},
-            # 兼容字段(保留原有字段,便于前端展示)
-            "location": issue.location,
-            "suggestion": issue.suggestion,
-            "reason": issue.reason,
-            "reference_source": issue.reference_source
+            "risk_info": {"risk_level": risk_level_en}
         })
 
     return {

+ 2 - 8
core/construction_review/component/reviewers/check_completeness/components/result_analyzer.py

@@ -296,16 +296,10 @@ class ResultAnalyzer(IResultAnalyzer):
                     "location": row.get("section_label", ""),
                     "suggestion": suggestion,
                     "reason": f"根据《桥梁公司危险性较大工程管理实施细则(2025版)》,{section_label}的'{level2_name}'应包含:{requirement}。当前缺失:{missing_content_text}",
-                    "reference_source": reference_source
+                    "risk_level": risk_level
                 },
                 "exist_issue": True,
-                "risk_info": {"risk_level": risk_level_std},
-                # 兼容字段(保留原有字段,便于前端展示)
-                "location": row.get("section_label", ""),
-                "suggestion": suggestion,
-                "reason": f"根据《桥梁公司危险性较大工程管理实施细则(2025版)》,{section_label}的'{level2_name}'应包含:{requirement}。当前缺失:{missing_content_text}",
-                "review_references": review_references,
-                "reference_source": reference_source
+                "risk_info": {"risk_level": risk_level_std}
             }
             all_issues.append(issue_item)
             # with open("temp/construction_review/document_temp/missing_points.json", "w", encoding="utf-8") as f:

+ 2 - 8
core/construction_review/component/reviewers/check_completeness/tertiary_completeness_checker.py

@@ -693,16 +693,10 @@ def result_to_dict(result: CompletenessResult) -> Dict[str, Any]:
                 "location": issue.location,
                 "suggestion": issue.suggestion,
                 "reason": issue.reason,
-                "reference_source": issue.reference_source,
-                "missing_focus": issue.missing_focus
+                "risk_level": issue.risk_level
             },
             "exist_issue": True,
-            "risk_info": {"risk_level": risk_level},
-            # 兼容字段(保留原有字段,便于前端展示)
-            "location": issue.location,
-            "suggestion": issue.suggestion,
-            "reason": issue.reason,
-            "reference_source": issue.reference_source
+            "risk_info": {"risk_level": risk_level}
         })
 
     return {