From 0d1d082d9ecc905c1a09906d63f06c30c4570d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E8=80=81=E7=99=BD=E5=85=94?= Date: Wed, 29 Oct 2025 16:56:44 +0800 Subject: [PATCH] Add manual AI response generation feature in MessageEnter component. Implement handleManualTriggerAi function to allow users to trigger AI replies on demand. Update weChat store with manualTriggerAi function to manage AI request logic and context retrieval. Enhance UI with a reload button for AI responses in AI modes. --- .../components/MessageEnter/index.tsx | 27 +++++- Touchkebao/src/store/module/weChat/weChat.ts | 97 ++++++++++++++++++- 2 files changed, 118 insertions(+), 6 deletions(-) diff --git a/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/index.tsx b/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/index.tsx index 074f5459..33307856 100644 --- a/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/index.tsx +++ b/Touchkebao/src/pages/pc/ckbox/weChat/components/ChatWindow/components/MessageEnter/index.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from "react"; -import { Layout, Input, Button, Modal, message } from "antd"; +import { Layout, Input, Button, Modal, message, Tooltip } from "antd"; import { SendOutlined, FolderOutlined, @@ -7,6 +7,7 @@ import { ExportOutlined, CloseOutlined, MessageOutlined, + ReloadOutlined, } from "@ant-design/icons"; import { ContractData, weChatGroup, ChatRecord } from "@/pages/pc/ckbox/data"; import { useWebSocketStore } from "@/store/module/websocket/websocket"; @@ -19,6 +20,7 @@ import styles from "./MessageEnter.module.scss"; import { useWeChatStore, clearAiRequestQueue, + manualTriggerAi, } from "@/store/module/weChat/weChat"; import { useContactStore } from "@/store/module/weChat/contacts"; const { Footer } = Layout; @@ -91,6 +93,16 @@ const MessageEnter: React.FC = ({ contract }) => { } }; + // 手动触发AI生成 + const handleManualTriggerAi = async () => { + const success = await manualTriggerAi(); + if (success) { + message.success("AI正在生成回复..."); + } else { + message.warning("无法生成AI回复,请检查消息记录"); + } + }; + // 发送消息(支持传入内容参数,避免闭包问题) const handleSend = async (content?: string) => { const messageContent = content || inputValue; // 优先使用传入的内容 @@ -371,6 +383,19 @@ const MessageEnter: React.FC = ({ contract }) => { } className={styles.toolbarButton} /> + + {/* AI模式下显示重新生成按钮 */} + {(isAiAssist || isAiTakeover) && ( + +