Files
ALL-teach_sys/frontend_化工/update_position_names.py

122 lines
4.5 KiB
Python
Raw Permalink Normal View History

#!/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()