diff --git a/server/handlers.js b/server/handlers.js index e0001a5..7fcf244 100644 --- a/server/handlers.js +++ b/server/handlers.js @@ -168,8 +168,8 @@ function handleAIResult(aiResult, roomId, username, originalText, attachments) { } if (aiResult.action === 'query') { - storeAndBroadcastText(roomId, '小财', '🔍 正在查询采购数据,请稍候...'); - const purchaseData = db.prepare('SELECT item, amount, payment_method, status FROM purchases WHERE room_id = ? ORDER BY created_at DESC').all(roomId).map(p => p.item + ' ' + p.amount + ' ' + (p.payment_method||'') + ' ' + p.status).join('\n'); + broadcastToRoom(roomId, { type: 'query_pending', text: '🔍 正在查询采购数据,请稍候...' }); + const purchaseData = db.prepare('SELECT item, amount, payment_method, status, created_at FROM purchases WHERE room_id = ? ORDER BY created_at DESC').all(roomId).map(p => p.created_at + ' ' + p.item + ' ¥' + p.amount + ' ' + (p.payment_method||'') + ' ' + p.status).join('\n'); const summaryPrompt = '根据以下采购记录,用自然语言回答用户查询"' + originalText + '"。采购记录:\n' + (purchaseData || '暂无记录'); callDeepSeekForSummary(summaryPrompt, username).then(reply => { storeAndBroadcastText(roomId, '小财', reply); addToHistory(roomId, 'assistant', reply); }); return; diff --git a/server/public/js/chat.js b/server/public/js/chat.js index 9a2a7f6..e6269c0 100644 --- a/server/public/js/chat.js +++ b/server/public/js/chat.js @@ -170,6 +170,15 @@ function clearTempBubble() { tempEls.forEach(function(el) { el.remove(); }); } +function showTempBubble(text) { + clearTempBubble(); + var tempId = 'temp_' + Date.now(); + var tempMsg = { id: tempId, user: '小财', text: text, attachments: [], timestamp: '', isTemp: true }; + Store.messageCache.push(tempMsg); + messagesContainer.insertAdjacentHTML('beforeend', renderMessageHTML(tempMsg)); + scrollToBottom(); +} + // 双指缩放 + 拖拽 function initPinchZoom(img) { var scale = 1, startDist = 0, startScale = 1; diff --git a/server/public/js/ws.js b/server/public/js/ws.js index 047318b..cb965a3 100644 --- a/server/public/js/ws.js +++ b/server/public/js/ws.js @@ -19,6 +19,8 @@ function initWebSocket() { const room = Store.rooms.find(r => r.id === data.room_preview.room_id); if (room) { room.last_message = data.room_preview.last_message; room.last_time = data.room_preview.last_time; renderChatList(); } } + } else if (data.type === 'query_pending') { + if (Store.currentRoom === roomId) showTempBubble(data.text); } else if (data.type === 'purchase_updated') { if (Store.currentRoom) loadPurchases(); updateSummaryPreview();