Files
ALL-teach_sys/frontend_能源/update_my_projects.py

112 lines
3.5 KiB
Python
Raw Normal View History

#!/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()