From 34cfd1e344f265cff6fb306868127bdf0b3b6373 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Fri, 7 Feb 2025 04:23:34 +0900 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/DialogController.php | 12 +++++++++- language/original-web.txt | 1 + .../manage/components/DialogView/text.vue | 2 +- .../pages/manage/components/DialogWrapper.vue | 24 +++++++++++++++---- resources/assets/js/store/actions.js | 10 ++++++++ .../sass/pages/components/dialog-wrapper.scss | 18 ++++++++++++++ 6 files changed, 61 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Api/DialogController.php b/app/Http/Controllers/Api/DialogController.php index f68e3ff02..5929a831a 100755 --- a/app/Http/Controllers/Api/DialogController.php +++ b/app/Http/Controllers/Api/DialogController.php @@ -1792,6 +1792,8 @@ class DialogController extends AbstractController * @apiName msg__translation * * @apiParam {Number} msg_id 消息ID + * @apiParam {Number} [force] 强制翻译(1是、0否) + * - 默认不强制翻译,已翻译过的消息不再翻译 * @apiParam {String} [language] 目标语言,默认当前语言 * * @apiSuccess {Number} ret 返回状态码(1正确、0错误) @@ -1803,6 +1805,7 @@ class DialogController extends AbstractController User::auth(); // $msg_id = intval(Request::input("msg_id")); + $force = intval(Request::input("force")); $language = Base::inputOrHeader('language'); $targetLanguage = Doo::getLanguages($language); // @@ -1820,13 +1823,20 @@ class DialogController extends AbstractController // $row = WebSocketDialogMsgTranslate::whereMsgId($msg_id)->whereLanguage($language)->first(); if ($row) { - return Base::retSuccess("success", $row->only(['msg_id', 'language', 'content'])); + if ($force) { + $row->delete(); + } else { + return Base::retSuccess("success", $row->only(['msg_id', 'language', 'content'])); + } } // $msgData = Base::json2array($msg->getRawOriginal('msg')); if (empty($msgData['text'])) { return Base::retError("消息内容为空"); } + if ($msg->type === 'text' && $msgData['type'] === 'md') { + $msgData['text'] = preg_replace('/:::\s*reasoning.*?:::/s', '', $msgData['text']); + } $res = Extranet::openAItranslations($msgData['text'], $targetLanguage); if (Base::isError($res)) { return $res; diff --git a/language/original-web.txt b/language/original-web.txt index 4a97eaeef..aaf0afddc 100644 --- a/language/original-web.txt +++ b/language/original-web.txt @@ -1924,3 +1924,4 @@ API请求的基础URL路径,如果没有请留空 欢迎词 仪表盘欢迎词,(*)代表用户昵称 +思考过程 diff --git a/resources/assets/js/pages/manage/components/DialogView/text.vue b/resources/assets/js/pages/manage/components/DialogView/text.vue index df6f2f344..b3ef8390c 100644 --- a/resources/assets/js/pages/manage/components/DialogView/text.vue +++ b/resources/assets/js/pages/manage/components/DialogView/text.vue @@ -10,7 +10,7 @@
{{ translation.label }}
- +

         
     
diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue
index 56ce957d7..56d98fd7a 100644
--- a/resources/assets/js/pages/manage/components/DialogWrapper.vue
+++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue
@@ -3197,7 +3197,7 @@ export default {
             });
         },
 
-        onTranslation() {
+        onTranslation(language = undefined) {
             if (!this.actionPermission(this.operateItem, 'translation')) {
                 return;
             }
@@ -3206,12 +3206,22 @@ export default {
             if (this.isLoad(key)) {
                 return;
             }
+            let force = 0;
+            if (language === 'hidden') {
+                this.$store.dispatch("removeTranslation", key);
+                return;
+            } else if (language === 'retranslation') {
+                this.$store.dispatch("removeTranslation", key);
+                language = undefined;
+                force = 1;
+            }
             this.$store.dispatch("setLoad", key)
             this.$store.dispatch("call", {
                 url: 'dialog/msg/translation',
                 data: {
                     msg_id,
-                    language: this.cacheTranslationLanguage
+                    force,
+                    language: language || this.cacheTranslationLanguage
                 },
             }).then(({data}) => {
                 this.$store.dispatch("saveTranslation", Object.assign(data, {key}));
@@ -3356,14 +3366,20 @@ export default {
                 label: languageList[item],
                 value: item
             }))
+            list.push(...[
+                {label: '重新翻译', value: 'retranslation', divided: true},
+                {label: '隐藏翻译', value: 'hidden'},
+            ])
             this.$store.state.menuOperation = {
                 event,
                 list,
                 active: this.cacheTranslationLanguage,
                 scrollHide: true,
                 onUpdate: async (language) => {
-                    await this.$store.dispatch("setTranslationLanguage", language);
-                    this.onTranslation();
+                    if (languageList[language]) {
+                        await this.$store.dispatch("setTranslationLanguage", language);
+                    }
+                    this.onTranslation(language);
                 }
             }
         },
diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js
index 57d8e5025..39d983b3b 100644
--- a/resources/assets/js/store/actions.js
+++ b/resources/assets/js/store/actions.js
@@ -3594,6 +3594,16 @@ export default {
         $A.IDBSave("cacheTranslations", state.cacheTranslations.slice(-200))
     },
 
+    /**
+     * 删除翻译
+     * @param state
+     * @param key
+     */
+    removeTranslation({state}, key) {
+        state.cacheTranslations = state.cacheTranslations.filter(item => item.key != key)
+        $A.IDBSave("cacheTranslations", state.cacheTranslations.slice(-200))
+    },
+
     /**
      * 设置翻译语言
      * @param state
diff --git a/resources/assets/sass/pages/components/dialog-wrapper.scss b/resources/assets/sass/pages/components/dialog-wrapper.scss
index fe8605e37..79e2b7d65 100644
--- a/resources/assets/sass/pages/components/dialog-wrapper.scss
+++ b/resources/assets/sass/pages/components/dialog-wrapper.scss
@@ -2171,6 +2171,24 @@
             }
         }
     }
+
+    .content-translation {
+        .apply-reasoning {
+            display: none;
+        }
+
+        .apply-create-task {
+            ul {
+                li:last-child {
+                    margin-bottom: 0;
+                }
+            }
+
+            .apply-button {
+                display: none;
+            }
+        }
+    }
 }
 
 body:not(.window-touch) {