#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json import re from datetime import datetime # 读取岗位等级数据 def load_job_levels(): with open('网页未导入数据/文旅产业/岗位等级.json', 'r', encoding='utf-8') as f: data = json.load(f) # 创建岗位名称到等级的映射 job_levels_map = {} for item in data: job_name = item['❌岗位名称'] level = item['前端查询名称'] job_levels_map[job_name] = level return job_levels_map # 更新projectLibraryMock.js文件中的applicablePositions def update_project_library_mock(job_levels_map): file_path = 'src/mocks/projectLibraryMock.js' # 备份文件 backup_path = f'{file_path}.backup_{datetime.now().strftime("%Y%m%d_%H%M%S")}_levels' with open(file_path, 'r', encoding='utf-8') as f: content = f.read() with open(backup_path, 'w', encoding='utf-8') as f: f.write(content) print(f"已备份: {backup_path}") # 定义一个函数来更新单个applicablePositions数组 def update_positions_array(match): positions_str = match.group(1) # 匹配所有的岗位对象 pattern = r"\{\s*level:\s*['\"]([^'\"]+)['\"]\s*,\s*position:\s*['\"]([^'\"]+)['\"]\s*\}" updated_positions = [] for pos_match in re.finditer(pattern, positions_str): old_level = pos_match.group(1) position_name = pos_match.group(2) # 查找正确的等级 if position_name in job_levels_map: new_level = job_levels_map[position_name] updated_positions.append(f"{{ level: '{new_level}', position: '{position_name}' }}") if old_level != new_level: print(f" 更新: {position_name}: {old_level} -> {new_level}") else: # 保持原样 updated_positions.append(f"{{ level: '{old_level}', position: '{position_name}' }}") print(f" 未找到匹配: {position_name}") return f"applicablePositions: [{', '.join(updated_positions)}]" # 更新所有的applicablePositions updated_content = re.sub( r'applicablePositions:\s*\[(.*?)\]', update_positions_array, content, flags=re.DOTALL ) # 写回文件 with open(file_path, 'w', encoding='utf-8') as f: f.write(updated_content) print(f"projectLibraryMock.js 更新完成") # 主函数 def main(): print("=" * 50) print("开始更新项目库中的岗位等级数据") print("=" * 50) # 加载岗位等级映射 job_levels_map = load_job_levels() print(f"已加载 {len(job_levels_map)} 个岗位等级映射\n") # 更新文件 print("更新项目库Mock数据...") update_project_library_mock(job_levels_map) print("\n" + "=" * 50) print("所有更新完成!") print("=" * 50) if __name__ == "__main__": main()