Files
ALL-teach_sys/frontend_视觉设计/fix_interview_questions.py

248 lines
8.4 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import re
def parse_interview_content(content):
"""解析面试题内容,提取问题和答案"""
questions = []
# 按照 "问题:" 分割内容
parts = re.split(r'\n\s*\d+\.\s*问题[:]\s*', content)
for i, part in enumerate(parts):
if i == 0: # 跳过第一个部分(通常是标题)
continue
lines = part.strip().split('\n')
if not lines:
continue
# 第一行是问题
question_text = lines[0].strip()
# 查找答案部分
answer_lines = []
in_answer = False
for line in lines[1:]:
line = line.strip()
if line.startswith('参考回答') or line.startswith('答案'):
in_answer = True
continue
elif line.startswith('问题') or (line and line[0].isdigit() and '问题' in line):
break
elif in_answer and line:
answer_lines.append(line)
answer_text = '\\n'.join(answer_lines).strip()
if question_text and answer_text:
questions.append({
"id": f"q_{i}",
"question": question_text,
"answer": answer_text,
"difficulty": "中等",
"tags": ["专业技能", "实践经验"]
})
return questions
def create_new_mock_data():
"""重新创建完整的mock数据"""
# 读取视觉设计原始数据
with open('网页未导入数据/视觉设计产业/视觉设计岗位简历.json', 'r', encoding='utf-8') as f:
visual_data = json.load(f)
# 按岗位群分组
position_groups = {}
interview_groups = {}
for position in visual_data:
group_name = position['简历岗位群']
# 收集岗位数据
if group_name not in position_groups:
position_groups[group_name] = []
position_groups[group_name].append(position)
# 收集面试题数据
if group_name not in interview_groups:
interview_detail = position.get('面试题内容', '')
if interview_detail:
questions = parse_interview_content(interview_detail)
interview_groups[group_name] = questions
# 创建industries数据
industries = []
for group_id, (group_name, positions) in enumerate(position_groups.items()):
# 创建positions数据
industry_positions = []
for pos_id, position in enumerate(positions):
level = position.get('岗位等级标签', '普通岗')
pos_obj = {
"id": f"visual_design_{group_id + 1}_{pos_id + 1}",
"title": position['岗位名称'],
"level": level,
"avatar": position.get('简历头像url', '').split(',')[0],
"department": group_name,
"type": "全职",
"experience": "1-3年",
"education": "大专",
"salary": "6-12K",
"location": "苏州",
"updateTime": "2024-01-20",
"description": f"负责{position['岗位名称']}相关工作",
"requirements": [
f"具备{group_name}专业技能",
"熟悉相关设计软件",
"具备良好的沟通协作能力",
"有创新意识和学习能力"
]
}
industry_positions.append(pos_obj)
# 创建面试题数据
interview_questions = interview_groups.get(group_name, [])
if not interview_questions:
# 默认面试题
interview_questions = [
{
"id": f"q_default_1",
"question": f"{group_name}岗位的核心职责是什么?",
"answer": f"负责{group_name}相关工作,包括设计规划、创意实现、项目协作等,确保项目质量和进度。",
"difficulty": "基础",
"tags": ["专业认知", "岗位职责"]
}
]
questions_data = {
"id": f"group_q{group_id + 1}",
"question": f"# 一、专业能力与行业认知",
"subQuestions": interview_questions
}
# 创建industry对象
industry = {
"id": f"visual_design_{group_id + 1}",
"name": group_name,
"positions": industry_positions,
"questions": [questions_data]
}
industries.append(industry)
return industries
def create_resume_templates():
"""创建简历模板数据"""
with open('网页未导入数据/视觉设计产业/视觉设计岗位简历.json', 'r', encoding='utf-8') as f:
visual_data = json.load(f)
templates = {}
position_groups = {}
# 按岗位群分组
for position in visual_data:
group_name = position['简历岗位群']
if group_name not in position_groups:
position_groups[group_name] = []
position_groups[group_name].append(position)
# 为每个岗位群创建模板
for group_name, positions in position_groups.items():
templates[group_name] = []
for position in positions:
template = {
"id": f"resume_{len(templates[group_name]) + 1}",
"position": position['岗位名称'],
"level": position.get('岗位等级标签', '普通岗'),
"industry": group_name,
"studentInfo": {
"name": "张小同",
"gender": "",
"age": 22,
"education": "大专",
"major": "数字媒体艺术设计",
"avatar": position.get('简历头像url', '').split(',')[0]
},
"content": {
"original": position.get('简历内容', ''),
"modified": position.get('简历内容', '')
},
"interviewQuestions": position.get('面试题内容', '')
}
templates[group_name].append(template)
return templates
def main():
print("🚀 重新生成完整的面试题数据...")
# 创建备份
import shutil
from datetime import datetime
backup_name = f"src/mocks/resumeInterviewMock.js.backup_fix_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
shutil.copy('src/mocks/resumeInterviewMock.js', backup_name)
print(f"📦 已创建备份: {backup_name}")
# 重新创建数据
industries = create_new_mock_data()
resume_templates = create_resume_templates()
# 创建完整的mock数据
my_resume = {
"name": "张小同",
"studentId": "2024001",
"major": "数字媒体艺术设计",
"education": "大专",
"avatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/butler_position_avatar/default_student.jpeg"
}
# 生成新的JS文件内容
js_content = f"""// 简历与面试题Mock数据
// 岗位群列表
const industries = {json.dumps(industries, ensure_ascii=False, indent=2)};
// 简历模板数据
const resumeTemplates = {json.dumps(resume_templates, ensure_ascii=False, indent=2)};
// 我的简历数据
const myResume = {json.dumps(my_resume, ensure_ascii=False, indent=2)};
// 获取页面数据
export const getMockPageData = () => {{
return {{
industries,
resumeTemplates,
myResume
}};
}};
// 导出各个数据模块
export {{ industries, resumeTemplates, myResume }};
"""
# 写入文件
with open('src/mocks/resumeInterviewMock.js', 'w', encoding='utf-8') as f:
f.write(js_content)
print("✅ 已重新生成 resumeInterviewMock.js")
print(f"\\n📊 数据统计:")
print(f" - 岗位群数量: {len(industries)}")
print(f" - 岗位总数: {sum(len(industry['positions']) for industry in industries)}")
# 显示每个岗位群的面试题数量
for industry in industries:
group_name = industry['name']
question_count = len(industry['questions'][0]['subQuestions'])
print(f" - {group_name}: {question_count} 道面试题")
if __name__ == "__main__":
main()