fix issues
This commit is contained in:
@@ -42,7 +42,7 @@ function buildSystemPrompt(username, isAdmin) {
|
||||
- 信息不完整 → action="ask" 追问
|
||||
- 新建 vs 更新:
|
||||
* "昨天/今天/又/再/新/另一批"等重复购买 → is_new: true(强制新建)
|
||||
* "改一下/更新/修改/调整"等 → 不提供 is_new(匹配已有更新)
|
||||
* "改一下/更新/修改/调整/更正/搞错了/不对/错了/不是XX是YY"等纠正意图 → 不提供 is_new(匹配已有更新)
|
||||
* "纯图片+物品名"不是新建,不要返回 is_new
|
||||
* 无法确定 → 默认 is_new: true
|
||||
- amount 由系统自动计算(quantity × unit_price + freight),AI 无需提供
|
||||
|
||||
@@ -127,6 +127,14 @@ function handleAIResult(aiResult, roomId, username, originalText, attachments) {
|
||||
}
|
||||
if (!isNew && !purchase) {
|
||||
purchase = db.prepare('SELECT * FROM purchases WHERE room_id = ? AND item LIKE ? AND status != ?').get(roomId, `%${aiResult.purchase_item}%`, '已完成');
|
||||
// 全名匹配失败 → 用物品名核心关键词(去括号内容)再次尝试
|
||||
if (!purchase) {
|
||||
const keyword = aiResult.purchase_item.replace(/[((].*[))]/g, '').trim();
|
||||
if (keyword.length >= 2 && keyword !== aiResult.purchase_item) {
|
||||
console.log('🔍 全名不匹配,尝试关键词:', keyword);
|
||||
purchase = db.prepare('SELECT * FROM purchases WHERE room_id = ? AND item LIKE ? AND status != ?').get(roomId, `%${keyword}%`, '已完成');
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log('📦 purchase_item:', aiResult.purchase_item, isNew ? '(强制新建)' : purchase ? '(匹配已有)' : '(未匹配-新建)');
|
||||
|
||||
|
||||
@@ -65,6 +65,8 @@ function renderAllMessages(msgs) {
|
||||
}
|
||||
|
||||
function appendMessage(msg) {
|
||||
// 去重:轮询和 WebSocket 可能投递同一条消息
|
||||
if (Store.messageCache.some(m => m.id === msg.id)) return;
|
||||
Store.messageCache.push(msg);
|
||||
messagesContainer.insertAdjacentHTML('beforeend', renderMessageHTML(msg));
|
||||
scrollToBottom();
|
||||
|
||||
@@ -60,11 +60,17 @@ async function analyzeWithDeepSeek(text, historyMessages, username, isAdmin) {
|
||||
];
|
||||
const content = await callDeepSeek(messages, 0.1);
|
||||
console.log('🤖 AI 返回:', content);
|
||||
try {
|
||||
const parsed = JSON.parse(content.replace(/```json|```/g, '').trim());
|
||||
normalize(parsed);
|
||||
const v = validate(parsed);
|
||||
if (!v.valid) console.warn('⚠️ AI 返回校验失败:', v.error);
|
||||
return parsed;
|
||||
} catch (e) {
|
||||
// AI 返回非 JSON(如纯文本回复图片消息)→ 降级为 chat
|
||||
console.warn('⚠️ AI 返回非 JSON,降级为 chat:', content.substring(0, 50));
|
||||
return { action: 'chat', reply: content };
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user