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