Files
AIclinicalresearch/backend/debug-qc.ts

74 lines
2.3 KiB
TypeScript

/**
* 调试脚本:检查质控数据和规则
*/
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
console.log('=== 调试质控数据 ===\n');
// 1. 查找项目
const projects = await prisma.iitProject.findMany({
select: { id: true, name: true }
});
console.log('所有项目:', projects);
// 找 test0207 项目
const project = projects.find(p => p.name?.includes('test0207') || p.id?.includes('test0207'));
if (!project) {
console.log('未找到 test0207 项目');
await prisma.$disconnect();
return;
}
console.log('\n选中项目:', project);
// 2. 查看质控规则
const skills = await prisma.iitSkill.findMany({
where: { projectId: project.id },
select: { name: true, skillType: true, config: true }
});
console.log('\n质控技能:', skills.map(s => ({ name: s.name, type: s.skillType })));
// 找 qc_process 类型的规则
const qcSkill = skills.find(s => s.skillType === 'qc_process');
if (qcSkill) {
console.log('\n质控规则配置:');
const config = qcSkill.config as any;
if (config?.rules) {
for (const rule of config.rules) {
console.log(` - ${rule.id}: ${rule.name}, field: ${rule.field}, message: ${rule.message}`);
}
}
}
// 3. 查看最近的质控日志
const logs = await prisma.iitQcLog.findMany({
where: { projectId: project.id },
take: 3,
orderBy: { createdAt: 'desc' },
select: { recordId: true, status: true, issues: true, createdAt: true }
});
console.log('\n最近质控日志:');
for (const log of logs) {
console.log(` Record ${log.recordId}: ${log.status}`);
const issues = log.issues as any;
if (issues?.items) {
console.log(` Issues (${issues.items.length}):`, issues.items.slice(0, 2).map((i: any) => i.ruleName));
} else if (Array.isArray(issues)) {
console.log(` Issues (${issues.length}):`, issues.slice(0, 2).map((i: any) => i.ruleName || i.message));
}
}
// 4. 查看 REDCap 适配器配置
const projectFull = await prisma.iitProject.findUnique({
where: { id: project.id },
select: { redcapUrl: true, redcapProjectId: true }
});
console.log('\nREDCap 配置:', { url: projectFull?.redcapUrl, projectId: projectFull?.redcapProjectId });
await prisma.$disconnect();
}
main().catch(console.error);