Files
ALL-teach_sys/frontend_能源/safe_update_modified_resumes.py

115 lines
4.3 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import os
import datetime
import shutil
import re
def read_modified_resumes():
"""读取所有修改版简历文件"""
modified_resumes = {}
folder_path = "网页未导入数据/能源产业/能源修改版简历"
for filename in os.listdir(folder_path):
if filename.endswith('.md'):
position_name = filename.replace('.md', '')
file_path = os.path.join(folder_path, filename)
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
modified_resumes[position_name] = content
return modified_resumes
def update_mock_safely():
"""安全地更新Mock文件"""
mock_file = "src/mocks/resumeInterviewMock.js"
# 备份
backup_path = f"{mock_file}.backup_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}"
shutil.copy(mock_file, backup_path)
print(f"✅ 已备份文件到:{backup_path}")
# 读取修改版简历
modified_resumes = read_modified_resumes()
print(f"📚 找到 {len(modified_resumes)} 个修改版简历文件")
# 读取mock文件内容
with open(mock_file, 'r', encoding='utf-8') as f:
content = f.read()
# 提取resumeTemplates部分
templates_match = re.search(r'const resumeTemplates = ({[\s\S]*?});', content)
if not templates_match:
print("❌ 未找到resumeTemplates")
return
templates_str = templates_match.group(1)
# 安全地解析为Python对象
# 由于可能有已存在的modified字段需要先清理
try:
# 使用正则表达式提取各个岗位群
templates = {}
# 匹配每个岗位群
group_pattern = r'"([^"]+)":\s*\[([\s\S]*?)\](?=,\s*"|\s*})'
for match in re.finditer(group_pattern, templates_str):
group_name = match.group(1)
group_content = match.group(2)
# 解析该岗位群的模板
templates[group_name] = []
# 匹配每个岗位模板
position_pattern = r'{\s*"position":\s*"([^"]+)"[^}]*?"content":\s*{[^}]*?"original":\s*"([^"\\]*(?:\\.[^"\\]*)*)"[^}]*?}[^}]*?}'
for pos_match in re.finditer(position_pattern, group_content):
position_name = pos_match.group(1)
original_content = pos_match.group(2)
template_obj = {
"position": position_name,
"content": {
"original": original_content,
"modified": ""
}
}
# 查找修改版简历
if position_name in modified_resumes:
template_obj["content"]["modified"] = modified_resumes[position_name]
print(f" ✅ 匹配到: {position_name}")
elif position_name.replace('PACK', 'pack') in modified_resumes:
# 处理大小写问题
template_obj["content"]["modified"] = modified_resumes[position_name.replace('PACK', 'pack')]
print(f" ✅ 匹配到: {position_name} (大小写转换)")
elif position_name.replace('pack', 'PACK') in modified_resumes:
template_obj["content"]["modified"] = modified_resumes[position_name.replace('pack', 'PACK')]
print(f" ✅ 匹配到: {position_name} (大小写转换)")
templates[group_name].append(template_obj)
# 重新生成resumeTemplates
new_templates_str = json.dumps(templates, ensure_ascii=False, indent=2)
# 替换原来的resumeTemplates
new_content = content[:templates_match.start(1)] + new_templates_str + content[templates_match.end(1):]
# 写回文件
with open(mock_file, 'w', encoding='utf-8') as f:
f.write(new_content)
print("\n✅ 成功更新Mock文件")
except Exception as e:
print(f"❌ 更新失败: {e}")
# 恢复备份
shutil.copy(backup_path, mock_file)
print("已恢复备份")
if __name__ == "__main__":
update_mock_safely()