#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json import re def fix_position_levels_final(): """ 最终修复项目详情数据中的岗位等级标签 """ # 读取能源岗位简历数据,建立岗位名称到等级的映射 with open("网页未导入数据/能源产业/能源岗位简历.json", 'r', encoding='utf-8') as f: resume_data = json.load(f) # 建立岗位名称到等级的映射字典 position_level_mapping = {} for item in resume_data: position_name = item.get("岗位名称", "") position_level = item.get("岗位等级标签", "技术骨干岗") if position_name: position_level_mapping[position_name] = position_level print("🔍 岗位等级映射表构建完成") print(f" 技术骨干岗: {len([p for p, l in position_level_mapping.items() if l == '技术骨干岗'])}个") print(f" 储备干部岗: {len([p for p, l in position_level_mapping.items() if l == '储备干部岗'])}个") print(f" 普通岗: {len([p for p, l in position_level_mapping.items() if l == '普通岗'])}个") # 读取当前的Mock数据 with open("src/mocks/projectLibraryMock.js", 'r', encoding='utf-8') as f: content = f.read() # 定义替换函数,支持多行匹配 def replace_level(match): spaces1 = match.group(1) current_level = match.group(2) spaces2 = match.group(3) position_name = match.group(4) spaces3 = match.group(5) # 查找正确的等级 correct_level = position_level_mapping.get(position_name, current_level) # 如果等级不同,则替换 if correct_level != current_level: print(f" 📝 更新 {position_name}: {current_level} → {correct_level}") return f'{spaces1}"level": "{correct_level}",{spaces2}"position": "{position_name}"{spaces3}' # 使用正则表达式替换所有的level字段,支持多行和空格 pattern = r'(\s*)"level":\s*"([^"]*)",(\s*)"position":\s*"([^"]*)"\s*(\s*)' updated_content = re.sub(pattern, replace_level, content) # 写入更新后的内容 with open("src/mocks/projectLibraryMock.js", 'w', encoding='utf-8') as f: f.write(updated_content) # 统计修复结果 updated_matches = re.findall(r'"level":\s*"([^"]*)".*?"position":\s*"([^"]*)"', updated_content) level_stats = {} change_count = 0 for level, position in updated_matches: if level not in level_stats: level_stats[level] = [] level_stats[level].append(position) # 检查是否有变化 original_level = "技术骨干岗" # 原来都是这个等级 correct_level = position_level_mapping.get(position, "技术骨干岗") if original_level != correct_level: change_count += 1 print(f"\n✅ 修复完成!共检查 {len(updated_matches)} 个岗位,其中 {change_count} 个等级标签需要更新") print("\n更新后的等级标签统计:") for level in ["技术骨干岗", "储备干部岗", "普通岗"]: if level in level_stats: positions = level_stats[level] print(f" {level}: {len(positions)}个岗位") for pos in positions[:3]: print(f" - {pos}") if len(positions) > 3: print(f" ... 还有{len(positions)-3}个岗位") print() if __name__ == "__main__": fix_position_levels_final()