Files
ALL-teach_sys/frontend_智能制造/scripts/update_mockdata.py

88 lines
3.3 KiB
Python
Raw Normal View History

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