소스 검색

增加生成图片或视频失败时的中文错误提示映射方法

lh 1 주 전
부모
커밋
e1ef9bd65e
3개의 변경된 파일52개의 추가작업 그리고 5개의 파일을 삭제
  1. 3 3
      app/Http/Controllers/Anime/AnimeController.php
  2. 45 0
      app/Libs/Helpers.php
  3. 4 2
      app/Services/Anime/AnimeService.php

+ 3 - 3
app/Http/Controllers/Anime/AnimeController.php

@@ -623,7 +623,7 @@ class AnimeController extends BaseController
                             'task_id' => $task->id,
                             'status' => $task->status,
                             'result_url' => $task->result_url,
-                            'error_message' => $task->error_message,
+                            'error_message' => $task->error_message ? mapErrorMessage($task->error_message) : '',
                             'elapsed_time' => time() - $startTime
                         ]
                     ]) . "\n\n";
@@ -643,7 +643,7 @@ class AnimeController extends BaseController
                                 'video_url' => $task->compressed_url ?: $task->result_url,
                                 'origin_video_url' => $task->result_url,
                                 'last_frame_url' => $task->last_frame_url,
-                                'error_message' => $task->error_message
+                                'error_message' => $task->error_message ? mapErrorMessage($task->error_message) : ''
                             ]
                         ]) . "\n\n";
                         ob_flush();
@@ -2552,7 +2552,7 @@ class AnimeController extends BaseController
                                 'video_url' => $task->compressed_url ?: $task->result_url,
                                 'origin_video_url' => $task->result_url,
                                 'last_frame_url' => $task->last_frame_url,
-                                'error_message' => $task->error_message
+                                'error_message' => $task->error_message ? mapErrorMessage($task->error_message) : ''
                             ]
                         ]) . "\n\n";
                         ob_flush();

+ 45 - 0
app/Libs/Helpers.php

@@ -4243,3 +4243,48 @@ function filterScriptContent($content) {
 }
 
 
+
+/**
+ * 根据错误信息返回映射错误说明
+ *
+ * @param string $errorMessage 错误信息
+ * @return string 映射后的错误说明
+ */
+function mapErrorMessage($errorMessage)
+{
+    if (empty($errorMessage)) {
+        return '未知异常,请重试';
+    }
+
+    // 按优先级匹配错误信息
+    if (stripos($errorMessage, 'OutputImageSensitiveContentDetected') !== false) {
+        return '输出结果含有敏感词,请重试';
+    }
+
+    if (stripos($errorMessage, '系统繁忙,请稍后再试') !== false) {
+        return '系统繁忙,请稍后再试';
+    }
+
+    if (stripos($errorMessage, 'InternalServiceError') !== false) {
+        return '外部服务器网络错误,请稍后重试';
+    }
+
+    if (stripos($errorMessage, 'InputTextSensitiveContentDetected') !== false) {
+        return '输入文字含有敏感词,请调整后重试';
+    }
+
+    if (stripos($errorMessage, 'ServerOverloaded') !== false) {
+        return '当前系统过载,请稍后重试';
+    }
+
+    if (stripos($errorMessage, 'The request failed because the output video may be related to copyright restrictions') !== false) {
+        return '涉及到版权问题无法生成,请调整后重试';
+    }
+
+    if (stripos($errorMessage, 'sensitive') !== false) {
+        return '含有敏感词,请调整后重试';
+    }
+
+    // 默认返回
+    return '未知异常,请重试';
+}

+ 4 - 2
app/Services/Anime/AnimeService.php

@@ -5052,7 +5052,8 @@ class AnimeService
                         $img_url = is_array($result_urls) ? $result_urls[0] : $task->result_url;
                         break;
                     } elseif ($task->status === 'failed') {
-                        Utils::throwError('20003:图片生成失败,' . ($task->error_message ?? '未知错误'));
+                        $errorMsg = mapErrorMessage($task->error_message ?? '');
+                        Utils::throwError('20003:图片生成失败,' . $errorMsg);
                     }
                     
                     // // 如果还在处理中,提示用户稍后查看
@@ -5077,7 +5078,8 @@ class AnimeService
                         dLog('anime')->error('图片生成失败,', [
                             'error' => $statusInfo['error_message'] ?? '未知错误'
                         ]);
-                        Utils::throwError('20003:图片生成失败,' . ($statusInfo['error_message'] ?? '未知错误'));
+                        $errorMsg = mapErrorMessage($statusInfo['error_message'] ?? '');
+                        Utils::throwError('20003:图片生成失败,' . $errorMsg);
                     }
                 }
             }