184 lines
5.8 KiB
Python
184 lines
5.8 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
|
|||
|
|
import re
|
|||
|
|
from datetime import datetime
|
|||
|
|
|
|||
|
|
def create_backup(file_path):
|
|||
|
|
"""创建备份文件"""
|
|||
|
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|||
|
|
backup_path = f"{file_path}.backup_{timestamp}"
|
|||
|
|
with open(file_path, 'r', encoding='utf-8') as f:
|
|||
|
|
content = f.read()
|
|||
|
|
with open(backup_path, 'w', encoding='utf-8') as f:
|
|||
|
|
f.write(content)
|
|||
|
|
print(f"已创建备份: {backup_path}")
|
|||
|
|
return backup_path
|
|||
|
|
|
|||
|
|
def find_all_positions_with_modified():
|
|||
|
|
"""查找所有有modified字段的岗位"""
|
|||
|
|
file_path = 'src/mocks/resumeInterviewMock.js'
|
|||
|
|
|
|||
|
|
with open(file_path, 'r', encoding='utf-8') as f:
|
|||
|
|
lines = f.readlines()
|
|||
|
|
|
|||
|
|
positions_with_modified = []
|
|||
|
|
for i, line in enumerate(lines):
|
|||
|
|
if 'modified:' in line and '`' in line:
|
|||
|
|
# 向上查找最近的position定义
|
|||
|
|
for j in range(i-1, max(0, i-50), -1):
|
|||
|
|
if 'position:' in lines[j] and '"' in lines[j]:
|
|||
|
|
# 提取岗位名称
|
|||
|
|
match = re.search(r'position:\s*"([^"]+)"', lines[j])
|
|||
|
|
if match:
|
|||
|
|
position_name = match.group(1)
|
|||
|
|
positions_with_modified.append({
|
|||
|
|
'name': position_name,
|
|||
|
|
'position_line': j + 1,
|
|||
|
|
'modified_line': i + 1
|
|||
|
|
})
|
|||
|
|
break
|
|||
|
|
|
|||
|
|
return positions_with_modified
|
|||
|
|
|
|||
|
|
def remove_modified_for_positions():
|
|||
|
|
"""删除指定岗位的modified字段"""
|
|||
|
|
file_path = 'src/mocks/resumeInterviewMock.js'
|
|||
|
|
|
|||
|
|
# 创建备份
|
|||
|
|
create_backup(file_path)
|
|||
|
|
|
|||
|
|
# 有真实修改版的岗位列表(这些要保留modified)
|
|||
|
|
real_modified_positions = [
|
|||
|
|
"会展策划师",
|
|||
|
|
"会展执行助理",
|
|||
|
|
"会展讲解员",
|
|||
|
|
"活动策划师",
|
|||
|
|
"活动执行",
|
|||
|
|
"漫展策划师",
|
|||
|
|
"旅游规划师",
|
|||
|
|
"旅游计调专员",
|
|||
|
|
"景区运营专员",
|
|||
|
|
"文旅运营总监助理"
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# 读取文件内容
|
|||
|
|
with open(file_path, 'r', encoding='utf-8') as f:
|
|||
|
|
content = f.read()
|
|||
|
|
|
|||
|
|
# 查找所有有modified的岗位
|
|||
|
|
positions = find_all_positions_with_modified()
|
|||
|
|
|
|||
|
|
print("\n找到的所有有modified字段的岗位:")
|
|||
|
|
for pos in positions:
|
|||
|
|
status = "保留" if pos['name'] in real_modified_positions else "删除"
|
|||
|
|
print(f" [{status}] {pos['name']} (行 {pos['position_line']} -> {pos['modified_line']})")
|
|||
|
|
|
|||
|
|
# 处理每个需要删除modified的岗位
|
|||
|
|
positions_to_remove = [p for p in positions if p['name'] not in real_modified_positions]
|
|||
|
|
|
|||
|
|
# 从后往前处理,避免行号变化影响
|
|||
|
|
positions_to_remove.sort(key=lambda x: x['modified_line'], reverse=True)
|
|||
|
|
|
|||
|
|
lines = content.split('\n')
|
|||
|
|
|
|||
|
|
for pos in positions_to_remove:
|
|||
|
|
print(f"\n处理 {pos['name']}...")
|
|||
|
|
|
|||
|
|
# 找到modified字段的起始和结束位置
|
|||
|
|
modified_line_idx = pos['modified_line'] - 1
|
|||
|
|
|
|||
|
|
# 找到modified字段的开始(包括可能的逗号)
|
|||
|
|
start_idx = modified_line_idx
|
|||
|
|
# 向前查找逗号
|
|||
|
|
for i in range(modified_line_idx - 1, max(0, modified_line_idx - 5), -1):
|
|||
|
|
if ',' in lines[i]:
|
|||
|
|
start_idx = i
|
|||
|
|
break
|
|||
|
|
|
|||
|
|
# 找到modified字段的结束(找到闭合的反引号)
|
|||
|
|
end_idx = modified_line_idx
|
|||
|
|
in_template = False
|
|||
|
|
for i in range(modified_line_idx, min(len(lines), modified_line_idx + 1000)):
|
|||
|
|
if '`' in lines[i]:
|
|||
|
|
if not in_template and 'modified:' in lines[i]:
|
|||
|
|
in_template = True
|
|||
|
|
elif in_template:
|
|||
|
|
end_idx = i
|
|||
|
|
break
|
|||
|
|
|
|||
|
|
# 删除这些行
|
|||
|
|
print(f" 删除行 {start_idx + 1} 到 {end_idx + 1}")
|
|||
|
|
del lines[start_idx:end_idx + 1]
|
|||
|
|
|
|||
|
|
# 保存文件
|
|||
|
|
new_content = '\n'.join(lines)
|
|||
|
|
with open(file_path, 'w', encoding='utf-8') as f:
|
|||
|
|
f.write(new_content)
|
|||
|
|
|
|||
|
|
print(f"\n已删除 {len(positions_to_remove)} 个岗位的modified字段")
|
|||
|
|
|
|||
|
|
def verify_final_state():
|
|||
|
|
"""验证最终状态"""
|
|||
|
|
positions = find_all_positions_with_modified()
|
|||
|
|
|
|||
|
|
print("\n" + "=" * 50)
|
|||
|
|
print("最终验证结果:")
|
|||
|
|
print(f"还有modified字段的岗位(共{len(positions)}个):")
|
|||
|
|
|
|||
|
|
real_modified_positions = [
|
|||
|
|
"会展策划师",
|
|||
|
|
"会展执行助理",
|
|||
|
|
"会展讲解员",
|
|||
|
|
"活动策划师",
|
|||
|
|
"活动执行",
|
|||
|
|
"漫展策划师",
|
|||
|
|
"旅游规划师",
|
|||
|
|
"旅游计调专员",
|
|||
|
|
"景区运营专员",
|
|||
|
|
"文旅运营总监助理"
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# 分类显示
|
|||
|
|
correct = []
|
|||
|
|
incorrect = []
|
|||
|
|
|
|||
|
|
for pos in positions:
|
|||
|
|
if pos['name'] in real_modified_positions:
|
|||
|
|
correct.append(pos['name'])
|
|||
|
|
else:
|
|||
|
|
incorrect.append(pos['name'])
|
|||
|
|
|
|||
|
|
if correct:
|
|||
|
|
print("\n✓ 正确保留的岗位:")
|
|||
|
|
for name in correct:
|
|||
|
|
print(f" - {name}")
|
|||
|
|
|
|||
|
|
if incorrect:
|
|||
|
|
print("\n✗ 不应该有modified的岗位(需要手动处理):")
|
|||
|
|
for name in incorrect:
|
|||
|
|
print(f" - {name}")
|
|||
|
|
|
|||
|
|
# 检查是否有遗漏
|
|||
|
|
missing = []
|
|||
|
|
for name in real_modified_positions:
|
|||
|
|
if name not in [p['name'] for p in positions]:
|
|||
|
|
missing.append(name)
|
|||
|
|
|
|||
|
|
if missing:
|
|||
|
|
print("\n⚠️ 应该有modified但没找到的岗位:")
|
|||
|
|
for name in missing:
|
|||
|
|
print(f" - {name}")
|
|||
|
|
|
|||
|
|
def main():
|
|||
|
|
print("开始处理没有真实修改版的岗位...")
|
|||
|
|
print("=" * 50)
|
|||
|
|
|
|||
|
|
# 删除假的修改版
|
|||
|
|
remove_modified_for_positions()
|
|||
|
|
|
|||
|
|
# 验证结果
|
|||
|
|
verify_final_state()
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
main()
|