|
|
@@ -225,11 +225,11 @@ class AIReviewWorkflow:
|
|
|
"""开始节点"""
|
|
|
logger.info(f"AI审查工作流正在启动...: {state['file_id']}")
|
|
|
|
|
|
- state["current_stage"] = "start"
|
|
|
- state["status"] = "processing"
|
|
|
- state["messages"].append(AIMessage(content=""))
|
|
|
-
|
|
|
- return state
|
|
|
+ return {
|
|
|
+ "current_stage": "start",
|
|
|
+ "status": "processing",
|
|
|
+ "messages": [AIMessage(content="")]
|
|
|
+ }
|
|
|
|
|
|
async def _initialize_progress_node(self, state: AIReviewState) -> AIReviewState:
|
|
|
"""初始化进度节点"""
|
|
|
@@ -252,9 +252,9 @@ class AIReviewWorkflow:
|
|
|
else:
|
|
|
logger.warning(f"AI审查工作流中未找到ProgressManager: {state.get('progress_manager', 'None')}")
|
|
|
|
|
|
- state["messages"].append(AIMessage(content="进度初始化完成"))
|
|
|
-
|
|
|
- return state
|
|
|
+ return {
|
|
|
+ "messages": [AIMessage(content="进度初始化完成")]
|
|
|
+ }
|
|
|
|
|
|
async def _ai_review_node(self, state: AIReviewState) -> AIReviewState:
|
|
|
"""
|
|
|
@@ -276,10 +276,10 @@ class AIReviewWorkflow:
|
|
|
if not review_chunks:
|
|
|
logger.warning(f"没有可审查的单元,任务ID: {state['callback_task_id']}")
|
|
|
return {
|
|
|
- **state,
|
|
|
"current_stage": "ai_review",
|
|
|
"error_message": "没有可审查的单元",
|
|
|
- "status": "failed"
|
|
|
+ "status": "failed",
|
|
|
+ "messages": [AIMessage(content=f"没有可审查的单元,任务ID: {state['callback_task_id']}")]
|
|
|
}
|
|
|
|
|
|
# 2. 发送开始审查进度
|
|
|
@@ -359,11 +359,10 @@ class AIReviewWorkflow:
|
|
|
|
|
|
# 返回新的状态,避免原地修改导致的LangGraph冲突
|
|
|
return {
|
|
|
- **state,
|
|
|
"current_stage": "ai_review_completed",
|
|
|
"review_results": review_results,
|
|
|
"status": "completed",
|
|
|
- "messages": state["messages"] + [AIMessage(content="AI审查完成")]
|
|
|
+ "messages": [AIMessage(content="AI审查完成")]
|
|
|
}
|
|
|
|
|
|
except Exception as e:
|
|
|
@@ -371,11 +370,10 @@ class AIReviewWorkflow:
|
|
|
|
|
|
# 返回错误状态
|
|
|
return {
|
|
|
- **state,
|
|
|
"current_stage": "ai_review_failed",
|
|
|
"error_message": str(e),
|
|
|
"status": "failed",
|
|
|
- "messages": state["messages"] + [AIMessage(content=f"AI审查失败: {str(e)}")]
|
|
|
+ "messages": [AIMessage(content=f"AI审查失败: {str(e)}")]
|
|
|
}
|
|
|
|
|
|
async def _save_results_node(self, state: AIReviewState) -> AIReviewState:
|
|
|
@@ -424,16 +422,19 @@ class AIReviewWorkflow:
|
|
|
# event_type="processing"
|
|
|
# )
|
|
|
|
|
|
- # state["current_stage"] = "save_results"
|
|
|
- # state["messages"].append(AIMessage(content=f"审查结果已保存到: {file_path}"))
|
|
|
-
|
|
|
- return state
|
|
|
+ return {
|
|
|
+ "current_stage": "save_results",
|
|
|
+ "messages": [AIMessage(content=f"审查结果已保存到: {file_path}")]
|
|
|
+ }
|
|
|
|
|
|
except Exception as e:
|
|
|
logger.error(f"保存审查结果失败: {str(e)}", exc_info=True)
|
|
|
- state["error_message"] = f"保存结果失败: {str(e)}"
|
|
|
- state["messages"].append(AIMessage(content=f"保存结果失败: {str(e)}"))
|
|
|
- return state
|
|
|
+ return {
|
|
|
+ "current_stage": "save_results_failed",
|
|
|
+ "error_message": f"保存结果失败: {str(e)}",
|
|
|
+ "status": "failed",
|
|
|
+ "messages": [AIMessage(content=f"保存结果失败: {str(e)}")]
|
|
|
+ }
|
|
|
|
|
|
async def _complete_node(self, state: AIReviewState) -> AIReviewState:
|
|
|
"""
|
|
|
@@ -451,9 +452,6 @@ class AIReviewWorkflow:
|
|
|
"""
|
|
|
logger.info(f"AI审查完成: {state['file_id']}")
|
|
|
|
|
|
- state["current_stage"] = "complete"
|
|
|
- state["status"] = "completed"
|
|
|
-
|
|
|
# 更新完成状态
|
|
|
if state["progress_manager"]:
|
|
|
await state["progress_manager"].update_stage_progress(
|
|
|
@@ -466,9 +464,11 @@ class AIReviewWorkflow:
|
|
|
event_type="processing"
|
|
|
)
|
|
|
|
|
|
- state["messages"].append(AIMessage(content="AI审查工作流完成"))
|
|
|
-
|
|
|
- return state
|
|
|
+ return {
|
|
|
+ "current_stage": "complete",
|
|
|
+ "status": "completed",
|
|
|
+ "messages": [AIMessage(content="AI审查工作流完成")]
|
|
|
+ }
|
|
|
|
|
|
async def _error_handler_node(self, state: AIReviewState) -> AIReviewState:
|
|
|
"""
|
|
|
@@ -501,11 +501,11 @@ class AIReviewWorkflow:
|
|
|
event_type="error"
|
|
|
)
|
|
|
|
|
|
- state["messages"].append(AIMessage(
|
|
|
- content=f"错误处理: {state['error_message']}"
|
|
|
- ))
|
|
|
-
|
|
|
- return state
|
|
|
+ return {
|
|
|
+ "status": "failed",
|
|
|
+ "current_stage": "error_handler",
|
|
|
+ "messages": [AIMessage(content=f"错误处理: {state['error_message']}")]
|
|
|
+ }
|
|
|
|
|
|
def _get_workflow_graph(self):
|
|
|
"""获取工作流图(可视化输出)"""
|