133 lines
4.3 KiB
Python
133 lines
4.3 KiB
Python
|
|
import json
|
|||
|
|
|
|||
|
|
# 读取食品项目案例数据
|
|||
|
|
with open('网页未导入数据/食品产业/食品项目案例.json', 'r', encoding='utf-8') as f:
|
|||
|
|
food_projects = json.load(f)
|
|||
|
|
|
|||
|
|
# 创建项目单元映射
|
|||
|
|
project_units_mapping = {}
|
|||
|
|
|
|||
|
|
for project in food_projects:
|
|||
|
|
project_name = project.get('案例名称', '')
|
|||
|
|
|
|||
|
|
# 获取复合能力课(如果有)
|
|||
|
|
compound_units_str = project.get('对应单元名称(复合能力课)', '')
|
|||
|
|
compound_units = []
|
|||
|
|
if compound_units_str and compound_units_str != '无':
|
|||
|
|
# 分割多个单元(用逗号或顿号分隔)
|
|||
|
|
compound_units = [unit.strip() for unit in compound_units_str.replace('、', ',').split(',') if unit.strip()]
|
|||
|
|
|
|||
|
|
# 获取垂直能力课
|
|||
|
|
vertical_units_str = project.get('对应单元名称(垂直能力课)', '')
|
|||
|
|
vertical_units = []
|
|||
|
|
if vertical_units_str and vertical_units_str != '无':
|
|||
|
|
# 分割多个单元(用逗号或顿号分隔)
|
|||
|
|
vertical_units = [unit.strip() for unit in vertical_units_str.replace('、', ',').split(',') if unit.strip()]
|
|||
|
|
|
|||
|
|
# 添加到映射
|
|||
|
|
if project_name:
|
|||
|
|
project_units_mapping[project_name] = {
|
|||
|
|
"compoundUnits": compound_units,
|
|||
|
|
"verticalUnits": vertical_units
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 生成JavaScript文件内容
|
|||
|
|
js_content = """// 项目案例对应单元映射数据 - 食品产业
|
|||
|
|
// 基于 网页未导入数据/食品产业/食品项目案例.json
|
|||
|
|
|
|||
|
|
export const projectUnitsMapping = {
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
# 添加每个项目的映射
|
|||
|
|
for project_name, units in project_units_mapping.items():
|
|||
|
|
js_content += f' "{project_name}": {{\n'
|
|||
|
|
|
|||
|
|
# 复合能力课
|
|||
|
|
js_content += ' "compoundUnits": [\n'
|
|||
|
|
for unit in units['compoundUnits']:
|
|||
|
|
js_content += f' "{unit}",\n'
|
|||
|
|
if units['compoundUnits']:
|
|||
|
|
js_content = js_content.rstrip(',\n') + '\n'
|
|||
|
|
js_content += ' ],\n'
|
|||
|
|
|
|||
|
|
# 垂直能力课
|
|||
|
|
js_content += ' "verticalUnits": [\n'
|
|||
|
|
for unit in units['verticalUnits']:
|
|||
|
|
js_content += f' "{unit}",\n'
|
|||
|
|
if units['verticalUnits']:
|
|||
|
|
js_content = js_content.rstrip(',\n') + '\n'
|
|||
|
|
js_content += ' ]\n'
|
|||
|
|
|
|||
|
|
js_content += ' },\n'
|
|||
|
|
|
|||
|
|
# 移除最后的逗号
|
|||
|
|
js_content = js_content.rstrip(',\n') + '\n'
|
|||
|
|
js_content += '};\n\n'
|
|||
|
|
|
|||
|
|
# 添加辅助函数
|
|||
|
|
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(f"已生成食品产业项目单元映射文件")
|
|||
|
|
print(f"共处理 {len(project_units_mapping)} 个项目")
|
|||
|
|
|
|||
|
|
# 显示统计信息
|
|||
|
|
compound_count = sum(1 for p in project_units_mapping.values() if p['compoundUnits'])
|
|||
|
|
vertical_count = sum(1 for p in project_units_mapping.values() if p['verticalUnits'])
|
|||
|
|
print(f"包含复合能力课的项目:{compound_count} 个")
|
|||
|
|
print(f"包含垂直能力课的项目:{vertical_count} 个")
|
|||
|
|
|
|||
|
|
# 显示前3个项目作为示例
|
|||
|
|
print("\n示例映射:")
|
|||
|
|
for i, (name, units) in enumerate(list(project_units_mapping.items())[:3]):
|
|||
|
|
print(f"\n{name}:")
|
|||
|
|
if units['compoundUnits']:
|
|||
|
|
print(f" 复合能力课:{', '.join(units['compoundUnits'])}")
|
|||
|
|
if units['verticalUnits']:
|
|||
|
|
print(f" 垂直能力课:{', '.join(units['verticalUnits'])}")
|