- 包含4个产业方向的前端项目:智能开发、智能制造、大健康、财经商贸 - 已清理node_modules、.yoyo等大文件,项目大小从2.6GB优化至631MB - 配置完善的.gitignore文件 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
182 lines
6.2 KiB
Python
182 lines
6.2 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
|
||
import json
|
||
import os
|
||
import re
|
||
|
||
def load_modified_resumes():
|
||
"""加载大健康修改版简历"""
|
||
modified_folder = '网页未导入数据/大健康产业/大健康修改版简历'
|
||
modified_resumes = {}
|
||
|
||
for filename in os.listdir(modified_folder):
|
||
if filename.endswith('.md'):
|
||
position_name = filename.replace('.md', '')
|
||
filepath = os.path.join(modified_folder, filename)
|
||
|
||
with open(filepath, 'r', encoding='utf-8') as f:
|
||
content = f.read()
|
||
modified_resumes[position_name] = content
|
||
|
||
return modified_resumes
|
||
|
||
def get_modified_positions():
|
||
"""获取有修改版的岗位列表"""
|
||
modified_resumes = load_modified_resumes()
|
||
return list(modified_resumes.keys())
|
||
|
||
def update_resumeinterview_mock():
|
||
"""更新resumeInterviewMock.js中的modified字段"""
|
||
|
||
# 加载修改版简历
|
||
modified_resumes = load_modified_resumes()
|
||
print(f"找到 {len(modified_resumes)} 个修改版简历:")
|
||
for position in modified_resumes.keys():
|
||
print(f" - {position}")
|
||
|
||
# 读取当前的mock文件
|
||
with open('src/mocks/resumeInterviewMock.js', '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 False
|
||
|
||
templates_json_str = templates_match.group(1)
|
||
|
||
# 解析JSON
|
||
try:
|
||
templates_data = json.loads(templates_json_str)
|
||
except json.JSONDecodeError as e:
|
||
print(f"JSON解析错误: {e}")
|
||
return False
|
||
|
||
# 更新modified字段
|
||
updated_count = 0
|
||
for group_name, templates in templates_data.items():
|
||
for template in templates:
|
||
position_name = template['position']
|
||
|
||
# 检查是否有对应的修改版简历
|
||
matching_key = None
|
||
for key in modified_resumes.keys():
|
||
# 处理可能的名称差异(如"营养师助理" vs "营养师")
|
||
if key == position_name or key.replace('助理', '') == position_name or position_name.startswith(key):
|
||
matching_key = key
|
||
break
|
||
|
||
if matching_key:
|
||
# 更新modified字段
|
||
template['content']['modified'] = modified_resumes[matching_key]
|
||
updated_count += 1
|
||
print(f"✅ 更新: {position_name} <- {matching_key}")
|
||
|
||
print(f"\n共更新了 {updated_count} 个岗位的修改版简历")
|
||
|
||
# 重新构建完整的文件内容
|
||
new_templates_str = json.dumps(templates_data, ensure_ascii=False, indent=2)
|
||
new_content = re.sub(
|
||
r'const resumeTemplates = \{[\s\S]*?\};',
|
||
f'const resumeTemplates = {new_templates_str};',
|
||
content,
|
||
count=1
|
||
)
|
||
|
||
# 备份原文件
|
||
import shutil
|
||
from datetime import datetime
|
||
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
|
||
backup_file = f'src/mocks/resumeInterviewMock.js.backup_modified_{timestamp}'
|
||
shutil.copy('src/mocks/resumeInterviewMock.js', backup_file)
|
||
print(f"\n已备份原文件到: {backup_file}")
|
||
|
||
# 写回文件
|
||
with open('src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f:
|
||
f.write(new_content)
|
||
|
||
print("✅ 成功更新 resumeInterviewMock.js")
|
||
return True
|
||
|
||
def update_has_modified_version_list():
|
||
"""更新hasRealModifiedVersion函数中的岗位列表"""
|
||
|
||
# 获取有修改版的岗位列表
|
||
modified_positions = get_modified_positions()
|
||
|
||
# 读取ResumeInterviewPage组件
|
||
page_file = 'src/pages/ResumeInterviewPage/index.jsx'
|
||
with open(page_file, 'r', encoding='utf-8') as f:
|
||
content = f.read()
|
||
|
||
# 查找hasRealModifiedVersion函数
|
||
pattern = r'const hasRealModifiedVersion = \(positionTitle\) => \{[\s\S]*?const modifiedPositions = \[([\s\S]*?)\];'
|
||
match = re.search(pattern, content)
|
||
|
||
if match:
|
||
# 构建新的岗位列表
|
||
new_positions_list = ',\n '.join([f'"{pos}"' for pos in modified_positions])
|
||
new_positions_array = f'[\n {new_positions_list}\n ]'
|
||
|
||
# 替换旧的岗位列表
|
||
new_function = f'''const hasRealModifiedVersion = (positionTitle) => {{
|
||
const modifiedPositions = {new_positions_array};'''
|
||
|
||
new_content = re.sub(
|
||
r'const hasRealModifiedVersion = \(positionTitle\) => \{[\s\S]*?const modifiedPositions = \[[^\]]*?\]',
|
||
new_function,
|
||
content,
|
||
count=1
|
||
)
|
||
|
||
# 备份并更新文件
|
||
import shutil
|
||
from datetime import datetime
|
||
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
|
||
backup_file = f'{page_file}.backup_{timestamp}'
|
||
shutil.copy(page_file, backup_file)
|
||
|
||
with open(page_file, 'w', encoding='utf-8') as f:
|
||
f.write(new_content)
|
||
|
||
print(f"\n✅ 更新了 ResumeInterviewPage 中的 hasRealModifiedVersion 函数")
|
||
print(f"包含 {len(modified_positions)} 个有修改版的岗位")
|
||
else:
|
||
print("警告:无法找到hasRealModifiedVersion函数")
|
||
|
||
def verify_syntax():
|
||
"""验证文件语法"""
|
||
import subprocess
|
||
|
||
result = subprocess.run(
|
||
['node', '-c', 'src/mocks/resumeInterviewMock.js'],
|
||
capture_output=True,
|
||
text=True
|
||
)
|
||
|
||
if result.returncode == 0:
|
||
print("\n✅ resumeInterviewMock.js 语法检查通过")
|
||
return True
|
||
else:
|
||
print(f"\n❌ 语法错误:{result.stderr[:200]}")
|
||
return False
|
||
|
||
def main():
|
||
print("开始更新修改版简历数据...\n")
|
||
|
||
# 更新resumeInterviewMock.js中的modified字段
|
||
if update_resumeinterview_mock():
|
||
# 更新ResumeInterviewPage中的岗位列表
|
||
update_has_modified_version_list()
|
||
|
||
# 验证语法
|
||
verify_syntax()
|
||
|
||
print("\n🎉 修改版简历数据更新完成!")
|
||
else:
|
||
print("\n❌ 更新失败")
|
||
|
||
if __name__ == "__main__":
|
||
main() |