#!/usr/bin/env python3 # -*- coding: utf-8 -*- import json import re def parse_interview_questions(content): """解析面试题内容为结构化数据""" questions = [] # 分割成不同的问题类别 sections = re.split(r'\n# ([一二三四五六七八九十]+、[^#\n]+)', content) question_id = 1 for i in range(1, len(sections), 2): if i >= len(sections): break section_title = sections[i].strip() section_content = sections[i + 1] if i + 1 < len(sections) else "" # 提取每个问题 question_blocks = re.split(r'\n\d+\.\s+', section_content) for j, block in enumerate(question_blocks[1:], 1): # 跳过第一个空块 lines = block.strip().split('\n') if not lines: continue question_text = lines[0].strip() # 查找答案 answer_text = "" for k, line in enumerate(lines): if '示例答案' in line or '答案' in line: # 获取答案内容 answer_lines = [] for answer_line in lines[k+1:]: answer_line = answer_line.strip() if answer_line and not answer_line.startswith('示例答案'): if re.match(r'^\d+\.', answer_line): break answer_lines.append(answer_line) answer_text = ' '.join(answer_lines) break if question_text and answer_text: questions.append({ "id": f"q{question_id}", "question": question_text, "answer": answer_text }) question_id += 1 return questions def main(): # 读取大健康岗位简历数据 with open('/Users/apple/Documents/cursor/教务系统/frontend_大健康/网页未导入数据/大健康产业/大健康岗位简历.json', 'r', encoding='utf-8') as f: health_data = json.load(f) # 读取现有的Mock数据 with open('/Users/apple/Documents/cursor/教务系统/frontend_大健康/src/mocks/resumeInterviewMock.js', 'r', encoding='utf-8') as f: mock_content = f.read() # 收集所有岗位群的数据 all_industries = {} for item in health_data: industry = item.get('简历岗位群', '') position_name = item.get('岗位名称', '') avatar_url = item.get('简历头像url', '') level_tag = item.get('岗位等级标签', '') interview_content = item.get('面试题内容', '') if industry: if industry not in all_industries: all_industries[industry] = { 'positions': [], 'questions': None } # 添加岗位信息 all_industries[industry]['positions'].append({ 'name': position_name, 'avatar': avatar_url, 'level': level_tag }) # 添加面试题(只添加一次) if interview_content and not all_industries[industry]['questions']: questions = parse_interview_questions(interview_content) if questions: # 将问题按类别分组 category_questions = {} current_category = "综合面试题" for q in questions: # 检查是否是新的分类 if '岗位理解' in q['question']: current_category = "岗位理解类问题" elif '实践经验' in q['question'] or '案例' in q['question']: current_category = "实践经验类问题" elif '客户服务' in q['question'] or '客户' in q['question']: current_category = "客户服务类问题" elif '市场' in q['question'] or '趋势' in q['question']: current_category = "市场与未来趋势类问题" elif '技术' in q['question'] or '专业' in q['question']: current_category = "专业技术类问题" elif '团队' in q['question'] or '协作' in q['question']: current_category = "团队协作类问题" if current_category not in category_questions: category_questions[current_category] = [] category_questions[current_category].append(q) # 构建questions数组 questions_array = [] cat_id = 1 for category, cat_questions in category_questions.items(): questions_array.append({ "id": f"group_q{cat_id}", "question": category, "subQuestions": cat_questions }) cat_id += 1 all_industries[industry]['questions'] = questions_array # 需要添加的新岗位群(不在现有Mock中的) new_industries = ['社群运营', '药品供应链管理', '药品生产', '药品质量检测', '药物研发'] # 生成新的岗位群数据 new_industry_blocks = [] industry_id = 7 # 从health_7开始 for industry_name in new_industries: if industry_name in all_industries: industry_data = all_industries[industry_name] # 构建positions数组 positions_data = [] for idx, pos in enumerate(industry_data['positions'], 1): level_mapping = { '基础岗': '普通岗', '技术骨干岗': '技术骨干岗', '管理培训生岗': '管理培训生岗', '管理岗': '管理岗' } position_obj = { "id": f"health_{industry_id}_{idx}", "title": pos['name'], "level": level_mapping.get(pos['level'], '普通岗'), "avatar": pos['avatar'], "department": industry_name, "type": "全职", "experience": "1-3年", "education": "大专", "salary": "5-10K", "location": "北京", "updateTime": "2024-01-20", "description": f"负责{pos['name']}相关工作", "requirements": [ "具备相关专业知识和技能", "有良好的沟通能力和团队合作精神", "能够独立完成岗位职责", "有相关实习或工作经验优先" ] } positions_data.append(position_obj) # 构建industry对象 industry_obj = { "id": f"health_{industry_id}", "name": industry_name, "positions": positions_data } # 添加questions(如果有的话) if industry_data['questions']: industry_obj["questions"] = industry_data['questions'] else: # 使用默认的面试题结构 industry_obj["questions"] = [ { "id": "group_q1", "question": f"{industry_name}专业认知", "subQuestions": [ { "id": "q1", "question": f"你如何理解{industry_name}的核心价值?", "answer": f"{industry_name}的核心价值在于通过专业技能和知识,为企业和客户创造价值,推动行业发展。" }, { "id": "q2", "question": f"{industry_name}中最重要的能力是什么?", "answer": "专业技能、沟通能力、团队协作和持续学习能力都是非常重要的。" }, { "id": "q3", "question": f"你为什么选择{industry_name}这个方向?", "answer": "我对这个领域充满热情,相信能够在这里发挥我的专业优势,为行业发展做出贡献。" } ] } ] new_industry_blocks.append(industry_obj) industry_id += 1 # 将新的岗位群添加到Mock文件中 # 找到industries数组的结束位置 industries_end_pattern = r'(const industries = \[[^\]]*)\]' # 生成新的岗位群JavaScript代码 new_blocks_js = "" for block in new_industry_blocks: new_blocks_js += ",\n " + json.dumps(block, ensure_ascii=False, indent=2).replace('\n', '\n ') # 替换 replacement = rf'\1{new_blocks_js}\n]' new_content = re.sub(industries_end_pattern, replacement, mock_content, flags=re.DOTALL) # 写回文件 with open('/Users/apple/Documents/cursor/教务系统/frontend_大健康/src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f: f.write(new_content) print(f"成功添加了 {len(new_industry_blocks)} 个新岗位群:") for block in new_industry_blocks: print(f" - {block['name']} (ID: {block['id']}): {len(block['positions'])} 个岗位") # 统计总数 print(f"\n现在总共有 11 个岗位群") if __name__ == "__main__": main()