179 lines
5.4 KiB
JavaScript
179 lines
5.4 KiB
JavaScript
|
|
import fs from 'fs';
|
||
|
|
import path from 'path';
|
||
|
|
|
||
|
|
// 读取环保岗位简历数据
|
||
|
|
const envData = JSON.parse(fs.readFileSync('./网页未导入数据/环保产业/环保岗位简历.json', 'utf-8'));
|
||
|
|
|
||
|
|
// 按岗位群分组
|
||
|
|
const groupedData = {};
|
||
|
|
envData.forEach(item => {
|
||
|
|
const groupName = item['简历岗位群'];
|
||
|
|
if (!groupedData[groupName]) {
|
||
|
|
groupedData[groupName] = {
|
||
|
|
positions: [],
|
||
|
|
resumes: []
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
// 构建岗位数据
|
||
|
|
const position = {
|
||
|
|
id: `env_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
||
|
|
title: item['岗位名称'],
|
||
|
|
level: item['岗位等级标签'],
|
||
|
|
avatar: item['简历头像url'],
|
||
|
|
department: groupName,
|
||
|
|
type: "全职",
|
||
|
|
experience: "1-3年",
|
||
|
|
education: "大专",
|
||
|
|
salary: "5-15K",
|
||
|
|
location: "苏州",
|
||
|
|
updateTime: "2024-01-20",
|
||
|
|
description: `负责${item['岗位名称']}相关工作`,
|
||
|
|
requirements: []
|
||
|
|
};
|
||
|
|
|
||
|
|
// 从简历内容中提取岗位要求
|
||
|
|
const resumeContent = item['简历内容'];
|
||
|
|
const coreAbilityMatch = resumeContent.match(/### (一)垂直能力\n\n([\s\S]*?)### (二)/);
|
||
|
|
if (coreAbilityMatch) {
|
||
|
|
const abilities = coreAbilityMatch[1].split('\n').filter(line => line.match(/^\d+\./));
|
||
|
|
position.requirements = abilities.slice(0, 4).map(line => line.replace(/^\d+\.\s*/, ''));
|
||
|
|
}
|
||
|
|
|
||
|
|
groupedData[groupName].positions.push(position);
|
||
|
|
|
||
|
|
// 构建简历数据
|
||
|
|
const resume = {
|
||
|
|
position: item['岗位名称'],
|
||
|
|
level: item['岗位等级标签'],
|
||
|
|
avatar: item['简历头像url'],
|
||
|
|
content: {
|
||
|
|
original: item['简历内容'],
|
||
|
|
modified: item['简历内容']
|
||
|
|
},
|
||
|
|
studentInfo: {
|
||
|
|
project_experience: {
|
||
|
|
project_name: item['对应项目案例名称'],
|
||
|
|
position: item['岗位名称'] + '助理',
|
||
|
|
time_period: "XXXXXX",
|
||
|
|
company: "XXXXXX",
|
||
|
|
description: "参与项目实施"
|
||
|
|
},
|
||
|
|
core_skills: [],
|
||
|
|
compound_skills: [],
|
||
|
|
personal_summary: ""
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
// 提取技能和总结
|
||
|
|
const coreSkillsMatch = resumeContent.match(/### (一)垂直能力\n\n([\s\S]*?)### (二)/);
|
||
|
|
if (coreSkillsMatch) {
|
||
|
|
const skills = coreSkillsMatch[1].split('\n')
|
||
|
|
.filter(line => line.match(/^\d+\./))
|
||
|
|
.map(line => line.replace(/^\d+\.\s*/, '').trim());
|
||
|
|
resume.studentInfo.core_skills = skills.slice(0, 9);
|
||
|
|
}
|
||
|
|
|
||
|
|
const compoundSkillsMatch = resumeContent.match(/### (二)复合能力\n\n([\s\S]*?)#/);
|
||
|
|
if (compoundSkillsMatch) {
|
||
|
|
const skills = compoundSkillsMatch[1].split('\n')
|
||
|
|
.filter(line => line.match(/^\d+\./))
|
||
|
|
.map(line => line.replace(/^\d+\.\s*/, '').trim());
|
||
|
|
resume.studentInfo.compound_skills = skills.slice(0, 9);
|
||
|
|
}
|
||
|
|
|
||
|
|
const summaryMatch = resumeContent.match(/# 三、个人评价\n\n([\s\S]*?)$/);
|
||
|
|
if (summaryMatch) {
|
||
|
|
resume.studentInfo.personal_summary = summaryMatch[1].trim();
|
||
|
|
}
|
||
|
|
|
||
|
|
groupedData[groupName].resumes.push(resume);
|
||
|
|
});
|
||
|
|
|
||
|
|
// 生成industries数据
|
||
|
|
const industries = [];
|
||
|
|
const resumeTemplates = {};
|
||
|
|
let industryId = 1;
|
||
|
|
|
||
|
|
Object.keys(groupedData).forEach(groupName => {
|
||
|
|
const industryData = {
|
||
|
|
id: `env_${industryId}`,
|
||
|
|
name: groupName,
|
||
|
|
positions: groupedData[groupName].positions.slice(0, 3), // 每个群取前3个岗位
|
||
|
|
questions: [
|
||
|
|
{
|
||
|
|
id: `group_q${industryId}`,
|
||
|
|
question: `# 一、${groupName}专业问题`,
|
||
|
|
subQuestions: [
|
||
|
|
{
|
||
|
|
id: `q${industryId}_1`,
|
||
|
|
question: `请谈谈您对${groupName}领域的理解和认识?`,
|
||
|
|
answer: `我对${groupName}有深入的理解,包括相关法规、技术标准和实施流程...`
|
||
|
|
},
|
||
|
|
{
|
||
|
|
id: `q${industryId}_2`,
|
||
|
|
question: `在${groupName}项目中,您如何保证项目质量?`,
|
||
|
|
answer: `我会通过建立完善的质量管理体系,严格执行相关标准...`
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
};
|
||
|
|
|
||
|
|
industries.push(industryData);
|
||
|
|
resumeTemplates[groupName] = groupedData[groupName].resumes.slice(0, 3);
|
||
|
|
industryId++;
|
||
|
|
});
|
||
|
|
|
||
|
|
// 生成最终的JS文件内容
|
||
|
|
const jsContent = `// 简历与面试题Mock数据
|
||
|
|
|
||
|
|
// 岗位群列表
|
||
|
|
const industries = ${JSON.stringify(industries, null, 2)};
|
||
|
|
|
||
|
|
// 学生个人简历(通用)
|
||
|
|
const myResume = {
|
||
|
|
"name": "张三",
|
||
|
|
"gender": "男",
|
||
|
|
"age": "22",
|
||
|
|
"education": "大专",
|
||
|
|
"major": "环境工程技术",
|
||
|
|
"school": "苏州职业技术学院",
|
||
|
|
"phone": "138****5678",
|
||
|
|
"email": "zhangsan@example.com",
|
||
|
|
"address": "江苏省苏州市",
|
||
|
|
"skills": [
|
||
|
|
"环境监测与评价",
|
||
|
|
"节能技术应用",
|
||
|
|
"环保设备运维",
|
||
|
|
"数据分析处理"
|
||
|
|
],
|
||
|
|
"certificates": [
|
||
|
|
"环境影响评价工程师(初级)",
|
||
|
|
"ISO 14001内审员"
|
||
|
|
],
|
||
|
|
"internship": "在多家环保企业实习,参与环评项目、节能改造等工作",
|
||
|
|
"selfIntroduction": "我是一名环境工程技术专业的应届毕业生,对环保事业充满热情..."
|
||
|
|
};
|
||
|
|
|
||
|
|
// 简历模板数据
|
||
|
|
const resumeTemplates = ${JSON.stringify(resumeTemplates, null, 2)};
|
||
|
|
|
||
|
|
// Mock数据整合
|
||
|
|
const resumeInterviewMockData = {
|
||
|
|
industries,
|
||
|
|
myResume,
|
||
|
|
resumeTemplates
|
||
|
|
};
|
||
|
|
|
||
|
|
// 导出函数
|
||
|
|
export const getMockPageData = () => {
|
||
|
|
return resumeInterviewMockData;
|
||
|
|
};
|
||
|
|
`;
|
||
|
|
|
||
|
|
// 写入文件
|
||
|
|
fs.writeFileSync('./src/mocks/resumeInterviewMock_env.js', jsContent);
|
||
|
|
console.log('环保数据转换完成!');
|
||
|
|
console.log('生成了', Object.keys(groupedData).length, '个岗位群');
|
||
|
|
console.log('总共', envData.length, '个岗位');
|