149 lines
5.2 KiB
Python
149 lines
5.2 KiB
Python
|
|
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)} 个项目")
|