Files
ALL-teach_sys/frontend_食品/update_food_projects_with_attachments.py

149 lines
5.2 KiB
Python
Raw Normal View History

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)} 个项目")