Jelajahi Sumber

fix: AIReviewEngine 在调试上下文中 task_file_info 为 None 导致崩溃

调试执行器创建 AIReviewEngine 时不传 task_file_info(调试模式下无真实文件),
__init__ 直接访问 .file_id 导致 AttributeError。
添加 None 安全访问保护所有 task_file_info 字段。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
WangXuMing 1 Minggu lalu
induk
melakukan
1d65144c66
1 mengubah file dengan 5 tambahan dan 5 penghapusan
  1. 5 5
      core/construction_review/component/ai_review_engine.py

+ 5 - 5
core/construction_review/component/ai_review_engine.py

@@ -141,11 +141,11 @@ class AIReviewEngine(BaseReviewer):
         # ✅ 保存 TaskFileInfo 实例
         self.task_info = task_file_info
 
-        self.file_id = task_file_info.file_id
-        self.callback_task_id = task_file_info.callback_task_id
-        self.user_id = task_file_info.user_id
-        self.project_plan_type = task_file_info.project_plan_type
-        self.tendency_review_role = task_file_info.tendency_review_role
+        self.file_id = task_file_info.file_id if task_file_info else None
+        self.callback_task_id = task_file_info.callback_task_id if task_file_info else None
+        self.user_id = task_file_info.user_id if task_file_info else None
+        self.project_plan_type = task_file_info.project_plan_type if task_file_info else None
+        self.tendency_review_role = task_file_info.tendency_review_role if task_file_info else None
 
         self.max_concurrent_reviews = max_concurrent_reviews
         self.semaphore = asyncio.Semaphore(max_concurrent_reviews)