#!/usr/bin/env python3 """ 测试脚本:验证数据引擎能正确读取和解析Excel数据 """ import sys from pathlib import Path # 添加项目路径 sys.path.insert(0, str(Path(__file__).parent.parent / "backend")) from app.engines.data_engine import DataEngine from app.config import DIMENSION_FRAMEWORK, SCHOOL_TYPE_MAP import json def main(): print("=" * 80) print("数据引擎测试") print("=" * 80) engine = DataEngine() engine.load_all() # 1. 基本信息 summary = engine.summary() print(f"\n📊 数据摘要:") print(f" 学校数量: {summary['school_count']}") print(f" 学校列表: {summary['schools']}") print(f" 基础信息行数: {summary['basic_info_rows']}") print(f" 课程实施行数: {summary['course_impl_rows']}") print(f" 学科课程行数: {summary['subject_impl_rows']}") # 2. 测试单校数据 test_school = "延安中学" print(f"\n🏫 {test_school} 基本信息:") info = engine.get_school_basic_info(test_school) for k, v in info.items(): print(f" {k}: {v}") # 3. 测试课程数据 print(f"\n📚 {test_school} 课程实施数据:") course_df = engine.get_school_course_data(test_school) print(f" 总行数: {len(course_df)}") print(f" 涉及学科: {sorted(course_df['学科'].unique().tolist())}") print(f" 涉及题号: {sorted(course_df['题号'].unique().tolist())[:20]}...") # 4. 测试学科数据 print(f"\n🔬 {test_school} 学科课程数据:") subject_df = engine.get_school_subject_data(test_school) print(f" 总行数: {len(subject_df)}") print(f" 涉及学科: {sorted(subject_df['学科'].unique().tolist())}") # 5. 测试周课时数据 print(f"\n⏰ {test_school} 周课时数据(前10行):") hours = engine.get_weekly_hours(test_school) if len(hours) > 0: print(hours[["学科", "年级", "学期", "字段名称", "字段取值"]].head(10).to_string()) else: print(" 无课时数据") # 6. 测试课程规范数据 print(f"\n📋 {test_school} 课程规范数据(前5条):") norms = engine.get_course_norms(test_school) for n in norms[:5]: print(f" {n['字段名称']}: {n['字段取值']}") # 7. 所有学校类型 print(f"\n🏷️ 学校类型:") for school in engine.schools: info = SCHOOL_TYPE_MAP.get(school, {}) print(f" {school}: {info.get('type', '未知')} ({info.get('nature', '')}) [{info.get('feature', '')}]") print("\n✅ 数据引擎测试完成!") if __name__ == "__main__": main()