#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json import re # 读取智能制造岗位简历数据 with open('网页未导入数据/智能制造产业/智能制造岗位简历.json', 'r', encoding='utf-8') as f: smart_mfg_data = json.load(f) # 读取当前的mock文件 with open('src/mocks/resumeInterviewMock.js', 'r', encoding='utf-8') as f: mock_content = f.read() # 备份原文件 import datetime backup_time = datetime.datetime.now().strftime('%Y%m%d_%H%M%S') with open(f'src/mocks/resumeInterviewMock.js.backup_final_{backup_time}', 'w', encoding='utf-8') as f: f.write(mock_content) print(f"已创建备份文件: src/mocks/resumeInterviewMock.js.backup_final_{backup_time}") # 创建岗位群到面试题的映射 interview_map = {} for item in smart_mfg_data: group = item.get('简历岗位群', '') questions = item.get('面试题内容', '') if group and questions: # 解析面试题内容 parsed_questions = [] lines = questions.split('\n') current_section = None current_q = None current_a = [] for line in lines: line = line.strip() if not line: continue # 大标题 if line.startswith('# '): if current_q and current_section: answer = ' '.join(current_a).strip() if answer.startswith('示例答案:') or answer.startswith('答案:'): answer = answer.split(':', 1)[1].strip() current_section['questions'].append({ 'question': current_q, 'answer': answer }) if current_section: parsed_questions.append(current_section) current_section = { 'title': line[2:].strip(), 'questions': [] } current_q = None current_a = [] # 问题编号 elif re.match(r'^\d+\.\s+', line): if current_q and current_section: answer = ' '.join(current_a).strip() if answer.startswith('示例答案:') or answer.startswith('答案:'): answer = answer.split(':', 1)[1].strip() current_section['questions'].append({ 'question': current_q, 'answer': answer }) current_q = re.sub(r'^\d+\.\s+', '', line) current_a = [] # 答案内容 else: if current_q: current_a.append(line) # 保存最后一个 if current_q and current_section: answer = ' '.join(current_a).strip() if answer.startswith('示例答案:') or answer.startswith('答案:'): answer = answer.split(':', 1)[1].strip() current_section['questions'].append({ 'question': current_q, 'answer': answer }) if current_section: parsed_questions.append(current_section) interview_map[group] = parsed_questions # 需要更新的岗位群 target_groups = ['PLC', '工业机器人', '焊接工艺', '电气设计', '机器视觉', '非标自动化设计'] # 更新每个岗位群 for group_name in target_groups: if group_name not in interview_map: print(f"未找到 {group_name} 的面试题数据") continue # 查找岗位群位置 pattern = rf'"name":\s*"{re.escape(group_name)}"' match = re.search(pattern, mock_content) if not match: print(f"未找到岗位群: {group_name}") continue # 找到questions数组 start_pos = match.end() questions_pattern = r'"questions":\s*\[' questions_match = re.search(questions_pattern, mock_content[start_pos:start_pos+5000]) if not questions_match: continue questions_start = start_pos + questions_match.end() # 找到questions数组的结束 bracket_count = 1 i = questions_start in_string = False escape_next = False while i < len(mock_content) and bracket_count > 0: char = mock_content[i] if escape_next: escape_next = False elif char == '\\': escape_next = True elif char == '"' and not escape_next: in_string = not in_string elif not in_string: if char == '[': bracket_count += 1 elif char == ']': bracket_count -= 1 i += 1 if bracket_count == 0: questions_end = i - 1 # 构建新的questions数组 new_questions = [] for idx, section in enumerate(interview_map[group_name]): sub_questions = [] for q_idx, q in enumerate(section['questions']): # 转义特殊字符 question = q['question'].replace('\\', '\\\\').replace('"', '\\"') answer = q['answer'].replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n') sub_questions.append(f'''{{ "id": "q{idx}_{q_idx+1}", "question": "{question}", "answer": "{answer}" }}''') # 转义section标题 section_title = section['title'].replace('\\', '\\\\').replace('"', '\\"') new_questions.append(f'''{{ "id": "group_q{idx+1}", "question": "# {section_title}", "subQuestions": [ {','.join(sub_questions)} ] }}''') # 替换内容 new_questions_str = ',\n '.join(new_questions) mock_content = mock_content[:questions_start] + '\n ' + new_questions_str + '\n ' + mock_content[questions_end:] print(f"✓ 已更新 {group_name} 的面试题") # 额外修复电气设计最后一个空答案 mock_content = re.sub( r'"在设计电气系统时,如何选择合适的电缆[??]",\s*"answer":\s*""', '"在设计电气系统时,如何选择合适的电缆?",\n "answer": "选择电缆需要考虑:1)载流量-根据负载电流选择合适截面积;2)电压等级-确保绝缘等级满足系统电压;3)环境条件-考虑温度、湿度、腐蚀性等;4)敷设方式-架空、直埋、穿管等影响散热;5)机械强度-满足拉伸、弯曲要求;6)经济性-在满足技术要求前提下选择经济方案。"', mock_content ) # 保存更新后的文件 with open('src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f: f.write(mock_content) print("\n✅ 面试题更新完成!")