Files
ALL-teach_sys/frontend_化工/update_my_projects_chemical.py

169 lines
6.0 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import re
def extract_chemical_student_projects():
"""从学生完成的项目.json中提取化工产业数据"""
# 读取学生完成的项目数据
with open('网页未导入数据/学生完成的项目.json', 'r', encoding='utf-8') as f:
data = json.load(f)
chemical_projects = []
# 筛选化工产业相关项目
for item in data:
if item.get('所属就业管家') == '化工':
unit_name = item.get('单元名称查询', '')
ai_projects = item.get('AI项目名称', [])
if unit_name and ai_projects:
# 清理项目名称,去除序号前缀
cleaned_projects = []
for project in ai_projects:
# 去除 "1.", "2." 等序号前缀
cleaned_project = re.sub(r'^\d+\.', '', project).strip()
cleaned_projects.append(cleaned_project)
chemical_projects.append({
'unitName': unit_name,
'projects': cleaned_projects
})
return chemical_projects
def read_clickable_project_data():
"""读取学生完成的项目文件夹中的详细数据"""
try:
with open('网页未导入数据/化工产业/学生完成的项目/化工储罐液位自动补水与搅拌联锁控制.md', 'r', encoding='utf-8') as f:
content = f.read()
return content
except FileNotFoundError:
return None
def create_updated_project_library():
"""创建更新后的项目库数据"""
chemical_projects = extract_chemical_student_projects()
clickable_content = read_clickable_project_data()
print(f"提取到 {len(chemical_projects)} 个化工单元的项目数据")
# 生成新的myProjectsData
my_projects_data = []
for project in chemical_projects:
my_projects_data.append({
"unitName": project['unitName'],
"projects": project['projects']
})
# 生成可点击的项目数据
clickable_project = None
if clickable_content:
# 解析markdown内容创建项目详情
sections = []
lines = clickable_content.split('\n')
current_section = None
current_content = []
for line in lines:
if line.startswith('# '):
if current_section:
sections.append({
'title': current_section,
'content': '\n'.join(current_content).strip()
})
current_section = line[2:].strip()
current_content = []
elif current_section:
current_content.append(line)
# 添加最后一个section
if current_section:
sections.append({
'title': current_section,
'content': '\n'.join(current_content).strip()
})
clickable_project = {
"id": "clickable-1",
"name": "化工储罐液位自动补水与搅拌联锁控制项目",
"unitName": "化工PLC可编程逻辑控制系统",
"isClickable": True,
"content": {
"title": "化工储罐液位自动补水与搅拌联锁控制项目",
"description": "本项目基于PLC可编程逻辑控制器实现化工储罐液位的自动监控、补水控制以及搅拌器的联锁保护功能。",
"images": [],
"sections": sections
}
}
return my_projects_data, clickable_project
def update_project_library_file():
"""更新ProjectLibraryPage文件"""
my_projects_data, clickable_project = create_updated_project_library()
# 读取原文件
with open('src/pages/ProjectLibraryPage/index.jsx', 'r', encoding='utf-8') as f:
content = f.read()
# 替换myProjectsData
my_projects_js = json.dumps(my_projects_data, ensure_ascii=False, indent=2)
# 替换myProjectsData部分
pattern = r'const myProjectsData = \[[\s\S]*?\];'
replacement = f'const myProjectsData = {my_projects_js};'
content = re.sub(pattern, replacement, content)
# 如果有可点击项目数据替换clickableProjects
if clickable_project:
# 构建clickableProjects JavaScript代码
clickable_js = json.dumps([clickable_project], ensure_ascii=False, indent=2)
clickable_pattern = r'const clickableProjects = \[[\s\S]*?\];'
clickable_replacement = f'const clickableProjects = {clickable_js};'
content = re.sub(clickable_pattern, clickable_replacement, content)
# 写入文件
with open('src/pages/ProjectLibraryPage/index.jsx', 'w', encoding='utf-8') as f:
f.write(content)
print("✅ 已更新ProjectLibraryPage.jsx文件")
print(f"✅ 替换了 {len(my_projects_data)} 个化工单元的我的项目数据")
if clickable_project:
print("✅ 添加了1个可点击查看的化工项目详情")
return my_projects_data
def show_summary():
"""显示项目数据摘要"""
my_projects_data, _ = create_updated_project_library()
print("\n化工产业我的项目库数据摘要:")
print("=" * 80)
total_projects = 0
for i, unit in enumerate(my_projects_data, 1):
unit_name = unit['unitName']
projects = unit['projects']
project_count = len(projects)
total_projects += project_count
print(f"\n{i}. {unit_name} ({project_count}个项目)")
for j, project in enumerate(projects, 1):
print(f" {j}. {project}")
print(f"\n总计: {len(my_projects_data)} 个单元,{total_projects} 个项目")
if __name__ == "__main__":
print("正在更新我的项目库为化工产业数据...")
# 先显示摘要
show_summary()
print("\n" + "=" * 80)
# 执行更新
update_project_library_file()