#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json import re def extract_energy_projects(): """ 从学生完成的项目.json中提取能源产业的项目数据 """ with open("网页未导入数据/学生完成的项目.json", 'r', encoding='utf-8') as f: all_projects = json.load(f) # 筛选能源产业的项目 energy_projects = [p for p in all_projects if p.get("所属就业管家") == "能源"] print(f"📊 找到 {len(energy_projects)} 个能源产业单元的项目") # 转换为myProjectsData格式 my_projects_data = [] for project in energy_projects: unit_name = project.get("单元名称查询", "") ai_projects = project.get("AI项目名称", []) # 清理项目名称(去除序号前缀) cleaned_projects = [] for proj in ai_projects: # 去除"1."或"2."等前缀 cleaned = re.sub(r'^\d+\.\s*', '', proj) if cleaned: cleaned_projects.append(cleaned) if unit_name and cleaned_projects: my_projects_data.append({ "unitName": unit_name, "projects": cleaned_projects }) return my_projects_data def generate_js_code(my_projects_data): """ 生成JavaScript代码 """ js_code = "// 我的项目库数据\nconst myProjectsData = [\n" for idx, unit in enumerate(my_projects_data): js_code += ' {\n' js_code += f' "unitName": "{unit["unitName"]}",\n' js_code += ' "projects": [\n' for j, proj in enumerate(unit["projects"]): # 转义双引号 proj_escaped = proj.replace('"', '\\"') js_code += f' "{proj_escaped}"' if j < len(unit["projects"]) - 1: js_code += ',' js_code += '\n' js_code += ' ]\n' js_code += ' }' if idx < len(my_projects_data) - 1: js_code += ',' js_code += '\n' js_code += '];\n' return js_code def update_project_library_page(): """ 更新项目库页面组件中的myProjectsData """ # 提取能源项目数据 energy_projects = extract_energy_projects() # 生成新的JS代码 new_js_code = generate_js_code(energy_projects) # 读取现有组件文件 with open("src/pages/ProjectLibraryPage/index.jsx", 'r', encoding='utf-8') as f: content = f.read() # 查找并替换myProjectsData部分 pattern = r'// 我的项目库数据\nconst myProjectsData = \[[\s\S]*?\];\n' if re.search(pattern, content): updated_content = re.sub(pattern, new_js_code, content) # 写入更新后的内容 with open("src/pages/ProjectLibraryPage/index.jsx", 'w', encoding='utf-8') as f: f.write(updated_content) print("✅ 成功更新myProjectsData数据") # 显示统计信息 print(f"\n📋 更新统计:") print(f" - 单元数量:{len(energy_projects)}") total_projects = sum(len(unit['projects']) for unit in energy_projects) print(f" - 项目总数:{total_projects}") # 显示前3个单元的信息 print("\n📚 前3个单元示例:") for unit in energy_projects[:3]: print(f" • {unit['unitName']}") for proj in unit['projects']: print(f" - {proj}") else: print("❌ 未找到myProjectsData数据块") if __name__ == "__main__": update_project_library_page()