/** * 真实用户消息功能测试脚本 * 用于验证fetchHistoryMessages和handleHistoryMessages函数对真实用户ID的处理 */ // 模拟测试数据 const mockRealUserData = { userId: "user_1763452685075_rea007flq", isRealUserId: true, isManager: true, managerId: 22 }; // 模拟消息数据 const mockMessages = [ { message_id: "msg_001", sender_id: "user_1763452685075_rea007flq", receiver_id: "manager_22", content: "这是一条来自真实用户的消息", created_at: Date.now() - 3600000, content_type: 1 }, { message_id: "msg_002", sender_id: "manager_22", receiver_id: "user_1763452685075_rea007flq", content: "这是客服回复的消息", created_at: Date.now() - 3500000, content_type: 1 }, { message_id: "msg_003", sender_id: "user_1763452685075_rea007flq", receiver_id: "manager_22", content: "这是真实用户的第二条消息", created_at: Date.now() - 3400000, content_type: 1 } ]; console.log('\n=== 真实用户消息功能测试 ==='); console.log('测试数据:', mockRealUserData); console.log('模拟消息数量:', mockMessages.length); // 模拟fetchHistoryMessages中对真实用户ID的处理 function simulateRealUserIdProcessing(data) { console.log('\n1. 测试真实用户ID识别...'); // 模拟识别逻辑 const isRealUserId = data.isRealUserId || (data.userId && data.userId.startsWith('user_') && data.userId.includes('_rea')); console.log('- 识别结果:', isRealUserId ? '✅ 成功识别为真实用户ID' : '❌ 未能识别为真实用户ID'); return isRealUserId; } // 模拟构建请求数据 function simulateRequestData(isRealUserId, data) { console.log('\n2. 测试请求数据构建...'); const requestData = { type: 'get_messages', conversationId: "test_conversation", page: 1, limit: 100, userId: "manager_22", targetUserId: data.userId, userType: data.isManager ? 'manager' : 'user', managerId: data.isManager ? data.managerId : undefined, timestamp: Date.now(), isRealUser: isRealUserId, queryByUserId: true }; // 真实用户特殊处理 if (isRealUserId) { requestData.real_user_id = data.userId; } console.log('- 构建的请求数据:'); console.log(' - 是否包含isRealUser标志:', requestData.isRealUser !== undefined); console.log(' - 是否包含real_user_id:', requestData.real_user_id !== undefined); console.log(' - 是否包含queryByUserId:', requestData.queryByUserId !== undefined); return requestData; } // 模拟消息格式化和处理 function simulateMessageProcessing(messages, userId) { console.log('\n3. 测试消息格式化和处理...'); // 模拟格式化逻辑 const formattedMessages = messages.map(msg => { const senderId = msg.sender_id || msg.senderId || ''; const isRealUserMessage = senderId === userId || (senderId && senderId.startsWith('user_') && senderId.includes('_rea')); return { id: msg.message_id, content: msg.content, senderId: senderId, receiverId: msg.receiver_id || msg.receiverId || '', isRealUserMessage: isRealUserMessage, time: new Date(msg.created_at).toLocaleString(), timestamp: msg.created_at }; }); // 模拟排序 formattedMessages.sort((a, b) => a.timestamp - b.timestamp); // 统计真实用户消息 const realUserMessages = formattedMessages.filter(msg => msg.isRealUserMessage); console.log('- 格式化后的消息总数:', formattedMessages.length); console.log('- 识别出的真实用户消息数量:', realUserMessages.length); console.log('- 真实用户消息详情:'); realUserMessages.forEach(msg => { console.log(` - 消息ID: ${msg.id}, 内容: ${msg.content.substring(0, 20)}...`); }); return { allMessages: formattedMessages, realUserMessages: realUserMessages }; } // 运行完整测试 function runFullTest() { try { console.log('\n🚀 开始执行完整测试流程...'); // 1. 测试真实用户ID识别 const isRealUserId = simulateRealUserIdProcessing(mockRealUserData); // 2. 测试请求数据构建 const requestData = simulateRequestData(isRealUserId, mockRealUserData); // 3. 测试消息格式化和处理 const processedData = simulateMessageProcessing(mockMessages, mockRealUserData.userId); // 4. 验证结果 console.log('\n4. 验证最终结果...'); let allTestsPassed = true; // 验证真实用户ID识别 if (!isRealUserId) { console.log('❌ 测试失败: 未能正确识别真实用户ID'); allTestsPassed = false; } // 验证请求数据包含必要字段 if (!requestData.isRealUser || !requestData.real_user_id) { console.log('❌ 测试失败: 请求数据缺少必要的真实用户字段'); allTestsPassed = false; } // 验证真实用户消息识别 if (processedData.realUserMessages.length !== 2) { console.log(`❌ 测试失败: 预期识别2条真实用户消息,实际识别${processedData.realUserMessages.length}条`); allTestsPassed = false; } // 输出最终结果 console.log('\n=== 测试结果汇总 ==='); if (allTestsPassed) { console.log('✅ 所有测试通过!真实用户消息功能正常工作'); } else { console.log('❌ 部分测试失败,请检查代码实现'); } return allTestsPassed; } catch (error) { console.error('\n❌ 测试执行过程中出错:', error.message); return false; } } // 执行测试 const testResult = runFullTest(); console.log('\n=== 测试完成 ==='); // 导出测试函数供其他模块使用 module.exports = { runTest: runFullTest, mockRealUserData, mockMessages };