#!/usr/bin/env python3 # -*- coding: utf-8 -*- import re from datetime import datetime # 定义等级排序 LEVEL_ORDER = { '普通岗': 1, '技术骨干岗': 2, '储备干部岗': 3 } def sort_positions(positions_str): """对适用岗位数组进行排序""" # 匹配所有的岗位对象 pattern = r"\{\s*level:\s*['\"]([^'\"]+)['\"]\s*,\s*position:\s*['\"]([^'\"]+)['\"]\s*\}" positions = [] for match in re.finditer(pattern, positions_str): level = match.group(1) position = match.group(2) positions.append({'level': level, 'position': position}) # 按等级排序 positions.sort(key=lambda x: LEVEL_ORDER.get(x['level'], 999)) # 生成排序后的字符串 sorted_positions = [f"{{ level: '{p['level']}', position: '{p['position']}' }}" for p in positions] return ', '.join(sorted_positions) def update_project_library_mock(): file_path = 'src/mocks/projectLibraryMock.js' # 备份文件 backup_path = f'{file_path}.backup_{datetime.now().strftime("%Y%m%d_%H%M%S")}_sorted' 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}") # 记录处理的项目数 count = 0 # 定义替换函数 def replace_positions(match): nonlocal count positions_str = match.group(1) sorted_str = sort_positions(positions_str) count += 1 return f"applicablePositions: [{sorted_str}]" # 替换所有的applicablePositions updated_content = re.sub( r'applicablePositions:\s*\[(.*?)\]', replace_positions, content, flags=re.DOTALL ) # 写回文件 with open(file_path, 'w', encoding='utf-8') as f: f.write(updated_content) print(f"projectLibraryMock.js 更新完成,共排序了 {count} 个项目的适用岗位") def main(): print("=" * 50) print("开始对项目库中的适用岗位进行排序") print("排序规则:普通岗 -> 技术骨干岗 -> 储备干部岗") print("=" * 50) update_project_library_mock() print("\n" + "=" * 50) print("排序完成!") print("=" * 50) if __name__ == "__main__": main()