import json import re # 读取食品项目案例数据 with open('网页未导入数据/食品产业/食品项目案例.json', 'r', encoding='utf-8') as f: food_cases = json.load(f) print(f"总共找到 {len(food_cases)} 个食品项目案例") # 分析有附件的项目,并按照所属单元分类 projects_with_attachments = [] unit_mapping = {} for case in food_cases: case_name = case.get('案例名称', '') compound_unit = case.get('对应单元名称(复合能力课)', '') vertical_unit = case.get('对应单元名称(垂直能力课)', '') attachments_str = case.get('附件', '') # 只处理有附件的项目 if attachments_str and attachments_str.strip(): # 解析附件字符串 attachments = [] for attachment in attachments_str.split(','): attachment = attachment.strip() if attachment: # 提取文件扩展名 ext_match = re.search(r'\.([a-zA-Z0-9]+)$', attachment) file_type = ext_match.group(1).lower() if ext_match else 'unknown' attachments.append({ "id": f"attach_{len(attachments) + 1}", "name": attachment, "type": file_type, "size": "2.5MB", # 模拟文件大小 "url": f"https://example.com/files/{attachment}" }) # 确定单元名称(优先使用复合能力课) unit_name = compound_unit if compound_unit else vertical_unit if not unit_name: unit_name = "其他" # 创建简化的项目名称(去掉"项目"后缀) simplified_name = case_name.replace('项目', '').strip() project_data = { "originalName": case_name, "simplifiedName": simplified_name, "unitName": unit_name, "attachments": attachments } projects_with_attachments.append(project_data) # 按单元分类 if unit_name not in unit_mapping: unit_mapping[unit_name] = [] unit_mapping[unit_name].append(project_data) print(f"\n找到 {len(projects_with_attachments)} 个有附件的项目") print(f"涉及 {len(unit_mapping)} 个单元") print("\n按单元分类的有附件项目:") for unit, projects in unit_mapping.items(): print(f"\n【{unit}】:") for project in projects: print(f" - {project['simplifiedName']}") for att in project['attachments']: print(f" * {att['name']} ({att['type']})") # 生成新的我的项目库数据,使用真实的有附件项目 new_my_projects_data = [] for unit, projects in unit_mapping.items(): project_names = [project['simplifiedName'] for project in projects] new_my_projects_data.append({ "unitName": unit, "projects": project_names }) # 生成JavaScript代码 - 我的项目库数据 my_projects_js = '''// 我的项目库数据 - 基于真实食品项目案例 const myProjectsData = [ ''' for unit_data in new_my_projects_data: my_projects_js += f' {{\n' my_projects_js += f' "unitName": "{unit_data["unitName"]}",\n' my_projects_js += f' "projects": [\n' for project in unit_data["projects"]: my_projects_js += f' "{project}",\n' my_projects_js = my_projects_js.rstrip(',\n') + '\n' my_projects_js += f' ]\n' my_projects_js += f' }},\n' my_projects_js = my_projects_js.rstrip(',\n') + '\n' my_projects_js += '];' # 生成JavaScript代码 - 附件数据映射 attachments_js = '''// 项目附件数据映射 - 基于真实食品项目案例 const projectAttachmentsData = { ''' for project in projects_with_attachments: attachments_js += f' "{project["simplifiedName"]}": [\n' for att in project['attachments']: attachments_js += f' {{\n' attachments_js += f' "id": "{att["id"]}",\n' attachments_js += f' "name": "{att["name"]}",\n' attachments_js += f' "type": "{att["type"]}",\n' attachments_js += f' "size": "{att["size"]}",\n' attachments_js += f' "url": "{att["url"]}"\n' attachments_js += f' }},\n' attachments_js = attachments_js.rstrip(',\n') + '\n' attachments_js += f' ],\n' attachments_js = attachments_js.rstrip(',\n') + '\n' attachments_js += '''}; export default projectAttachmentsData; ''' print(f"\n生成的我的项目库JavaScript代码:") print(my_projects_js) print(f"\n生成的附件数据JavaScript代码:") print(attachments_js) # 保存到文件 with open('my_projects_data_real_food.js', 'w', encoding='utf-8') as f: f.write(my_projects_js) with open('project_attachments_data_real.js', 'w', encoding='utf-8') as f: f.write(attachments_js) print(f"\n已保存到文件:") print(f" - my_projects_data_real_food.js") print(f" - project_attachments_data_real.js") print(f"\n统计信息:") print(f" 有附件的项目总数: {len(projects_with_attachments)}") print(f" 涉及单元数: {len(unit_mapping)}") print(f" 总项目数: {sum(len(projects) for projects in unit_mapping.values())}") # 显示每个单元的项目数量 print(f"\n各单元项目数量:") for unit, projects in unit_mapping.items(): print(f" {unit}: {len(projects)} 个项目")