/** * 测试ChatService的Dify知识库集成 * * 测试场景: * 1. 询问研究方案相关问题(触发Dify检索) * 2. 询问患者数据(触发REDCap查询) * 3. 混合查询(同时涉及文档和数据) */ import { ChatService } from './services/ChatService.js'; const chatService = new ChatService(); async function testDifyIntegration() { console.log('='.repeat(80)); console.log('🧪 测试ChatService的Dify知识库集成'); console.log('='.repeat(80)); console.log(''); const testUserId = 'FengZhiBo'; // 测试1:研究方案相关问题(应该触发Dify检索) console.log('📝 测试1:询问研究的纳入排除标准(应触发Dify检索)'); console.log('-'.repeat(80)); try { const answer1 = await chatService.handleMessage( testUserId, '这个研究的排除标准是什么?' ); console.log('✅ AI回答:'); console.log(answer1); console.log(''); } catch (error: any) { console.error('❌ 测试1失败:', error.message); console.log(''); } // 等待2秒 await new Promise(resolve => setTimeout(resolve, 2000)); // 测试2:CRF相关问题(应该触发Dify检索) console.log('📝 测试2:询问CRF表格内容(应触发Dify检索)'); console.log('-'.repeat(80)); try { const answer2 = await chatService.handleMessage( testUserId, 'CRF表格中有哪些观察指标?' ); console.log('✅ AI回答:'); console.log(answer2); console.log(''); } catch (error: any) { console.error('❌ 测试2失败:', error.message); console.log(''); } // 等待2秒 await new Promise(resolve => setTimeout(resolve, 2000)); // 测试3:患者数据查询(应该触发REDCap查询) console.log('📊 测试3:询问患者记录(应触发REDCap查询)'); console.log('-'.repeat(80)); try { const answer3 = await chatService.handleMessage( testUserId, '查询一下ID 7的患者情况' ); console.log('✅ AI回答:'); console.log(answer3); console.log(''); } catch (error: any) { console.error('❌ 测试3失败:', error.message); console.log(''); } // 等待2秒 await new Promise(resolve => setTimeout(resolve, 2000)); // 测试4:混合查询(可能同时触发Dify和REDCap) console.log('🔀 测试4:混合查询(询问研究目的)'); console.log('-'.repeat(80)); try { const answer4 = await chatService.handleMessage( testUserId, '这个研究的主要研究目的是什么?' ); console.log('✅ AI回答:'); console.log(answer4); console.log(''); } catch (error: any) { console.error('❌ 测试4失败:', error.message); console.log(''); } // 测试5:统计查询(REDCap) console.log('📈 测试5:统计查询(应触发REDCap查询)'); console.log('-'.repeat(80)); try { const answer5 = await chatService.handleMessage( testUserId, '目前有多少位患者入组?' ); console.log('✅ AI回答:'); console.log(answer5); console.log(''); } catch (error: any) { console.error('❌ 测试5失败:', error.message); console.log(''); } console.log('='.repeat(80)); console.log('✅ 测试完成!'); console.log('='.repeat(80)); console.log(''); console.log('📝 测试总结:'); console.log(' - Dify知识库检索(研究方案、CRF)'); console.log(' - REDCap数据查询(患者记录、统计)'); console.log(' - 上下文记忆(SessionMemory)'); console.log(''); console.log('🚀 下一步:企业微信端到端测试'); } // 执行测试 testDifyIntegration().catch(error => { console.error('❌ 测试脚本执行失败:', error); process.exit(1); });