Files
AIclinicalresearch/extraction_service/test_execute_simple.py
HaHafeng fa72beea6c feat(platform): Complete Postgres-Only architecture refactoring (Phase 1-7)
Major Changes:
- Implement Platform-Only architecture pattern (unified task management)
- Add PostgresCacheAdapter for unified caching (platform_schema.app_cache)
- Add PgBossQueue for job queue management (platform_schema.job)
- Implement CheckpointService using job.data (generic for all modules)
- Add intelligent threshold-based dual-mode processing (THRESHOLD=50)
- Add task splitting mechanism (auto chunk size recommendation)
- Refactor ASL screening service with smart mode selection
- Refactor DC extraction service with smart mode selection
- Register workers for ASL and DC modules

Technical Highlights:
- All task management data stored in platform_schema.job.data (JSONB)
- Business tables remain clean (no task management fields)
- CheckpointService is generic (shared by all modules)
- Zero code duplication (DRY principle)
- Follows 3-layer architecture principle
- Zero additional cost (no Redis needed, save 8400 CNY/year)

Code Statistics:
- New code: ~1750 lines
- Modified code: ~500 lines
- Test code: ~1800 lines
- Documentation: ~3000 lines

Testing:
- Unit tests: 8/8 passed
- Integration tests: 2/2 passed
- Architecture validation: passed
- Linter errors: 0

Files:
- Platform layer: PostgresCacheAdapter, PgBossQueue, CheckpointService, utils
- ASL module: screeningService, screeningWorker
- DC module: ExtractionController, extractionWorker
- Tests: 11 test files
- Docs: Updated 4 key documents

Status: Phase 1-7 completed, Phase 8-9 pending
2025-12-13 16:10:04 +08:00

59 lines
1.3 KiB
Python

"""简单的代码执行测试"""
import requests
import json
# 测试数据
test_data = [
{"patient_id": "P001", "age": 25, "gender": ""},
{"patient_id": "P002", "age": 65, "gender": ""},
{"patient_id": "P003", "age": 45, "gender": ""},
]
# 测试代码
test_code = """
df['age_group'] = df['age'].apply(lambda x: '老年' if x > 60 else '非老年')
print(f"处理完成,共 {len(df)} 行")
"""
print("=" * 60)
print("测试: Pandas代码执行")
print("=" * 60)
try:
response = requests.post(
"http://localhost:8000/api/dc/execute",
json={"data": test_data, "code": test_code},
timeout=10
)
print(f"\n状态码: {response.status_code}")
result = response.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
if result.get("success"):
print("\n✅ 代码执行成功!")
print(f"结果数据: {len(result.get('result_data', []))}")
print(f"执行时间: {result.get('execution_time', 0):.3f}")
print(f"\n打印输出:\n{result.get('output', '')}")
print(f"\n结果数据示例:")
for row in result.get('result_data', [])[:3]:
print(f" {row}")
else:
print(f"\n❌ 代码执行失败: {result.get('error')}")
except Exception as e:
print(f"\n❌ 测试异常: {str(e)}")