Files
teach_sys_Demo/scripts/add_all_positions.py

205 lines
10 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import re
def escape_for_js(text):
"""转义字符串用于JavaScript"""
if not text:
return ""
text = text.replace('\\', '\\\\')
text = text.replace('`', '\\`')
text = text.replace('${', '\\${')
return text
def load_all_mappings():
"""加载所有三个部分的映射数据"""
all_positions = {}
for part in [1, 2, 3]:
file_path = f'/Users/apple/Documents/cursor/教务系统/frontend/scripts/resume_mapping_part{part}.json'
try:
with open(file_path, 'r', encoding='utf-8') as f:
part_data = json.load(f)
all_positions.update(part_data)
print(f"加载第 {part} 部分:{len(part_data)} 个岗位")
except FileNotFoundError:
print(f"未找到第 {part} 部分的映射文件")
return all_positions
def create_additional_industries(all_positions):
"""根据岗位类型创建额外的行业分类"""
# 定义岗位分类
categories = {
"二次元文化": ["二次元周边选品专员", "二次元周边店店员", "二次元周边店店长"],
"宠物行业": ["宠物店店长", "宠物营养师"],
"数字营销": ["SEO专员", "SEM专员", "网络运营专员"],
"会展活动": ["会展策划师", "会展执行助理", "会展讲解员", "会展营销", "商业会展执行专员", "漫展策划师"],
"品牌运营": ["品牌策划运营专员", "品牌公关", "品牌推广专员", "品牌公关管培生", "ip运营", "ip运营总监助理"],
"演艺赛事": ["赛事经纪", "赛事礼仪", "赛事编辑", "艺人经纪人", "演出执行经理", "场馆运营人员"],
"直播新媒体": ["直播中控", "直播助理", "新媒体运营专员", "社群运营"],
"旅游规划": ["旅游规划师", "旅游计调专员", "露营地运营专员"],
"文创设计": ["文创产品设计师", "文创产品策划师", "文创产品设计师助理"],
"文旅管理": ["文旅运营总监助理", "文旅项目投资拓展管培生"]
}
industries_code = []
for category_name, position_names in categories.items():
# 生成行业ID
industry_id = category_name.replace("文化", "culture").replace("行业", "industry").replace("营销", "marketing")
industry_id = industry_id.replace("活动", "event").replace("运营", "operation").replace("赛事", "sports")
industry_id = industry_id.replace("新媒体", "newmedia").replace("规划", "planning").replace("设计", "design")
industry_id = industry_id.replace("管理", "management").replace("二次元", "acg").replace("宠物", "pet")
industry_id = industry_id.replace("数字", "digital").replace("会展", "exhibition").replace("品牌", "brand")
industry_id = industry_id.replace("演艺", "performance").replace("直播", "live").replace("旅游", "tourism")
industry_id = industry_id.replace("文创", "cultural").replace("文旅", "culture-tourism")
# 开始构建行业对象
industry_lines = []
industry_lines.append(f' {{\n')
industry_lines.append(f' id: "{industry_id}",\n')
industry_lines.append(f' name: "{category_name}",\n')
industry_lines.append(f' positions: [\n')
# 添加该类别下的所有岗位
for idx, position_name in enumerate(position_names):
if position_name in all_positions:
resume_data = all_positions[position_name]
# 根据岗位名称选择合适的公司名称
company_map = {
"二次元": "B站文化",
"宠物": "宠物之家",
"SEO": "百度营销",
"SEM": "谷歌广告",
"会展": "国际会展中心",
"漫展": "ChinaJoy",
"品牌": "奥美广告",
"赛事": "体育赛事中心",
"艺人": "华谊兄弟",
"演出": "大麦网",
"直播": "抖音直播",
"新媒体": "字节跳动",
"社群": "小红书",
"旅游": "携程旅游",
"露营": "户外探索",
"文创": "故宫文创",
"文旅": "文旅集团"
}
# 选择合适的公司名称
company = "文旅企业"
for key, value in company_map.items():
if key in position_name:
company = value
break
# 根据岗位级别设置薪资
if "总监" in position_name or "经理" in position_name:
salary = "15-25K"
level = "储备干部岗"
elif "主管" in position_name or "店长" in position_name:
salary = "12-20K"
level = "技术骨干岗"
elif "助理" in position_name or "实习" in position_name:
salary = "6-10K"
level = "实习"
else:
salary = "8-15K"
level = "技术骨干岗"
industry_lines.append(f' {{\n')
industry_lines.append(f' id: "{industry_id}-{idx+1}",\n')
industry_lines.append(f' name: "{position_name}",\n')
industry_lines.append(f' company: "{company}",\n')
industry_lines.append(f' level: "{level}",\n')
industry_lines.append(f' salary: "{salary}",\n')
industry_lines.append(f' experience: "1-3年",\n')
industry_lines.append(f' resume: {{\n')
industry_lines.append(f' personalInfo: {{\n')
industry_lines.append(f' name: "应聘者{idx+1}",\n')
industry_lines.append(f' phone: "138****8888",\n')
industry_lines.append(f' email: "candidate{idx+1}@example.com",\n')
industry_lines.append(f' location: "苏州市",\n')
industry_lines.append(f' }},\n')
industry_lines.append(f' education: {{\n')
industry_lines.append(f' university: "苏州信息职业技术学院",\n')
industry_lines.append(f' major: "智慧旅游技术应用",\n')
industry_lines.append(f' degree: "专科",\n')
industry_lines.append(f' graduationYear: "2023",\n')
industry_lines.append(f' period: "2020.9 - 2023.6",\n')
industry_lines.append(f' }},\n')
industry_lines.append(f' projectExperience: `{escape_for_js(resume_data["projectExperience"])}`,\n')
industry_lines.append(f' skills: `{escape_for_js(resume_data["skills"])}`,\n')
industry_lines.append(f' personalSummary: `{escape_for_js(resume_data["personalSummary"])}`,\n')
industry_lines.append(f' }},\n')
industry_lines.append(f' interviews: {{\n')
industry_lines.append(f' hookQuestions: [\n')
industry_lines.append(f' "{position_name}的核心职责是什么?",\n')
industry_lines.append(f' "如何提升服务质量和客户满意度?",\n')
industry_lines.append(f' "请分享您的相关项目经验",\n')
industry_lines.append(f' "如何应对工作中的突发情况?",\n')
industry_lines.append(f' "团队协作中您扮演什么角色?",\n')
industry_lines.append(f' ],\n')
industry_lines.append(f' allQuestions: [],\n')
industry_lines.append(f' }},\n')
industry_lines.append(f' }},\n')
industry_lines.append(f' ],\n')
industry_lines.append(f' }},\n')
industries_code.extend(industry_lines)
return industries_code
def insert_industries_to_mockdata(industries_code):
"""将新的行业数据插入到mockData.js中"""
# 读取当前的mockData.js文件
with open('/Users/apple/Documents/cursor/教务系统/frontend/src/data/mockData.js', 'r', encoding='utf-8') as f:
lines = f.readlines()
# 查找industries数组的结束位置
# 根据之前的分析industries数组在第2944行结束
insert_position = None
for i, line in enumerate(lines):
if i >= 2940 and i <= 2950 and '],' in line:
insert_position = i
break
if not insert_position:
print("未找到合适的插入位置")
return False
print(f"将在第 {insert_position} 行插入新的行业数据")
# 插入新数据
new_lines = lines[:insert_position] + industries_code + lines[insert_position:]
# 写回文件
with open('/Users/apple/Documents/cursor/教务系统/frontend/src/data/mockData.js', 'w', encoding='utf-8') as f:
f.writelines(new_lines)
return True
# 主程序
if __name__ == "__main__":
print("开始添加所有岗位数据到mockData.js...")
# 加载所有映射数据
all_positions = load_all_mappings()
print(f"\n总共加载了 {len(all_positions)} 个岗位的数据")
# 创建行业分类代码
industries_code = create_additional_industries(all_positions)
print(f"\n生成了 {len([line for line in industries_code if 'id:' in line and 'industry' not in line])/2} 个行业的代码")
# 插入到mockData.js
if insert_industries_to_mockdata(industries_code):
print("\n✓ 成功将所有岗位数据添加到mockData.js")
else:
print("\n✗ 添加失败")