Files
ALL-teach_sys/frontend_视觉设计/fix_interview_questions.py
KQL cd2e307402 初始化12个产业教务系统项目
主要内容:
- 包含12个产业的完整教务系统前端代码
- 智能启动脚本 (start-industry.sh)
- 可视化产业导航页面 (index.html)
- 项目文档 (README.md)

优化内容:
- 删除所有node_modules和.yoyo文件夹,从7.5GB减少到2.7GB
- 添加.gitignore文件避免上传不必要的文件
- 自动依赖管理和智能启动系统

产业列表:
1. 文旅产业 (5150)
2. 智能制造 (5151)
3. 智能开发 (5152)
4. 财经商贸 (5153)
5. 视觉设计 (5154)
6. 交通物流 (5155)
7. 大健康 (5156)
8. 土木水利 (5157)
9. 食品产业 (5158)
10. 化工产业 (5159)
11. 能源产业 (5160)
12. 环保产业 (5161)

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 14:14:14 +08:00

248 lines
8.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()