74 lines
2.3 KiB
TypeScript
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);
|