Files
ALL-teach_sys/frontend_土木水利/convert_civil_projects.py
KQL cd2e307402 初始化12个产业教务系统项目
主要内容:
- 包含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>
2025-09-24 14:14:14 +08:00

192 lines
6.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import re
def clean_markdown_content(content):
"""清理Markdown内容确保格式正确"""
if not content:
return ""
# 保持Markdown格式但清理多余空白
content = content.strip()
# 确保标题格式正确
content = re.sub(r'\n{3,}', '\n\n', content)
return content
def convert_civil_projects():
# 读取土木水利项目案例数据
with open('网页未导入数据/土木水利产业/土木水利项目案例.json', 'r', encoding='utf-8') as f:
civil_data = json.load(f)
print(f"土木水利项目总数: {len(civil_data)}")
# 获取所有垂直方向(用于分类)
directions = list(set([item['所属垂直方向'] for item in civil_data if '所属垂直方向' in item]))
print(f"项目方向分类: {directions}")
# 转换为班级项目库格式
projects_list = []
projects_detail = []
for idx, item in enumerate(civil_data, 1):
# 提取字段
project_name = item.get('案例名称', '')
direction = item.get('所属垂直方向', '综合项目')
content = item.get('项目案例内容', '')
units = item.get('对应单元名称(垂直能力课)', '')
positions = item.get('对应个人简历名称', '')
# 处理岗位列表
position_list = []
position_detail_list = []
if positions:
pos_names = [p.strip() for p in positions.split(',')]
position_list = pos_names
# 为详情创建带等级的岗位列表
for pos in pos_names:
# 根据岗位名称判断等级
if '助理' in pos or '实习' in pos:
level = "实习生岗"
elif '经理' in pos or '主管' in pos:
level = "储备干部岗"
else:
level = "技术骨干岗"
position_detail_list.append({
"level": level,
"position": pos
})
# 处理单元名称(可能有多个)
unit_name = units.split(',')[0] if units else direction
# 创建列表数据
list_item = {
"id": idx,
"name": project_name,
"description": direction, # 项目方向作为描述
"positions": position_list,
"unit": unit_name,
"direction": direction, # 用于分类筛选
"category": direction.split('')[0] if '' in direction else direction
}
projects_list.append(list_item)
# 处理项目内容,分解为概述、流程和关键点
overview = ""
process = ""
keyPoints = ""
if content:
# 尝试从内容中提取各部分
sections = re.split(r'#+\s*', content)
# 查找概述部分
for section in sections:
if '项目概述' in section or '项目背景' in section or '概述' in section:
overview = section.split('\n', 1)[1] if '\n' in section else section
overview = clean_markdown_content(overview)
break
# 如果没有找到概述使用前200字作为概述
if not overview and content:
overview = content[:500] + "..."
# 查找流程部分
for section in sections:
if '流程' in section or '任务' in section or '实施' in section or '步骤' in section:
process = "### " + section
process = clean_markdown_content(process)
break
# 查找关键点
for section in sections:
if '关键' in section or '要点' in section or '成果' in section or '总结' in section:
keyPoints = "### " + section
keyPoints = clean_markdown_content(keyPoints)
break
# 如果没有分离出流程和关键点,将整个内容作为流程
if not process and not keyPoints:
process = clean_markdown_content(content)
# 创建详情数据
detail_item = {
"id": idx,
"name": project_name,
"positions": position_detail_list,
"unit": unit_name,
"overview": overview or f"{project_name}{direction}领域的重要实践项目,通过本项目的实施,学生能够掌握相关的专业技能和实践经验。",
"process": process or f"### 项目实施流程\n\n本项目按照标准的{direction}流程进行实施,包括需求分析、方案设计、实施执行、测试验收等关键环节。",
"keyPoints": keyPoints or f"### 项目关键要点\n\n1. 掌握{direction}的核心技术\n2. 熟悉项目实施的完整流程\n3. 培养解决实际问题的能力\n4. 提升团队协作和沟通能力"
}
projects_detail.append(detail_item)
# 生成JavaScript代码
output = """// 项目库Mock数据
export const getMockProjectsList = (params = {}) => {
const { search = "", page = 1, pageSize = 10 } = params;
// 完整项目列表数据
const projects = """
output += json.dumps(projects_list, ensure_ascii=False, indent=2)
output += ";\n\n"
output += """ // 根据搜索条件过滤
let filteredProjects = projects;
if (search) {
filteredProjects = projects.filter(project =>
project.name.toLowerCase().includes(search.toLowerCase()) ||
project.description.toLowerCase().includes(search.toLowerCase())
);
}
// 分页处理
const startIndex = (page - 1) * pageSize;
const endIndex = startIndex + pageSize;
const paginatedProjects = filteredProjects.slice(startIndex, endIndex);
return {
success: true,
data: paginatedProjects,
total: filteredProjects.length,
page: page,
pageSize: pageSize
};
};
// 获取项目详情
export const getMockProjectDetail = (id) => {
// 直接根据ID返回对应项目的详情
const projects = """
output += json.dumps(projects_detail, ensure_ascii=False, indent=2)
output += """;\n
const project = projects.find(p => p.id === parseInt(id));
if (project) {
return {
success: true,
data: project
};
} else {
return {
success: false,
message: "项目不存在"
};
}
};
"""
# 保存到文件
with open('src/mocks/projectLibraryMock.js', 'w', encoding='utf-8') as f:
f.write(output)
print(f"\n✅ 班级项目库数据已替换完成")
print(f" - 项目列表: {len(projects_list)}个项目")
print(f" - 项目详情: {len(projects_detail)}个项目")
print(f" - 项目分类: {', '.join(directions)}")
if __name__ == "__main__":
convert_civil_projects()