主要内容: - 包含12个产业的完整教务系统前端代码 - 智能启动脚本 (start-industry.sh) - 可视化产业导航页面 (index.html) - 项目文档 (README.md) 优化内容: - 删除所有node_modules和.yoyo文件夹,从7.5GB减少到2.7GB - 添加.gitignore文件避免上传不必要的文件 - 自动依赖管理和智能启动系统 产业列表: 1. 文旅产业 (5150) 2. 智能制造 (5151) 3. 智能开发 (5152) 4. 财经商贸 (5153) 5. 视觉设计 (5154) 6. 交通物流 (5155) 7. 大健康 (5156) 8. 土木水利 (5157) 9. 食品产业 (5158) 10. 化工产业 (5159) 11. 能源产业 (5160) 12. 环保产业 (5161) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
169 lines
6.0 KiB
Python
169 lines
6.0 KiB
Python
#!/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() |