|
@@ -187,7 +187,7 @@ async def launch_review_sse(request_data: LaunchReviewRequest):
|
|
|
|
|
|
|
|
# 从callback_task_id中提取file_id (格式: file_id-timestamp)
|
|
# 从callback_task_id中提取file_id (格式: file_id-timestamp)
|
|
|
file_id = callback_task_id.rsplit('-', 1)[0] if '-' in callback_task_id else callback_task_id
|
|
file_id = callback_task_id.rsplit('-', 1)[0] if '-' in callback_task_id else callback_task_id
|
|
|
-
|
|
|
|
|
|
|
+ logger.info(f"处理文件: {file_id}")
|
|
|
# 发送处理状态
|
|
# 发送处理状态
|
|
|
status_data = json.dumps({
|
|
status_data = json.dumps({
|
|
|
"callback_task_id": callback_task_id,
|
|
"callback_task_id": callback_task_id,
|
|
@@ -197,16 +197,16 @@ async def launch_review_sse(request_data: LaunchReviewRequest):
|
|
|
}, ensure_ascii=False)
|
|
}, ensure_ascii=False)
|
|
|
yield format_sse_event("processing", status_data)
|
|
yield format_sse_event("processing", status_data)
|
|
|
|
|
|
|
|
- # 检查重复任务
|
|
|
|
|
- if await duplicatechecker.is_duplicate_task(file_id):
|
|
|
|
|
- error_data = json.dumps({
|
|
|
|
|
- "callback_task_id": callback_task_id,
|
|
|
|
|
- "error": "task_already_exists",
|
|
|
|
|
- "message": "任务已存在,请勿重复提交",
|
|
|
|
|
- "timestamp": datetime.now().isoformat()
|
|
|
|
|
- }, ensure_ascii=False)
|
|
|
|
|
- yield format_sse_event("error", error_data)
|
|
|
|
|
- return
|
|
|
|
|
|
|
+ # 验证任务ID是否存在且未过期
|
|
|
|
|
+ if not await duplicatechecker.is_valid_task_id(callback_task_id):
|
|
|
|
|
+ raise LaunchReviewErrors.task_not_found_or_expired()
|
|
|
|
|
+
|
|
|
|
|
+ # 检查任务是否已经被使用启动审查
|
|
|
|
|
+ if await duplicatechecker.is_task_already_used(callback_task_id):
|
|
|
|
|
+ raise LaunchReviewErrors.task_already_exists()
|
|
|
|
|
+
|
|
|
|
|
+ # 标记任务为已使用
|
|
|
|
|
+ await duplicatechecker.mark_task_as_used(callback_task_id)
|
|
|
|
|
|
|
|
# 获取文件信息
|
|
# 获取文件信息
|
|
|
status_data = json.dumps({
|
|
status_data = json.dumps({
|
|
@@ -219,28 +219,9 @@ async def launch_review_sse(request_data: LaunchReviewRequest):
|
|
|
|
|
|
|
|
file_info = await get_file_info(file_id, include_content=True)
|
|
file_info = await get_file_info(file_id, include_content=True)
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
if not file_info:
|
|
if not file_info:
|
|
|
- error_data = json.dumps({
|
|
|
|
|
- "callback_task_id": callback_task_id,
|
|
|
|
|
- "error": "task_not_found",
|
|
|
|
|
- "message": "任务ID不存在或已过期",
|
|
|
|
|
- "timestamp": datetime.now().isoformat()
|
|
|
|
|
- }, ensure_ascii=False)
|
|
|
|
|
- yield format_sse_event("error", error_data)
|
|
|
|
|
- return
|
|
|
|
|
-
|
|
|
|
|
- # 验证必要的字段
|
|
|
|
|
- if 'file_content' not in file_info:
|
|
|
|
|
- error_data = json.dumps({
|
|
|
|
|
- "callback_task_id": callback_task_id,
|
|
|
|
|
- "error": "missing_content",
|
|
|
|
|
- "message": "文件内容缺失",
|
|
|
|
|
- "timestamp": datetime.now().isoformat()
|
|
|
|
|
- }, ensure_ascii=False)
|
|
|
|
|
- yield format_sse_event("error", error_data)
|
|
|
|
|
- return
|
|
|
|
|
|
|
+ logger.error(f"文件信息获取失败: {file_id}")
|
|
|
|
|
+ raise LaunchReviewErrors.file_info_not_found()
|
|
|
|
|
|
|
|
# 添加审查配置到文件信息
|
|
# 添加审查配置到文件信息
|
|
|
file_info.update({
|
|
file_info.update({
|
|
@@ -266,7 +247,6 @@ async def launch_review_sse(request_data: LaunchReviewRequest):
|
|
|
# 发送成功启动状态
|
|
# 发送成功启动状态
|
|
|
success_data = json.dumps({
|
|
success_data = json.dumps({
|
|
|
"callback_task_id": callback_task_id,
|
|
"callback_task_id": callback_task_id,
|
|
|
- "task_id": task_id,
|
|
|
|
|
"file_id": file_info['file_id'],
|
|
"file_id": file_info['file_id'],
|
|
|
"review_config": review_config,
|
|
"review_config": review_config,
|
|
|
"project_plan_type": project_plan_type,
|
|
"project_plan_type": project_plan_type,
|