#!/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']}")