Files
ALL-teach_sys/frontend_视觉设计/add_modified_resume_data.py

173 lines
7.4 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
为视觉设计岗位添加个人修改版简历数据
"""
import json
import os
import re
import shutil
from datetime import datetime
def read_markdown_file(file_path):
"""读取markdown文件内容"""
try:
with open(file_path, 'r', encoding='utf-8') as f:
return f.read()
except Exception as e:
print(f"读取文件失败 {file_path}: {e}")
return None
def add_modified_resume_data():
"""为指定岗位添加修改版简历数据"""
# 修改版简历文件映射
modified_resume_files = {
"UI设计师": "网页未导入数据/视觉设计产业/视觉设计修改版简历/UI设计师.md",
"包装设计师": "网页未导入数据/视觉设计产业/视觉设计修改版简历/包装设计师.md",
"摄影师": "网页未导入数据/视觉设计产业/视觉设计修改版简历/摄影师.md",
"角色原画师": "网页未导入数据/视觉设计产业/视觉设计修改版简历/角色原画师.md",
"影视灯光": "网页未导入数据/视觉设计产业/视觉设计修改版简历/影视灯光.md",
"摄影美术指导助理": "网页未导入数据/视觉设计产业/视觉设计修改版简历/摄影美术指导助理.md",
"品牌视觉内容策划": "网页未导入数据/视觉设计产业/视觉设计修改版简历/品牌视觉内容策划.md",
"影视摄像": "网页未导入数据/视觉设计产业/视觉设计修改版简历/影视摄像.md",
"AI绘画师": "网页未导入数据/视觉设计产业/视觉设计修改版简历/AI绘画师.md",
"CG总监助理": "网页未导入数据/视觉设计产业/视觉设计修改版简历/CG总监助理.md"
}
file_path = "src/mocks/resumeInterviewMock.js"
# 创建备份
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
backup_path = f"{file_path}.backup_add_modified_{timestamp}"
shutil.copy2(file_path, backup_path)
print(f"📦 已创建备份: {backup_path}")
try:
# 读取JS文件
with open(file_path, 'r', encoding='utf-8') as f:
js_content = f.read()
print(f"📊 开始处理 {len(modified_resume_files)} 个岗位的修改版简历...")
processed_count = 0
# 为每个岗位添加content字段
for position_title, md_file_path in modified_resume_files.items():
print(f"🔍 处理岗位: {position_title}")
# 读取修改版简历内容
modified_content = read_markdown_file(md_file_path)
if not modified_content:
print(f"⚠️ 跳过 {position_title}: 无法读取修改版简历")
continue
# 查找该岗位在JS文件中的位置
position_pattern = rf'"title":\s*"{re.escape(position_title)}"'
position_match = re.search(position_pattern, js_content)
if not position_match:
print(f"⚠️ 跳过 {position_title}: 在JS文件中未找到")
continue
# 找到该岗位对象的结束位置(下一个}之前)
start_pos = position_match.start()
# 向前找到这个岗位对象的开始位置(最近的{
obj_start = js_content.rfind('{', 0, start_pos)
if obj_start == -1:
print(f"⚠️ 跳过 {position_title}: 无法找到对象开始位置")
continue
# 向后找到这个岗位对象的结束位置
brace_count = 0
obj_end = obj_start
for i in range(obj_start, len(js_content)):
if js_content[i] == '{':
brace_count += 1
elif js_content[i] == '}':
brace_count -= 1
if brace_count == 0:
obj_end = i
break
if obj_end == obj_start:
print(f"⚠️ 跳过 {position_title}: 无法找到对象结束位置")
continue
# 提取原始对象内容
original_obj = js_content[obj_start:obj_end+1]
# 检查是否已经有content字段
if '"content"' in original_obj:
print(f"⚠️ 跳过 {position_title}: 已存在content字段")
continue
# 构造content字段假设原始版本来自现有简历数据
# 这里我们需要从岗位简历数据中提取原始版本
original_resume = f"# 对应岗位:{position_title}\\n\\n# 一、项目经历\\n\\n待补充项目经历内容...\\n\\n# 二、专业技能\\n\\n待补充专业技能内容...\\n\\n# 三、个人总结\\n\\n待补充个人总结内容..."
# 转义修改版内容中的引号和换行符
escaped_modified = modified_content.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n')
escaped_original = original_resume.replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n')
# 在对象结束前插入content字段
# 找到最后一个字段通常是requirements的结束位置
last_field_end = original_obj.rfind(']')
if last_field_end == -1:
last_field_end = original_obj.rfind('"')
if last_field_end == -1:
print(f"⚠️ 跳过 {position_title}: 无法找到插入位置")
continue
# 构造新的对象内容
content_field = f''',
"content": {{
"original": "{escaped_original}",
"modified": "{escaped_modified}"
}}'''
# 插入content字段
new_obj = original_obj[:last_field_end+1] + content_field + original_obj[last_field_end+1:-1] + original_obj[-1]
# 替换JS文件中的内容
js_content = js_content[:obj_start] + new_obj + js_content[obj_end+1:]
processed_count += 1
print(f"✅ 已处理 {position_title}")
# 写入更新后的JS文件
with open(file_path, 'w', encoding='utf-8') as f:
f.write(js_content)
print(f"📊 处理完成:")
print(f" - 总岗位数: {len(modified_resume_files)}")
print(f" - 成功处理: {processed_count}")
print(f"✅ 已更新 {file_path}")
# 验证JS语法
import subprocess
try:
result = subprocess.run(['node', '-c', file_path], capture_output=True, text=True)
if result.returncode == 0:
print("✅ JavaScript语法验证通过")
else:
print(f"❌ JavaScript语法验证失败: {result.stderr}")
# 恢复备份
shutil.copy2(backup_path, file_path)
print("🔄 已恢复原始文件")
except Exception as e:
print(f"⚠️ 无法验证JavaScript语法: {e}")
except Exception as e:
print(f"❌ 处理失败: {e}")
# 恢复备份
shutil.copy2(backup_path, file_path)
print("🔄 已恢复原始文件")
if __name__ == "__main__":
print("🚀 开始为视觉设计岗位添加修改版简历数据...")
add_modified_resume_data()
print("🎉 处理完成!")