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()
|