#!/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} 个岗位群")