Files
ALL-teach_sys/frontend_大健康/restructure_questions.py

153 lines
5.7 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import json
print("重新构建Mock文件结构...")
# 读取文件
with open('/Users/apple/Documents/cursor/教务系统/frontend_大健康/src/mocks/resumeInterviewMock.js', 'r', encoding='utf-8') as f:
content = f.read()
# 备份
with open('/Users/apple/Documents/cursor/教务系统/frontend_大健康/src/mocks/resumeInterviewMock.js.backup_restructure', 'w', encoding='utf-8') as f:
f.write(content)
# 处理每个岗位群
# 1. 移除错误嵌套的questions
# 2. 在正确位置添加questions
industries_data = {
'health_1': 'health_2',
'health_2': 'health_3',
'health_3': 'health_4',
'health_4': 'health_5',
'health_5': 'health_6',
'health_6': 'health_7',
'health_7': 'health_8',
'health_8': 'health_9',
'health_9': 'health_10',
'health_10': 'health_11',
'health_11': None # 最后一个
}
fixed_count = 0
for industry_id, next_id in industries_data.items():
print(f"处理 {industry_id}...")
# 查找industry块
pattern = rf'"id":\s*"{industry_id}"'
match = re.search(pattern, content)
if not match:
print(f" 未找到 {industry_id}")
continue
start_pos = match.start()
# 找结束位置
if next_id:
next_pattern = rf'"id":\s*"{next_id}"'
next_match = re.search(next_pattern, content[start_pos + 10:])
if next_match:
end_pos = start_pos + 10 + next_match.start()
else:
continue
else:
# 最后一个industry
end_match = re.search(r'\n\];', content[start_pos:])
if end_match:
end_pos = start_pos + end_match.start()
else:
end_pos = len(content)
# 获取industry内容
industry_content = content[start_pos:end_pos]
# 检查是否有错误嵌套的questions在第一个position内部
# 查找第一个position对象的结束
first_position_pattern = r'"requirements":\s*\[[^\]]*?\]\s*,\s*"questions":\s*\['
if re.search(first_position_pattern, industry_content):
print(f" 发现错误嵌套的questions")
# 找到questions数组的完整内容
questions_start_match = re.search(r'"questions":\s*\[', industry_content)
if questions_start_match:
qs_start = questions_start_match.start()
# 使用括号计数找到questions的结束
bracket_count = 0
in_questions = False
qs_end = -1
for i in range(qs_start, len(industry_content)):
if industry_content[i] == '[':
if not in_questions and '"questions"' in industry_content[max(0, i-20):i]:
in_questions = True
bracket_count = 1
elif in_questions:
bracket_count += 1
elif industry_content[i] == ']' and in_questions:
bracket_count -= 1
if bracket_count == 0:
qs_end = i + 1
break
if qs_end > 0:
# 提取questions内容
questions_content = industry_content[qs_start:qs_end].strip()
# 移除错误的questions和后面多余的']'
# 找到"requirements": [...],后面的内容
req_end_match = re.search(r'"requirements":\s*\[[^\]]*?\]', industry_content)
if req_end_match:
req_end = req_end_match.end()
# 查找questions后面的多余']'
extra_bracket_match = re.search(r'\]\s*\n\]', industry_content[qs_end:qs_end + 50])
if extra_bracket_match:
# 移除从requirements后的逗号到多余']'的内容
clean_part1 = industry_content[:req_end]
clean_part2 = industry_content[qs_end + extra_bracket_match.end() - 1:] # -1 保留一个']'
clean_industry = clean_part1 + '\n }' + clean_part2
else:
# 简单移除questions部分
clean_industry = industry_content[:req_end] + '\n }' + industry_content[qs_end:]
# 现在在positions数组后添加questions
# 找到positions数组的结束
positions_end_pattern = r'"positions":\s*\[[^\]]*?\n\s*\]'
positions_match = re.search(positions_end_pattern, clean_industry, re.DOTALL)
if positions_match:
pos_end = positions_match.end() - 1 # 在']'之前
# 构建新的industry内容
new_industry = clean_industry[:pos_end] + '\n ],\n ' + questions_content + clean_industry[pos_end:]
# 替换原内容
content = content[:start_pos] + new_industry + content[end_pos:]
fixed_count += 1
print(f" ✓ 修复了 {industry_id}")
else:
print(f" 无法找到positions数组结束")
else:
print(f" 无法找到questions结束")
else:
print(f" 无法找到questions开始")
else:
print(f" 结构正常")
# 清理多余的符号
content = re.sub(r',\s*,', ',', content)
content = re.sub(r',\s*\]', ']', content)
content = re.sub(r',\s*\}', '}', content)
content = re.sub(r'\}\s*\]', '}]', content)
# 写回文件
with open('/Users/apple/Documents/cursor/教务系统/frontend_大健康/src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f:
f.write(content)
print(f"\n✓ 完成!修复了 {fixed_count} 个岗位群")