feat(iit): Implement event-level QC architecture V3.1 with dynamic rule filtering, report deduplication and AI intent enhancement
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
71
backend/debug-qc-2.ts
Normal file
71
backend/debug-qc-2.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
* 调试脚本:检查 REDCap 实际数据和字段映射
|
||||
*/
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
import { RedcapAdapter } from './src/modules/iit-manager/adapters/RedcapAdapter.js';
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
async function main() {
|
||||
console.log('=== 调试 REDCap 数据 ===\n');
|
||||
|
||||
// 1. 获取项目配置
|
||||
const project = await prisma.iitProject.findFirst({
|
||||
where: { name: { contains: 'test0207' } },
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
redcapUrl: true,
|
||||
redcapApiToken: true,
|
||||
fieldMappings: true
|
||||
}
|
||||
});
|
||||
|
||||
if (!project) {
|
||||
console.log('未找到项目');
|
||||
await prisma.$disconnect();
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('项目:', { id: project.id, name: project.name });
|
||||
console.log('字段映射配置:', JSON.stringify(project.fieldMappings, null, 2));
|
||||
|
||||
// 2. 从 REDCap 获取 record_id=1 的实际数据
|
||||
const adapter = new RedcapAdapter(project.redcapUrl, project.redcapApiToken);
|
||||
|
||||
try {
|
||||
const record = await adapter.getRecordById('1');
|
||||
console.log('\n=== REDCap Record ID=1 实际数据 ===');
|
||||
console.log(JSON.stringify(record, null, 2));
|
||||
|
||||
// 特别检查年龄相关字段
|
||||
console.log('\n=== 年龄相关字段 ===');
|
||||
const ageFields = Object.entries(record || {}).filter(([key]) =>
|
||||
key.toLowerCase().includes('age') ||
|
||||
key.toLowerCase().includes('年龄') ||
|
||||
key.toLowerCase().includes('birth') ||
|
||||
key.toLowerCase().includes('出生')
|
||||
);
|
||||
console.log('年龄相关字段:', ageFields);
|
||||
|
||||
// 显示所有字段名
|
||||
console.log('\n=== 所有字段名 ===');
|
||||
console.log(Object.keys(record || {}).join(', '));
|
||||
|
||||
} catch (error: any) {
|
||||
console.error('REDCap 查询失败:', error.message);
|
||||
}
|
||||
|
||||
// 3. 检查字段映射表
|
||||
const fieldMappings = await prisma.iitFieldMapping.findMany({
|
||||
where: { projectId: project.id },
|
||||
});
|
||||
console.log('\n=== 字段映射表 ===');
|
||||
for (const m of fieldMappings) {
|
||||
console.log(` ${m.aliasName} -> ${m.actualName}`);
|
||||
}
|
||||
|
||||
await prisma.$disconnect();
|
||||
}
|
||||
|
||||
main().catch(console.error);
|
||||
Reference in New Issue
Block a user