100 lines
2.9 KiB
Python
100 lines
2.9 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
|
|||
|
|
import json
|
|||
|
|
|
|||
|
|
# 读取智能制造项目案例数据
|
|||
|
|
with open('网页未导入数据/智能制造产业/智能制造项目案例.json', 'r', encoding='utf-8') as f:
|
|||
|
|
raw_data = json.load(f)
|
|||
|
|
|
|||
|
|
# 构建映射数据
|
|||
|
|
mapping_data = {}
|
|||
|
|
|
|||
|
|
for item in raw_data:
|
|||
|
|
project_name = item['案例名称']
|
|||
|
|
|
|||
|
|
# 获取单元信息
|
|||
|
|
compound_units = []
|
|||
|
|
vertical_units = []
|
|||
|
|
|
|||
|
|
# 垂直能力课
|
|||
|
|
if item.get('对应单元名称(垂直能力课)'):
|
|||
|
|
units = [u.strip() for u in item['对应单元名称(垂直能力课)'].split(',')]
|
|||
|
|
vertical_units.extend(units)
|
|||
|
|
|
|||
|
|
# 复合能力课
|
|||
|
|
if item.get('对应单元名称(复合能力课)'):
|
|||
|
|
units = [u.strip() for u in item['对应单元名称(复合能力课)'].split(',')]
|
|||
|
|
compound_units.extend(units)
|
|||
|
|
|
|||
|
|
mapping_data[project_name] = {
|
|||
|
|
'compoundUnits': compound_units,
|
|||
|
|
'verticalUnits': vertical_units
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 生成JavaScript文件内容
|
|||
|
|
js_content = '''// 项目案例对应单元映射数据 - 智能制造
|
|||
|
|
// 基于 网页未导入数据/智能制造产业/智能制造项目案例.json
|
|||
|
|
|
|||
|
|
export const projectUnitsMapping = '''
|
|||
|
|
|
|||
|
|
js_content += json.dumps(mapping_data, ensure_ascii=False, indent=2)
|
|||
|
|
|
|||
|
|
js_content += ''';
|
|||
|
|
|
|||
|
|
// 获取项目的复合能力课程
|
|||
|
|
export const getCompoundUnits = (projectTitle) => {
|
|||
|
|
if (!projectTitle) return [];
|
|||
|
|
|
|||
|
|
// 直接匹配
|
|||
|
|
if (projectUnitsMapping[projectTitle]) {
|
|||
|
|
return projectUnitsMapping[projectTitle].compoundUnits || [];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 尝试去除后缀后匹配(如"详情")
|
|||
|
|
const cleanTitle = projectTitle.replace(/详情$/, '');
|
|||
|
|
if (projectUnitsMapping[cleanTitle]) {
|
|||
|
|
return projectUnitsMapping[cleanTitle].compoundUnits || [];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return [];
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 获取项目的垂直能力课程
|
|||
|
|
export const getVerticalUnits = (projectTitle) => {
|
|||
|
|
if (!projectTitle) return [];
|
|||
|
|
|
|||
|
|
// 直接匹配
|
|||
|
|
if (projectUnitsMapping[projectTitle]) {
|
|||
|
|
return projectUnitsMapping[projectTitle].verticalUnits || [];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 尝试去除后缀后匹配(如"详情")
|
|||
|
|
const cleanTitle = projectTitle.replace(/详情$/, '');
|
|||
|
|
if (projectUnitsMapping[cleanTitle]) {
|
|||
|
|
return projectUnitsMapping[cleanTitle].verticalUnits || [];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return [];
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 获取项目的所有对应单元
|
|||
|
|
export const getProjectUnits = (projectTitle) => {
|
|||
|
|
const mapping = projectUnitsMapping[projectTitle];
|
|||
|
|
if (!mapping) return [];
|
|||
|
|
|
|||
|
|
return [...mapping.compoundUnits, ...mapping.verticalUnits];
|
|||
|
|
};'''
|
|||
|
|
|
|||
|
|
# 写入文件
|
|||
|
|
with open('src/data/projectUnitsMapping.js', 'w', encoding='utf-8') as f:
|
|||
|
|
f.write(js_content)
|
|||
|
|
|
|||
|
|
print("✅ 成功更新单元映射数据!")
|
|||
|
|
print(f"- 生成了 {len(mapping_data)} 个项目的单元映射")
|
|||
|
|
|
|||
|
|
# 打印几个示例
|
|||
|
|
for i, (name, units) in enumerate(list(mapping_data.items())[:3]):
|
|||
|
|
print(f"\n示例 {i+1}: {name}")
|
|||
|
|
print(f" 复合能力课: {units['compoundUnits']}")
|
|||
|
|
print(f" 垂直能力课: {units['verticalUnits']}")
|