|
|
@@ -97,9 +97,10 @@ class AIReviewCoreFun:
|
|
|
|
|
|
self.max_concurrent = 20
|
|
|
|
|
|
- # 延迟导入 WorkflowManager(避免循环导入)
|
|
|
- from core.base.workflow_manager import WorkflowManager
|
|
|
- self.workflow_manager = WorkflowManager()
|
|
|
+ # 延迟导入 workflow_manager 单例(避免循环导入:
|
|
|
+ # core.base.workflow_manager 顶部已经 import 了本模块所属包)
|
|
|
+ from core.base.workflow_manager import workflow_manager
|
|
|
+ self.workflow_manager = workflow_manager
|
|
|
|
|
|
async def _process_chapter_item(
|
|
|
self,
|
|
|
@@ -269,7 +270,8 @@ class AIReviewCoreFun:
|
|
|
logger.debug("开始执行RAG检索增强")
|
|
|
rag_enhanced_content = self.ai_review_engine.rag_enhanced_check(chunk.get('content', ''))
|
|
|
|
|
|
- if ('reference_basis_reviewer' in func_names or 'timeliness_basis_reviewer' in func_names) and not is_complete_field:
|
|
|
+ if ('reference_basis_reviewer' in func_names or 'timeliness_reviewer' in func_names or
|
|
|
+ 'timeliness_basis_reviewer' in func_names or 'timeliness_content_reviewer' in func_names) and not is_complete_field:
|
|
|
logger.debug("开始执行编制依据/时效性预处理")
|
|
|
# 预处理编制依据/时效性审查所需内容
|
|
|
basis_content = await directory_extraction.extract_basis_with_langchain_qwen(
|
|
|
@@ -392,6 +394,19 @@ class AIReviewCoreFun:
|
|
|
is_sse_push=True
|
|
|
)
|
|
|
|
|
|
+ elif func_name == "grammar_check" and not is_complete_field:
|
|
|
+ raw_result = await method(trace_id, review_content, state, stage_name)
|
|
|
+ # 基础审查方法,放入 basic_compliance
|
|
|
+ return UnitReviewResult(
|
|
|
+ unit_index=chunk_index,
|
|
|
+ unit_content=chunk,
|
|
|
+ basic_compliance={func_name: raw_result},
|
|
|
+ technical_compliance={},
|
|
|
+ rag_enhanced={},
|
|
|
+ overall_risk=self._calculate_single_result_risk(raw_result),
|
|
|
+ is_sse_push=True
|
|
|
+ )
|
|
|
+
|
|
|
elif func_name == "check_semantic_logic" and not is_complete_field:
|
|
|
raw_result = await method(trace_id, review_content, state, stage_name)
|
|
|
# 基础审查方法,放入 basic_compliance
|
|
|
@@ -503,11 +518,12 @@ class AIReviewCoreFun:
|
|
|
|
|
|
|
|
|
|
|
|
- # reference_basis_reviewer:编制依据审查(逐块处理)
|
|
|
+ # reference_basis_reviewer:规范性审查(逐块处理,支持basis和其他章节)
|
|
|
elif func_name == "reference_basis_reviewer" and not is_complete_field:
|
|
|
review_data = {
|
|
|
"content": review_content, # 原始文本内容
|
|
|
- "basis_items": basis_content, # 提取的 BasisItems 对象
|
|
|
+ "basis_items": basis_content, # 提取的 BasisItems 对象(basis章节使用)
|
|
|
+ "chapter_code": chapter_code, # 章节代码
|
|
|
"max_concurrent": self.max_concurrent
|
|
|
}
|
|
|
raw_result = await method(
|
|
|
@@ -527,37 +543,11 @@ class AIReviewCoreFun:
|
|
|
is_sse_push=True
|
|
|
)
|
|
|
|
|
|
- # timeliness_basis_reviewer:时效性审查(逐块处理)
|
|
|
- elif func_name == "timeliness_basis_reviewer" and not is_complete_field:
|
|
|
+ # timeliness_reviewer:统一的时效性审查入口(支持basis和content两种来源)
|
|
|
+ elif func_name in ("timeliness_basis_reviewer", "timeliness_content_reviewer", "timeliness_reviewer") and not is_complete_field:
|
|
|
review_data = {
|
|
|
"content": review_content, # 原始文本内容
|
|
|
- "basis_items": basis_content, # 提取的 BasisItems 对象
|
|
|
- "max_concurrent": self.max_concurrent
|
|
|
- }
|
|
|
- raw_result = await method(
|
|
|
- review_data=review_data,
|
|
|
- trace_id=trace_id,
|
|
|
- state=state,
|
|
|
- stage_name=stage_name
|
|
|
- )
|
|
|
- # 基础审查方法,放入 basic_compliance
|
|
|
- return UnitReviewResult(
|
|
|
- unit_index=chunk_index,
|
|
|
- unit_content=chunk,
|
|
|
- basic_compliance={func_name: raw_result},
|
|
|
- technical_compliance={},
|
|
|
- rag_enhanced={},
|
|
|
- overall_risk=self._calculate_single_result_risk(raw_result),
|
|
|
- is_sse_push=True
|
|
|
- )
|
|
|
-
|
|
|
- # timeliness_content_reviewer:三级分类内容时效性审查(逐块处理)
|
|
|
- elif func_name == "timeliness_content_reviewer" and not is_complete_field:
|
|
|
- # 从chunk中获取三级分类详情
|
|
|
- tertiary_details = chunk.get("tertiary_classification_details", [])
|
|
|
- review_data = {
|
|
|
- "tertiary_classification_details": tertiary_details, # 三级分类详情
|
|
|
- "max_concurrent": 4
|
|
|
+ "basis_items": basis_content, # 提取的 BasisItems 对象(可能为None)
|
|
|
}
|
|
|
raw_result = await method(
|
|
|
review_data=review_data,
|