| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- # -*- coding: utf-8 -*-
- """
- 自动化更新脚本 - 素材库全量更新流水线
- 功能: 从原始PDF报告更新素材库的三个核心数据文件
- 流程:
- 1. 分类重命名报告 (process_all_pdfs.py)
- 2. 全类型数据提取 (extract_all_types.py)
- 3. 全类型学生合并 (merge_all_types.py)
- 4. 删除重复A1报告 (delete_duplicate_a1.py)
- 用法:
- python scripts/reports/update_materials.py # 从 scripts 目录运行
- cd 项目根目录 && python scripts/reports/update_materials.py # 从根目录运行
- """
- import os
- import sys
- import subprocess
- # 脚本所在目录 = scripts/reports/
- SCRIPTS_DIR = os.path.dirname(os.path.abspath(__file__))
- PROJECT_DIR = os.path.dirname(os.path.dirname(SCRIPTS_DIR))
- def run_script(script_name, label):
- """运行 scripts/reports/ 中的脚本"""
- script_path = os.path.join(SCRIPTS_DIR, script_name)
- print(f"\n{'=' * 50}")
- print(f"[{label}] 运行: {script_name}")
- print(f"{'=' * 50}")
- result = subprocess.run(
- [sys.executable, script_path],
- cwd=PROJECT_DIR,
- capture_output=False
- )
- if result.returncode != 0:
- print(f" [FAIL] [{label}] 失败 (exit code={result.returncode})")
- return False
- print(f" [OK] [{label}] 完成")
- return True
- def main():
- print("=" * 60)
- print(" 素材库全量更新流水线")
- print("=" * 60)
- print(f" 项目根目录: {PROJECT_DIR}")
- print(f" 脚本目录: {SCRIPTS_DIR}")
- steps = [
- ("process_all_pdfs.py", "1/4 报告分类重命名"),
- ("extract_all_types.py", "2/4 全类型数据提取"),
- ("merge_all_types.py", "3/4 全类型学生合并"),
- ("delete_duplicate_a1.py", "4/4 清理重复A1报告"),
- ]
- for script, label in steps:
- if not run_script(script, label):
- print(f"\n ❌ 流水线在 [{label}] 中断")
- sys.exit(1)
- print(f"\n{'=' * 60}")
- print(" [OK] 素材库更新完成!")
- print(f"{'=' * 60}")
- print("\n生成的文件:")
- print(" - 素材库/测评数据_优化提取.csv")
- print(" - 素材库/学生汇总数据.csv")
- print("\n提示: 案例库.md 需要手动根据新增数据更新案例")
- if __name__ == "__main__":
- main()
|