主要内容: - 包含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>
122 lines
4.5 KiB
Python
122 lines
4.5 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
import json
|
||
import re
|
||
import datetime
|
||
import shutil
|
||
|
||
def get_position_levels_from_resume():
|
||
"""从化工岗位简历.json获取岗位等级映射"""
|
||
with open('网页未导入数据/化工产业/化工岗位简历.json', 'r', encoding='utf-8') as f:
|
||
data = json.load(f)
|
||
|
||
position_levels = {}
|
||
for item in data:
|
||
position = item.get('岗位名称', '').strip()
|
||
level = item.get('岗位等级标签', '').strip()
|
||
if position and level:
|
||
position_levels[position] = level
|
||
|
||
return position_levels
|
||
|
||
def update_positions():
|
||
"""更新项目中的岗位名称和等级,使其与化工岗位简历.json一致"""
|
||
|
||
# 获取正确的岗位等级
|
||
position_levels = get_position_levels_from_resume()
|
||
|
||
# 岗位名称映射(原名称 -> 正确名称)
|
||
position_name_mapping = {
|
||
'药物合成工程师': '医药中间体研发工程师',
|
||
'化工设备机械工程师': '化工设备维护员',
|
||
'安全工程师': 'EHS安全工程师',
|
||
'化工工艺安全工程师': '化工安全工程师',
|
||
'农药配方工程师': '农药合成工程师',
|
||
'农药剂型研发工程师': '农药合成工程师',
|
||
'农药研发工程师': '农药合成工程师',
|
||
'高级染料工程师': '染料工程师',
|
||
'安全管理经理': 'EHS安全工程师',
|
||
'质量保证经理QA': 'QA工程师',
|
||
'质量体系工程师': 'QA工程师',
|
||
'化工仪器仪表维护技术员': '化工仪表技术员',
|
||
'EHS工程师': 'EHS安全工程师',
|
||
'化工DCS工程师': '化工DCS操作员',
|
||
'DCS维护工程师': '化工DCS操作员',
|
||
'污水处理工程师': '污水处理工程师', # 保持原名,设为技术骨干岗
|
||
'PLC编程工程师': 'PLC 技术员'
|
||
}
|
||
|
||
# 读取mock文件
|
||
with open('src/mocks/projectLibraryMock.js', 'r', encoding='utf-8') as f:
|
||
content = f.read()
|
||
|
||
# 统计更新
|
||
updates_made = []
|
||
|
||
# 更新岗位名称和等级
|
||
for old_name, new_name in position_name_mapping.items():
|
||
# 查找并替换岗位名称
|
||
pattern = rf'("level":\s*"[^"]*",\s*\n\s*"position":\s*)"{re.escape(old_name)}"'
|
||
|
||
# 获取正确的等级
|
||
if new_name in position_levels:
|
||
correct_level = position_levels[new_name]
|
||
else:
|
||
# 对于找不到的岗位,使用合理的默认等级
|
||
if '工程师' in new_name or '工程师' in old_name:
|
||
correct_level = '技术骨干岗'
|
||
elif '技术员' in new_name or '操作员' in new_name:
|
||
correct_level = '普通岗'
|
||
else:
|
||
correct_level = '技术骨干岗'
|
||
|
||
# 创建替换模式,同时更新level和position
|
||
def replacer(match):
|
||
# 提取原始的level行
|
||
original = match.group(0)
|
||
# 构建新的内容
|
||
new_content = f'"level": "{correct_level}",\n "position": "{new_name}"'
|
||
updates_made.append(f'{old_name} → {new_name} [{correct_level}]')
|
||
return new_content
|
||
|
||
# 执行替换
|
||
pattern_with_level = rf'"level":\s*"[^"]*",\s*\n\s*"position":\s*"{re.escape(old_name)}"'
|
||
new_content = re.sub(pattern_with_level, replacer, content)
|
||
|
||
if new_content != content:
|
||
content = new_content
|
||
|
||
# 保存更新后的文件
|
||
with open('src/mocks/projectLibraryMock.js', 'w', encoding='utf-8') as f:
|
||
f.write(content)
|
||
|
||
# 显示更新报告
|
||
print("=" * 60)
|
||
print("岗位名称和等级更新报告")
|
||
print("=" * 60)
|
||
|
||
if updates_made:
|
||
print(f"\n✅ 成功更新了 {len(updates_made)} 个岗位:\n")
|
||
for update in updates_made:
|
||
print(f" • {update}")
|
||
else:
|
||
print("\n没有需要更新的岗位")
|
||
|
||
# 验证语法
|
||
import subprocess
|
||
result = subprocess.run(['node', '-c', 'src/mocks/projectLibraryMock.js'],
|
||
capture_output=True, text=True)
|
||
if result.returncode == 0:
|
||
print("\n✅ JavaScript语法检查通过")
|
||
else:
|
||
print(f"\n❌ JavaScript语法错误: {result.stderr}")
|
||
|
||
if __name__ == "__main__":
|
||
# 备份原文件
|
||
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
|
||
backup_file = f"src/mocks/projectLibraryMock.js.backup_{timestamp}"
|
||
shutil.copy('src/mocks/projectLibraryMock.js', backup_file)
|
||
print(f"✅ 已备份到: {backup_file}\n")
|
||
|
||
# 执行更新
|
||
update_positions() |