#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json import re # 读取简历映射数据 with open('/Users/apple/Documents/cursor/教务系统/frontend/scripts/resume_mapping.json', 'r', encoding='utf-8') as f: position_map = json.load(f) # 读取当前的mockData.js文件 with open('/Users/apple/Documents/cursor/教务系统/frontend/src/data/mockData.js', 'r', encoding='utf-8') as f: mockdata_lines = f.readlines() # 创建一个函数来转义字符串用于JavaScript def escape_for_js(text): # 转义反引号和反斜杠 text = text.replace('\\', '\\\\') text = text.replace('`', '\\`') text = text.replace('${', '\\${') return text # 更新计数器 update_count = 0 not_found_positions = [] # 遍历所有行,找到需要更新的位置 i = 0 while i < len(mockdata_lines): line = mockdata_lines[i] # 查找jobTitle字段 if 'jobTitle:' in line: # 提取职位名称 match = re.search(r'jobTitle:\s*["\']([^"\']+)["\']', line) if match: job_title = match.group(1) # 检查是否有对应的简历数据 if job_title in position_map: print(f"更新岗位: {job_title}") update_count += 1 # 找到resumeContent的起始位置 j = i + 1 while j < len(mockdata_lines) and 'resumeContent:' not in mockdata_lines[j]: j += 1 if j < len(mockdata_lines): # 找到resumeContent的结束位置(下一个},) k = j + 1 brace_count = 1 while k < len(mockdata_lines) and brace_count > 0: if '{' in mockdata_lines[k]: brace_count += mockdata_lines[k].count('{') if '}' in mockdata_lines[k]: brace_count -= mockdata_lines[k].count('}') k += 1 # 构建新的resumeContent resume_data = position_map[job_title] new_content = [] new_content.append(" resumeContent: {\n") new_content.append(f" projectExperience: `{escape_for_js(resume_data['projectExperience'])}`,\n") new_content.append(f" skills: `{escape_for_js(resume_data['skills'])}`,\n") new_content.append(f" personalSummary: `{escape_for_js(resume_data['personalSummary'])}`,\n") new_content.append(" },\n") # 替换原有内容 mockdata_lines[j:k] = new_content i = j + len(new_content) continue else: not_found_positions.append(job_title) i += 1 # 写回更新后的内容 with open('/Users/apple/Documents/cursor/教务系统/frontend/src/data/mockData.js', 'w', encoding='utf-8') as f: f.writelines(mockdata_lines) print(f"\n更新完成!") print(f"成功更新了 {update_count} 个岗位的简历数据") if not_found_positions: print(f"\n以下 {len(not_found_positions)} 个岗位在简历数据中未找到匹配:") for pos in not_found_positions: print(f" - {pos}")