Initial commit

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
lofyer
2026-07-13 15:38:41 +08:00
co-authored by factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
commit 71db82393a
180 changed files with 170640 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
#!/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()