From c254602531058535e861c3def575f6d03a25277a Mon Sep 17 00:00:00 2001 From: Minidoracat Date: Sat, 14 Jun 2025 08:33:32 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E6=AD=A3=E8=87=AA?= =?UTF-8?q?=E5=8B=95=E6=8F=90=E4=BA=A4=E7=9A=84=E8=99=95=E7=90=86=E9=82=8F?= =?UTF-8?q?=E8=BC=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/static/js/app.js | 8 ++-- .../js/modules/prompt/prompt-settings-ui.js | 27 +++++++++--- .../web/static/js/modules/settings-manager.js | 42 ++++++++++++++++++- 3 files changed, 67 insertions(+), 10 deletions(-) diff --git a/src/mcp_feedback_enhanced/web/static/js/app.js b/src/mcp_feedback_enhanced/web/static/js/app.js index 454d4bb..1a106ab 100644 --- a/src/mcp_feedback_enhanced/web/static/js/app.js +++ b/src/mcp_feedback_enhanced/web/static/js/app.js @@ -1154,11 +1154,13 @@ } else { console.log('⚠️ 自動提交提示詞驗證失敗:', { promptExists: !!prompt, - isAutoSubmit: prompt ? prompt.isAutoSubmit : false + isAutoSubmit: prompt ? prompt.isAutoSubmit : false, + reason: !prompt ? '提示詞不存在' : '提示詞未標記為自動提交' }); - // 清空無效的自動提交設定 + // 只清空無效的 promptId,保留用戶的 autoSubmitEnabled 設定 + // 這樣避免因為提示詞問題而強制關閉用戶的自動提交偏好 this.settingsManager.set('autoSubmitPromptId', null); - this.settingsManager.set('autoSubmitEnabled', false); + console.log('🔧 已清空無效的 autoSubmitPromptId,保留 autoSubmitEnabled 設定:', autoSubmitEnabled); } } diff --git a/src/mcp_feedback_enhanced/web/static/js/modules/prompt/prompt-settings-ui.js b/src/mcp_feedback_enhanced/web/static/js/modules/prompt/prompt-settings-ui.js index cef0c67..94398ac 100644 --- a/src/mcp_feedback_enhanced/web/static/js/modules/prompt/prompt-settings-ui.js +++ b/src/mcp_feedback_enhanced/web/static/js/modules/prompt/prompt-settings-ui.js @@ -396,16 +396,31 @@ // 同步更新設定管理器中的自動提交提示詞 ID if (this.settingsManager) { console.log('🔄 updateAutoSubmitSelect 設定前:', this.settingsManager.get('autoSubmitPromptId')); + const currentAutoSubmitEnabled = this.settingsManager.get('autoSubmitEnabled'); + if (autoSubmitPromptId) { - this.settingsManager.set('autoSubmitPromptId', autoSubmitPromptId); - this.settingsManager.set('autoSubmitEnabled', true); - console.log('🔄 updateAutoSubmitSelect 同步設定:', autoSubmitPromptId); + // 檢查狀態一致性:如果設定中的 promptId 與找到的不一致,以找到的為準 + const currentPromptId = this.settingsManager.get('autoSubmitPromptId'); + if (currentPromptId !== autoSubmitPromptId) { + console.log('🔧 狀態不一致,修正 autoSubmitPromptId:', currentPromptId, '->', autoSubmitPromptId); + this.settingsManager.set('autoSubmitPromptId', autoSubmitPromptId); + } + + // 不自動改變 autoSubmitEnabled 的值,完全尊重用戶的設定 + // updateAutoSubmitSelect 只負責同步 promptId 和下拉選單顯示 + console.log('🔄 updateAutoSubmitSelect 同步 promptId,保持 autoSubmitEnabled 狀態:', { + promptId: autoSubmitPromptId, + enabled: currentAutoSubmitEnabled + }); } else { + // 沒有找到自動提交提示詞,清空 promptId 但完全保留 enabled 狀態 this.settingsManager.set('autoSubmitPromptId', null); - this.settingsManager.set('autoSubmitEnabled', false); - console.log('🔄 updateAutoSubmitSelect 清空設定'); + console.log('🔄 updateAutoSubmitSelect 清空 promptId,完全保留 autoSubmitEnabled 狀態:', currentAutoSubmitEnabled); } - console.log('🔄 updateAutoSubmitSelect 設定後:', this.settingsManager.get('autoSubmitPromptId')); + console.log('🔄 updateAutoSubmitSelect 設定後:', { + promptId: this.settingsManager.get('autoSubmitPromptId'), + enabled: this.settingsManager.get('autoSubmitEnabled') + }); } else { console.warn('⚠️ updateAutoSubmitSelect: settingsManager 未設定,無法同步設定'); } diff --git a/src/mcp_feedback_enhanced/web/static/js/modules/settings-manager.js b/src/mcp_feedback_enhanced/web/static/js/modules/settings-manager.js index 5a5c982..37b7bf8 100644 --- a/src/mcp_feedback_enhanced/web/static/js/modules/settings-manager.js +++ b/src/mcp_feedback_enhanced/web/static/js/modules/settings-manager.js @@ -677,11 +677,51 @@ if (!promptId || promptId === '') { self.set('autoSubmitPromptId', null); self.set('autoSubmitEnabled', false); - console.log('清除自動提交設定'); + + // 同時清除所有提示詞的 isAutoSubmit 標記 + if (window.feedbackApp && window.feedbackApp.promptManager) { + window.feedbackApp.promptManager.clearAutoSubmitPrompt(); + console.log('🔄 已清除所有提示詞的自動提交標記'); + } else { + console.warn('⚠️ promptManager 未找到,無法清除提示詞標記'); + } + + // 觸發狀態變更事件,更新相關 UI 組件 + self.triggerAutoSubmitStateChange(false); + + // 更新 UI 元素(按鈕狀態、倒數計時器等) + self.applyAutoSubmitSettingsToUI(); + + console.log('清除自動提交設定並更新 UI'); } else { // 設定新的自動提交提示詞 self.set('autoSubmitPromptId', promptId); console.log('設定自動提交提示詞 ID:', promptId); + + // 同時更新對應提示詞的 isAutoSubmit 標記 + if (window.feedbackApp && window.feedbackApp.promptManager) { + try { + window.feedbackApp.promptManager.setAutoSubmitPrompt(promptId); + console.log('🔄 已設定提示詞的自動提交標記:', promptId); + + // 觸發狀態變更事件,更新相關 UI 組件 + const currentEnabled = self.get('autoSubmitEnabled'); + self.triggerAutoSubmitStateChange(currentEnabled); + + // 更新 UI 元素 + self.applyAutoSubmitSettingsToUI(); + + console.log('🔄 已更新自動提交 UI 狀態'); + } catch (promptError) { + console.error('❌ 設定提示詞自動提交標記失敗:', promptError); + // 如果設定提示詞失敗,回滾設定 + self.set('autoSubmitPromptId', null); + e.target.value = ''; + throw promptError; + } + } else { + console.warn('⚠️ promptManager 未找到,無法設定提示詞標記'); + } } } catch (error) { Utils.showMessage(error.message, Utils.CONSTANTS.MESSAGE_ERROR);