visuddhinanda 8 месяцев назад
Родитель
Сommit
f76cf9db92
1 измененных файлов с 49 добавлено и 29 удалено
  1. 49 29
      ai-translate/ai_translate/service.py

+ 49 - 29
ai-translate/ai_translate/service.py

@@ -188,14 +188,15 @@ class AiTranslateService:
             s_uid = self._get_sentence_id(message.sentence)
 
             # 写入句子 discussion
-            topic_children = []
-            # 任务结果
-            topic_children.append(response_llm['content'])
-            # 推理过程写入discussion
-            if response_llm.get('reasoningContent'):
-                topic_children.append(response_llm['reasoningContent'])
-            self._sentence_discussion(
-                s_uid, message.prompt, topic_children)
+            if s_uid:
+                topic_children = []
+                # 任务结果
+                topic_children.append(response_llm['content'])
+                # 推理过程写入discussion
+                if response_llm.get('reasoningContent'):
+                    topic_children.append(response_llm['reasoningContent'])
+                self._sentence_discussion(
+                    s_uid, message.prompt, topic_children)
 
             # 修改task 完成度
             progress = self._set_task_progress(
@@ -492,29 +493,34 @@ class AiTranslateService:
 
     def _get_sentence_id(self, sentence: Sentence) -> str:
         """获取句子ID"""
-        url = f"{self.api_url}/v2/sentence-info/aa"
-        logger.info(f'ai translate: {url}')
-
-        params = {
-            'book': sentence.book_id,
-            'par': sentence.paragraph,
-            'start': sentence.word_start,
-            'end': sentence.word_end,
-            'channel': sentence.channel_uid
-        }
-
-        headers = {'Authorization': f'Bearer {self.model_token}'}
-        response = requests.get(
-            url, params=params, headers=headers, timeout=self.api_timeout)
-
-        if not response.json().get('ok'):
-            logger.error(f'{self.queue} sentence id error: {response.json()}')
+        try:
+            url = f"{self.api_url}/v2/sentence-info/aa"
+            logger.info(f'ai translate: {url}')
+
+            params = {
+                'book': sentence.book_id,
+                'par': sentence.paragraph,
+                'start': sentence.word_start,
+                'end': sentence.word_end,
+                'channel': sentence.channel_uid
+            }
+
+            headers = {'Authorization': f'Bearer {self.model_token}'}
+            response = requests.get(
+                url, params=params, headers=headers, timeout=self.api_timeout)
+
+            if not response.json().get('ok'):
+                logger.error(
+                    f'{self.queue} sentence id error: {response.text}')
+                return False
+
+            s_uid = response.json()['data']['id']
+            logger.debug(f"sentence id={s_uid}")
+            return s_uid
+        except Exception as e:
+            logger.error(f"error: {e}")
             return False
 
-        s_uid = response.json()['data']['id']
-        logger.debug(f"sentence id={s_uid}")
-        return s_uid
-
     def _set_task_progress(self, current: TaskProgress) -> int:
         """设置任务进度"""
         if current.total > 0:
@@ -580,3 +586,17 @@ class AiTranslateService:
                 )
         except Exception as e:
             logger.error(f'处理失败ai任务时出错: {str(e)}')
+
+    def handle_complete(self):
+        try:
+            # 将故障信息写入task discussion
+            if self.task_topic_id:
+                d_id = self._task_discussion(
+                    self.task.id,
+                    'task',
+                    '任务处理完成',
+                    '任务处理完成',
+                    self.task_topic_id
+                )
+        except Exception as e:
+            logger.error(f'处理任务完成时出错: {str(e)}')