Files
AIclinicalresearch/tests/README_测试说明.md
HaHafeng b47079b387 feat(iit): Phase 1.5 AI对话集成REDCap真实数据完成
- feat: ChatService集成DeepSeek-V3实现AI对话(390行)
- feat: SessionMemory实现上下文记忆(最近3轮对话,170行)
- feat: 意图识别支持REDCap数据查询(关键词匹配)
- feat: REDCap数据注入LLM(queryRedcapRecord, countRedcapRecords, getProjectInfo)
- feat: 解决LLM幻觉问题(基于真实数据回答,明确system prompt)
- feat: 即时反馈(正在查询...提示)
- test: REDCap查询测试通过(test0102项目,10条记录,ID 7患者详情)
- docs: 创建Phase1.5开发完成记录(313行)
- docs: 更新Phase1.5开发计划(标记完成)
- docs: 更新MVP开发任务清单(Phase 1.5完成)
- docs: 更新模块当前状态(60%完成度)
- docs: 更新系统总体设计文档(v2.6)
- chore: 删除测试脚本(test-redcap-query-for-ai.ts, check-env-config.ts)
- chore: 移除REDCap测试环境变量(REDCAP_TEST_*)

技术亮点:
- AI基于REDCap真实数据对话,不编造信息
- 从数据库读取项目配置,不使用环境变量
- 企业微信端测试通过,用户体验良好

测试通过:
-  查询项目记录总数(10条)
-  查询特定患者详情(ID 7)
-  项目信息查询
-  上下文记忆(3轮对话)
-  即时反馈提示

影响范围:IIT Manager Agent模块
2026-01-03 22:48:10 +08:00

6.0 KiB
Raw Blame History

缺失值处理功能 - 自动化测试说明

📋 测试脚本功能

自动化测试脚本 test_fillna_operations.py 会自动测试缺失值处理的所有功能,包括:

18个测试用例

基础测试6个

  1. 均值填补数值列
  2. 中位数填补偏态分布列
  3. 众数填补分类列
  4. 固定值填补0
  5. 前向填充ffill
  6. 后向填充bfill

MICE测试4个

  1. MICE填补单列
  2. MICE填补多列
  3. MICE填补 - 不同迭代次数
  4. MICE填补 - 自定义随机种子

边界测试4个

  1. 100%缺失的列
  2. 0%缺失的列(无需填补)
  3. 统计API功能
  4. 特殊字符列名处理

数据类型测试4个

  1. 数值列int/float
  2. 分类列(字符串)
  3. 混合类型列
  4. 性能测试1000行

🚀 快速开始

步骤1: 启动Python服务

cd AIclinicalresearch/extraction_service
python main.py

确认服务启动成功:看到 Application startup complete 或访问 http://localhost:8001/health


步骤2: 运行测试脚本

方法1 - 在项目根目录运行

cd AIclinicalresearch
python tests/test_fillna_operations.py

方法2 - 在tests目录运行

cd AIclinicalresearch/tests
python test_fillna_operations.py

📊 测试输出示例

╔══════════════════════════════════════════════════════════════════╗
║                                                                  ║
║       缺失值处理功能 - 自动化测试脚本 v1.0                      ║
║                                                                  ║
║       测试内容: 18个测试用例                                     ║
║       - 6个基础填补测试                                          ║
║       - 4个MICE测试                                              ║
║       - 4个边界测试                                              ║
║       - 4个数据类型测试                                          ║
║                                                                  ║
╚══════════════════════════════════════════════════════════════════╝

================================================================================
                        缺失值处理功能 - 自动化测试
================================================================================

  检查Python服务状态...
✅ Python服务运行正常

  生成测试数据...
✅ 生成了 5 个测试数据集
  • numeric: 100 行 × 4 列
  • categorical: 100 行 × 3 列
  • timeseries: 100 行 × 3 列
  • edge_cases: 10 行 × 4 列
  • mixed: 100 行 × 4 列

[1/18] 均值填补数值列
--------------------------------------------------------------------------------
✅ 均值填补成功,缺失值已全部填补
✅ ✓ 新列位置正确(紧邻原列)

[2/18] 中位数填补偏态分布列
--------------------------------------------------------------------------------
✅ 中位数填补成功

...

================================================================================
                                  测试总结
================================================================================

总测试数: 18
✅ 通过: 18
❌ 失败: 0
通过率: 100.0%
总耗时: 45.32秒

                         🎉 所有测试通过!

🔧 依赖安装

测试脚本需要以下Python包

pip install pandas numpy requests

这些包在 extraction_service/requirements.txt 中已经包含。


⚙️ 配置

修改服务地址

如果Python服务不在默认端口 8001,修改脚本开头:

PYTHON_SERVICE_URL = "http://localhost:8001"  # 修改为你的端口

📝 测试结果说明

颜色含义

  • 🟢 绿色 (): 测试通过
  • 🔴 红色 (): 测试失败
  • 🟡 黄色 (⚠️): 警告信息
  • 🔵 蓝色 (): 提示信息

通过标准

  • API返回成功
  • 新列创建正确
  • 缺失值被正确填补
  • 新列位置在原列旁边

🐛 常见问题

1. 无法连接到Python服务

错误: 无法连接到Python服务: Connection refused

解决:

# 确保Python服务已启动
cd AIclinicalresearch/extraction_service
python main.py

2. 模块未找到

错误: ModuleNotFoundError: No module named 'pandas'

解决:

pip install pandas numpy requests

3. 部分测试失败

现象: 通过率 < 100%

处理:

  1. 查看失败测试的具体错误信息
  2. 检查Python服务日志
  3. 确认数据格式是否正确

🔍 调试技巧

1. 单独运行某个测试

修改 test_fillna_operations.pyrun_all_tests() 方法,只保留需要测试的用例:

tests = [
    (self.test_1_mean_fill, "基础"),  # 只测试这一个
]

2. 查看详细日志

在测试函数中添加:

print(json.dumps(result, indent=2, ensure_ascii=False))

3. 保存测试数据

generate_test_data() 中添加:

df_numeric.to_excel('test_data/numeric_test.xlsx', index=False)

📈 性能基准

参考值(在普通笔记本上):

  • 简单填补(均值/中位数/众数): < 1秒
  • 前向/后向填充: < 1秒
  • MICE填补 100行: 2-5秒
  • MICE填补 1000行: 20-40秒
  • 全部18个测试: 45-60秒

🎯 下一步

测试通过后:

  1. 在真实数据上测试
  2. 测试前端集成
  3. 性能优化(如有需要)

📞 技术支持

如有问题,请检查:

  1. Python服务日志
  2. 测试脚本输出
  3. 开发文档:工具C_缺失值处理_开发完成说明.md