Files
ALL-teach_sys/frontend_视觉设计/fix_modal_fields.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

144 lines
4.6 KiB
Python
Raw 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 re
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_fix_{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 = {
"普通岗": 0,
"技术骨干岗": 1,
"储备干部岗": 2
}
# 处理每个项目添加applicablePositions
def fix_positions_field(text):
# 查找所有positions数组
pattern = r'("positions"\s*:\s*\[)((?:\s*\{[^}]+\}\s*,?\s*)+)(\])'
def process_match(match):
prefix = match.group(1)
positions_content = match.group(2)
suffix = match.group(3)
# 提取所有岗位对象
pos_pattern = r'\{\s*"level"\s*:\s*"([^"]+)"\s*,\s*"position"\s*:\s*"([^"]+)"\s*\}'
positions = []
for m in re.finditer(pos_pattern, positions_content):
level = m.group(1)
position = m.group(2)
positions.append({
'level': level,
'position': position,
'order': level_order.get(level, 99)
})
# 按等级排序
positions.sort(key=lambda x: x['order'])
# 重建positions数组已排序
sorted_positions = []
for p in positions:
sorted_positions.append(f'''
{{
"level": "{p['level']}",
"position": "{p['position']}"
}}''')
new_positions = prefix + ','.join(sorted_positions) + '\n ' + suffix
# 添加applicablePositions保持相同的排序
applicable = []
for p in positions:
applicable.append(f'''
{{
"level": "{p['level']}",
"position": "{p['position']}"
}}''')
applicable_positions = ',\n "applicablePositions": [' + ','.join(applicable) + '\n ]'
return new_positions + applicable_positions
# 替换所有positions数组
text = re.sub(pattern, process_match, text)
return text
# 处理unit字段添加compoundUnits和verticalUnits
def fix_unit_fields(text):
# 查找所有unit字段
pattern = r'"unit"\s*:\s*"([^"]+)"'
def process_match(match):
unit_content = match.group(1)
result = f'"unit": "{unit_content}"'
# 拆分单元信息
if ' / ' in unit_content:
parts = unit_content.split(' / ')
compound = parts[0].strip()
vertical = parts[1].strip()
result += f',\n "compoundUnits": ["{compound}"],\n "verticalUnits": ["{vertical}"]'
else:
compound = unit_content.strip()
result += f',\n "compoundUnits": ["{compound}"],\n "verticalUnits": []'
return result
# 只处理getMockProjectDetail函数中的unit字段
detail_start = text.find('export const getMockProjectDetail')
if detail_start > 0:
# 找到函数结束位置
func_end = text.find('export const', detail_start + 1)
if func_end == -1:
func_end = len(text)
# 只在这个函数范围内替换
before = text[:detail_start]
func_content = text[detail_start:func_end]
after = text[func_end:]
# 检查是否已经有compoundUnits
if '"compoundUnits"' not in func_content:
func_content = re.sub(pattern, process_match, func_content)
text = before + func_content + after
return text
# 应用修复
new_content = fix_positions_field(content)
new_content = fix_unit_fields(new_content)
# 写入文件
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("✓ 成功添加compoundUnits和verticalUnits字段")
print("✓ 岗位已按照\"普通岗→技术骨干岗→储备干部岗\"排序")