Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
78 lines
2.6 KiB
Python
78 lines
2.6 KiB
Python
#!/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()
|