Files
AIclinicalresearch/backend/src/modules/iit-manager/test-chatservice-dify.ts
HaHafeng 98d862dbd4 feat(aia): Complete AIA V2.0 and sync all changes
AIA V2.0 Major Updates:
- Add StreamingService with OpenAI Compatible format (backend/common/streaming)
- Upgrade Chat component V2 with Ant Design X deep integration
- Implement 12 intelligent agents (5 phases: topic/design/review/data/writing)
- Create AgentHub with 100% prototype V11 restoration
- Create ChatWorkspace with fullscreen immersive experience
- Add ThinkingBlock for deep thinking display
- Add useAIStream Hook for stream handling
- Add ConversationList for conversation management

Backend (~1300 lines):
- common/streaming: OpenAI adapter and streaming service
- modules/aia: 12 agents config, conversation service, attachment service
- Unified API routes to /api/v1 (RVW, PKB, AIA modules)
- Update authentication and permission helpers

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace + AgentCard components
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream, useConversations
- Update all modules API endpoints to v1
- Modern design with theme colors (blue/yellow/teal/purple)

Documentation (~2500 lines):
- AIA module status and development guide
- Universal capabilities catalog (11 services)
- Quick reference card
- System overview updates
- All module documentation synchronization

Other Updates:
- DC Tool C: Python operations and frontend components
- IIT Manager: session memory and wechat service
- PKB/RVW/ASL: API route updates
- Docker configs and deployment scripts
- Database migrations and scripts
- Test files and documentation

Tested: AIA streaming verified, authentication working, core features functional
Status: AIA V2.0 completed (85%), all changes synchronized
2026-01-14 19:19:00 +08:00

146 lines
3.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 测试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));
// 测试2CRF相关问题应该触发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);
});