Jelajahi Sumber

v0.0.3-解决第一个processing_flag丢失问题

WangXuMing 2 bulan lalu
induk
melakukan
e1501b591f
1 mengubah file dengan 33 tambahan dan 26 penghapusan
  1. 33 26
      core/construction_review/workflows/ai_review_workflow.py

+ 33 - 26
core/construction_review/workflows/ai_review_workflow.py

@@ -618,35 +618,42 @@ class AIReviewCoreFun:
             current: 当前进度
         """
         try:
-            if isinstance(issues, list) and issues and state["progress_manager"]:
-                stage_name = f"AI审查:{section_label}"
-                # 正确统计:只统计真正存在的问题数量
-                issues_count = sum(
-                    1 for issue in issues
-                    for issue_data in issue.values()
-                    for review_item in issue_data.get("review_lists", [])
-                    if review_item.get("exist_issue", False)
-                )
+            # 🔧 修复:全局进度更新应该总是执行,与是否存在问题无关
+            if state["progress_manager"]:
+                # 计算问题数量(可以为0)
+                issues_count = 0
+                if isinstance(issues, list) and issues:
+                    issues_count = sum(
+                        1 for issue in issues
+                        for issue_data in issue.values()
+                        for review_item in issue_data.get("review_lists", [])
+                        if review_item.get("exist_issue", False)
+                    )
+
+                # 全局进度更新移到外层,总是执行
                 await self._send_unit_overall_progress(state, unit_index, total_units, section_label, issues_count)
 
-                # 同步等待进度消息推送完成,确保与主流程同步
-                await state["progress_manager"].update_stage_progress(
-                    callback_task_id=state["callback_task_id"],
-                    stage_name=stage_name,
-                    current=current,
-                    status="unit_review_update",
-                    message=f"发现{issues_count}个问题: {section_label}",
-                    issues=issues,
-                    user_id=state.get("user_id", ""),
-                    overall_task_status="processing",
-                    event_type="unit_review"
-                )
+                # 🔧 修复:unit_review事件只在有问题时发送
+                if issues_count > 0:
+                    stage_name = f"AI审查:{section_label}"
+                    await state["progress_manager"].update_stage_progress(
+                        callback_task_id=state["callback_task_id"],
+                        stage_name=stage_name,
+                        current=current,
+                        status="unit_review_update",
+                        message=f"发现{issues_count}个问题: {section_label}",
+                        issues=issues,
+                        user_id=state.get("user_id", ""),
+                        overall_task_status="processing",
+                        event_type="unit_review"
+                    )
+
+                    # 清空当前issues
+                    await state["progress_manager"].update_stage_progress(
+                        callback_task_id=state["callback_task_id"],
+                        issues=['clear']
+                    )
 
-                # 清空当前issues
-                await state["progress_manager"].update_stage_progress(
-                    callback_task_id=state["callback_task_id"],
-                    issues=['clear']
-                )
         except Exception as e:
             logger.warning(f"发送单元审查详情失败: {str(e)}")