120 lines
4.7 KiB
Python
120 lines
4.7 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
import json
|
|||
|
|
import re
|
|||
|
|
|
|||
|
|
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 fix_position_levels():
|
|||
|
|
"""修正项目详情中的岗位等级"""
|
|||
|
|
# 获取正确的岗位等级映射
|
|||
|
|
resume_levels = get_position_levels_from_resume()
|
|||
|
|
|
|||
|
|
# 需要修正的岗位等级映射
|
|||
|
|
fixes_needed = {
|
|||
|
|
'精细化工操作技术员': '普通岗',
|
|||
|
|
'产品工艺工程师助理': '储备干部岗',
|
|||
|
|
'化工制程工程师': '技术骨干岗',
|
|||
|
|
'日化调香师': '技术骨干岗',
|
|||
|
|
'实验室主任助理': '储备干部岗',
|
|||
|
|
'化妆品研发助理': '技术骨干岗',
|
|||
|
|
'自动化设备维护技术员': '普通岗'
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 对于在简历中找不到的岗位,根据命名规则设置合理的等级
|
|||
|
|
not_found_positions = {
|
|||
|
|
'药物合成工程师': '技术骨干岗',
|
|||
|
|
'化工设备机械工程师': '技术骨干岗',
|
|||
|
|
'安全工程师': '技术骨干岗',
|
|||
|
|
'化工工艺安全工程师': '技术骨干岗', # 原来是管理岗,改为技术骨干岗
|
|||
|
|
'农药配方工程师': '技术骨干岗',
|
|||
|
|
'农药剂型研发工程师': '技术骨干岗',
|
|||
|
|
'农药研发工程师': '技术骨干岗', # 原来是管理岗,改为技术骨干岗
|
|||
|
|
'高级染料工程师': '技术骨干岗', # 原来是管理岗,改为技术骨干岗
|
|||
|
|
'安全管理经理': '技术骨干岗', # 原来是管理岗,改为技术骨干岗
|
|||
|
|
'质量保证经理QA': '技术骨干岗', # 原来是管理岗,改为技术骨干岗
|
|||
|
|
'质量体系工程师': '技术骨干岗',
|
|||
|
|
'化工仪器仪表维护技术员': '普通岗',
|
|||
|
|
'EHS工程师': '技术骨干岗',
|
|||
|
|
'化工DCS工程师': '技术骨干岗',
|
|||
|
|
'DCS维护工程师': '技术骨干岗',
|
|||
|
|
'污水处理工程师': '技术骨干岗',
|
|||
|
|
'PLC编程工程师': '技术骨干岗'
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 合并所有需要修正的岗位
|
|||
|
|
all_fixes = {**fixes_needed, **not_found_positions}
|
|||
|
|
|
|||
|
|
# 读取mock文件
|
|||
|
|
with open('src/mocks/projectLibraryMock.js', 'r', encoding='utf-8') as f:
|
|||
|
|
lines = f.readlines()
|
|||
|
|
|
|||
|
|
# 修正岗位等级
|
|||
|
|
new_lines = []
|
|||
|
|
for i, line in enumerate(lines):
|
|||
|
|
# 检查是否包含需要修正的岗位
|
|||
|
|
modified = False
|
|||
|
|
for position, correct_level in all_fixes.items():
|
|||
|
|
# 查找岗位名称
|
|||
|
|
if f'"position": "{position}"' in line:
|
|||
|
|
# 检查前一行是否有level
|
|||
|
|
if i > 0 and '"level":' in lines[i-1]:
|
|||
|
|
# 修改前一行的level
|
|||
|
|
prev_line = lines[i-1]
|
|||
|
|
# 替换level值
|
|||
|
|
new_prev_line = re.sub(
|
|||
|
|
r'"level":\s*"[^"]*"',
|
|||
|
|
f'"level": "{correct_level}"',
|
|||
|
|
prev_line
|
|||
|
|
)
|
|||
|
|
if new_prev_line != prev_line:
|
|||
|
|
# 如果前一行已经添加到new_lines,需要替换它
|
|||
|
|
if new_lines and new_lines[-1] == prev_line:
|
|||
|
|
new_lines[-1] = new_prev_line
|
|||
|
|
print(f"✅ 修正: {position} → {correct_level}")
|
|||
|
|
modified = True
|
|||
|
|
|
|||
|
|
if not modified:
|
|||
|
|
new_lines.append(line)
|
|||
|
|
else:
|
|||
|
|
new_lines.append(line)
|
|||
|
|
|
|||
|
|
# 保存修正后的文件
|
|||
|
|
with open('src/mocks/projectLibraryMock.js', 'w', encoding='utf-8') as f:
|
|||
|
|
f.writelines(new_lines)
|
|||
|
|
|
|||
|
|
print("\n✅ 岗位等级修正完成!")
|
|||
|
|
|
|||
|
|
# 验证语法
|
|||
|
|
import subprocess
|
|||
|
|
result = subprocess.run(['node', '-c', 'src/mocks/projectLibraryMock.js'],
|
|||
|
|
capture_output=True, text=True)
|
|||
|
|
if result.returncode == 0:
|
|||
|
|
print("✅ JavaScript语法检查通过")
|
|||
|
|
else:
|
|||
|
|
print(f"❌ JavaScript语法错误: {result.stderr}")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
# 备份原文件
|
|||
|
|
import shutil
|
|||
|
|
import datetime
|
|||
|
|
|
|||
|
|
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}")
|
|||
|
|
|
|||
|
|
# 执行修正
|
|||
|
|
fix_position_levels()
|