File size: 3,208 Bytes
c2d8817
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/env python3
"""
快速后端测试脚本
"""
import os
import sys
from pathlib import Path

# 设置项目路径
project_root = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(project_root))
os.chdir(project_root)

output_file = project_root / "output" / "quick_test_results.txt"
output_file.parent.mkdir(exist_ok=True)

def log(msg):
    """写入日志"""
    with open(output_file, "a", encoding="utf-8") as f:
        f.write(msg + "\n")
    print(msg)

# 清空文件
with open(output_file, "w") as f:
    f.write("=== NeuroScan 快速测试 ===\n\n")

log("1. 测试模块导入...")

try:
    from app.services.dicom import DicomLoader
    log("   DicomLoader: OK")
except Exception as e:
    log(f"   DicomLoader: FAIL - {e}")

try:
    from app.services.registration import ImageRegistrator
    log("   ImageRegistrator: OK")
except Exception as e:
    log(f"   ImageRegistrator: FAIL - {e}")

try:
    from app.services.analysis import ChangeDetector
    log("   ChangeDetector: OK")
except Exception as e:
    log(f"   ChangeDetector: FAIL - {e}")

try:
    from app.services.report import ReportGenerator
    log("   ReportGenerator: OK")
except Exception as e:
    log(f"   ReportGenerator: FAIL - {e}")

log("\n2. 测试数据加载...")

try:
    loader = DicomLoader()
    data_dir = project_root / "data" / "processed" / "real_lung_001"
    if data_dir.exists():
        baseline = data_dir / "baseline.nii.gz"
        if baseline.exists():
            import nibabel as nib
            img = nib.load(baseline)
            data = img.get_fdata()
            log(f"   加载成功: shape={data.shape}")
        else:
            log(f"   baseline.nii.gz 不存在")
    else:
        log(f"   数据目录不存在: {data_dir}")
except Exception as e:
    log(f"   加载失败: {e}")

log("\n3. 测试报告生成...")

try:
    generator = ReportGenerator(llm_backend="template")
    report = generator.generate_longitudinal_report(
        patient_id="TEST001",
        baseline_date="2025-06-15",
        followup_date="2026-01-28",
        baseline_findings=[{"organ": "肺", "max_diameter_mm": 15.0, "volume_cc": 1.0, "mean_hu": -25, "shape": "圆形", "density_type": "实性"}],
        followup_findings=[{"organ": "肺", "max_diameter_mm": 12.0, "volume_cc": 0.8, "mean_hu": -20, "shape": "圆形", "density_type": "实性"}],
        registration_results={"rigid": "completed"},
        change_results={"changed_voxels": 1000, "change_percent": 0.05},
        modality="CT"
    )
    log(f"   报告生成成功: {len(report)} 字符")
    
    # 保存报告
    report_path = project_root / "output" / "test_longitudinal_report.md"
    with open(report_path, "w", encoding="utf-8") as f:
        f.write(report)
    log(f"   报告保存至: {report_path}")
except Exception as e:
    import traceback
    log(f"   报告生成失败: {e}")
    log(traceback.format_exc())

log("\n4. 测试 LLM 连接...")

try:
    import ollama
    models = ollama.list()
    model_names = [m.model for m in models.models]
    log(f"   Ollama 可用,模型: {model_names}")
except Exception as e:
    log(f"   Ollama 不可用: {e}")

log("\n=== 测试完成 ===")