Files
ALL-teach_sys/frontend_视觉设计/fix_modal_data_mapping.py
KQL cd2e307402 初始化12个产业教务系统项目
主要内容:
- 包含12个产业的完整教务系统前端代码
- 智能启动脚本 (start-industry.sh)
- 可视化产业导航页面 (index.html)
- 项目文档 (README.md)

优化内容:
- 删除所有node_modules和.yoyo文件夹,从7.5GB减少到2.7GB
- 添加.gitignore文件避免上传不必要的文件
- 自动依赖管理和智能启动系统

产业列表:
1. 文旅产业 (5150)
2. 智能制造 (5151)
3. 智能开发 (5152)
4. 财经商贸 (5153)
5. 视觉设计 (5154)
6. 交通物流 (5155)
7. 大健康 (5156)
8. 土木水利 (5157)
9. 食品产业 (5158)
10. 化工产业 (5159)
11. 能源产业 (5160)
12. 环保产业 (5161)

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 14:14:14 +08:00

186 lines
6.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
import json
import os
from datetime import datetime
# 读取mock文件
mock_file = 'src/mocks/projectLibraryMock.js'
with open(mock_file, 'r', encoding='utf-8') as f:
content = f.read()
# 创建备份
backup_file = f"{mock_file}.backup_modal_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
with open(backup_file, 'w', encoding='utf-8') as f:
f.write(content)
print(f"已创建备份:{backup_file}")
# 岗位等级排序权重
level_order = {
"普通岗": 1,
"技术骨干岗": 2,
"储备干部岗": 3
}
# 查找getMockProjectDetail函数
detail_start = content.find('export const getMockProjectDetail = (id) => {')
if detail_start == -1:
print("未找到getMockProjectDetail函数")
exit(1)
# 找到projects数组的开始
projects_start = content.find('const projects = [', detail_start)
if projects_start == -1:
print("未找到projects数组")
exit(1)
# 找到projects数组的结束
array_end = -1
bracket_count = 0
in_string = False
escape_next = False
for i in range(projects_start, len(content)):
char = content[i]
if escape_next:
escape_next = False
continue
if char == '\\':
escape_next = True
continue
if char == '"' and not in_string:
in_string = True
elif char == '"' and in_string:
in_string = False
elif not in_string:
if char == '[':
bracket_count += 1
elif char == ']':
bracket_count -= 1
if bracket_count == 0:
array_end = i
break
if array_end == -1:
print("未找到projects数组结束")
exit(1)
# 提取projects数组内容
projects_content = content[projects_start:array_end+1]
# 修改每个项目的数据结构
import re
# 为每个项目添加applicablePositions字段复制positions数据并排序
def process_project(project_text):
# 查找positions数组
positions_match = re.search(r'"positions"\s*:\s*\[(.*?)\]', project_text, re.DOTALL)
if positions_match:
positions_content = positions_match.group(1)
# 检查是否已经存在applicablePositions
if '"applicablePositions"' not in project_text:
# 在positions后面添加applicablePositions
# 提取positions数组内容并排序
positions_items = []
# 查找所有position对象
position_pattern = r'\{\s*"level"\s*:\s*"([^"]+)"\s*,\s*"position"\s*:\s*"([^"]+)"\s*\}'
for match in re.finditer(position_pattern, positions_content):
level = match.group(1)
position = match.group(2)
positions_items.append({
'level': level,
'position': position,
'order': level_order.get(level, 99)
})
# 按等级排序
positions_items.sort(key=lambda x: x['order'])
# 构建新的applicablePositions数组
applicable_positions = []
for item in positions_items:
applicable_positions.append(f'''{{
"level": "{item['level']}",
"position": "{item['position']}"
}}''')
applicable_str = f'''"applicablePositions": [
{','.join(applicable_positions)}
],'''
# 在positions数组后插入applicablePositions
insert_pos = positions_match.end()
project_text = project_text[:insert_pos] + ',\n ' + applicable_str + project_text[insert_pos:]
# 处理unit字段将其拆分为compoundUnits和verticalUnits
unit_match = re.search(r'"unit"\s*:\s*"([^"]+)"', project_text)
if unit_match:
unit_content = unit_match.group(1)
# 如果包含" / ",说明有两部分
if ' / ' in unit_content:
parts = unit_content.split(' / ')
compound_unit = parts[0].strip()
vertical_unit = parts[1].strip()
else:
# 只有一个单元,默认为复合能力课
compound_unit = unit_content.strip()
vertical_unit = ""
# 构建新的单元字段
units_str = f'''"compoundUnits": ["{compound_unit}"],
"verticalUnits": [{"'"+vertical_unit+"'" if vertical_unit else ""}]'''
# 检查是否已经存在这些字段
if '"compoundUnits"' not in project_text and '"verticalUnits"' not in project_text:
# 在unit后面添加新字段
insert_pos = unit_match.end()
project_text = project_text[:insert_pos] + ',\n ' + units_str + project_text[insert_pos:]
return project_text
# 处理整个projects数组
new_content = content[:projects_start]
# 提取每个项目并处理
project_pattern = r'(\{\s*"id".*?\}(?=,\s*\{|\s*\];))'
projects = re.findall(project_pattern, projects_content, re.DOTALL)
processed_projects = []
for project in projects:
processed = process_project(project)
processed_projects.append(processed)
# 重建projects数组
new_projects_array = 'const projects = [\n ' + ',\n '.join(processed_projects) + '\n ];'
# 找到原数组结束位置的分号
semicolon_pos = content.find(';', array_end)
if semicolon_pos == -1:
semicolon_pos = array_end + 1
# 替换内容
new_content = content[:projects_start] + new_projects_array + content[semicolon_pos:]
# 写入文件
with open(mock_file, 'w', encoding='utf-8') as f:
f.write(new_content)
# 验证语法
result = os.popen(f'node -c {mock_file} 2>&1').read()
if result:
print(f"❌ 语法错误:{result}")
# 恢复备份
with open(backup_file, 'r', encoding='utf-8') as f:
content = f.read()
with open(mock_file, 'w', encoding='utf-8') as f:
f.write(content)
print("已恢复备份")
else:
print("✓ 语法验证通过")
print("✓ 成功添加applicablePositions和单元数组字段")
print("✓ 岗位已按照\"普通岗-技术骨干岗-储备干部岗\"排序")