Files
online_sys/frontend_智能开发/updateInterviewQuestions.js

102 lines
2.9 KiB
JavaScript
Raw Normal View History

import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// 读取面试题数据
const interviewQuestionsData = JSON.parse(
fs.readFileSync(path.join(__dirname, 'src/data/interviewQuestions.json'), 'utf-8')
);
// 解析面试题内容
function parseInterviewQuestions(content) {
if (!content) return [];
const questions = [];
const lines = content.split('\n').filter(line => line.trim());
let currentQuestion = null;
let currentAnswer = '';
let collectingAnswer = false;
let questionIndex = 0;
for (let i = 0; i < lines.length; i++) {
const line = lines[i].trim();
// 跳过标题行
if (line.startsWith('#')) {
continue;
}
// 匹配问题(数字开头)
if (/^\d+\./.test(line)) {
// 保存上一个问题
if (currentQuestion && currentAnswer) {
questions.push({
id: `q${questionIndex + 1}`,
question: currentQuestion,
answer: currentAnswer.trim()
});
questionIndex++;
}
// 开始新问题
currentQuestion = line.replace(/^\d+\.\s*/, '').trim();
currentAnswer = '';
collectingAnswer = false;
}
// 匹配答案标记
else if (line.includes('答案:') || line.includes('示例回答:') || line.includes('参考答案:')) {
collectingAnswer = true;
// 提取答案内容(可能在同一行)
const answerMatch = line.match(/(?:答案:|示例回答:|参考答案:)(.*)/);
if (answerMatch && answerMatch[1]) {
currentAnswer = answerMatch[1].trim();
}
}
// 收集答案内容
else if (collectingAnswer && line) {
if (currentAnswer) {
currentAnswer += ' ';
}
currentAnswer += line;
}
}
// 保存最后一个问题
if (currentQuestion && currentAnswer) {
questions.push({
id: `q${questionIndex + 1}`,
question: currentQuestion,
answer: currentAnswer.trim()
});
}
return questions;
}
// 创建岗位群到面试题的映射
const questionsMap = {};
interviewQuestionsData.forEach(item => {
const groupName = item['岗位群名称'];
const questions = parseInterviewQuestions(item['面试题内容']);
// 只保留前10个问题
questionsMap[groupName] = questions.slice(0, 10);
});
// 输出每个岗位群的前3个问题用于更新
console.log('export const interviewQuestionsData = {');
Object.entries(questionsMap).forEach(([groupName, questions]) => {
console.log(` "${groupName}": [`);
questions.slice(0, 3).forEach((q, index) => {
console.log(` {`);
console.log(` id: "${q.id}",`);
console.log(` question: "${q.question.replace(/"/g, '\\"')}",`);
console.log(` answer: \`${q.answer.replace(/`/g, '\\`')}\``);
console.log(` }${index < 2 ? ',' : ''}`);
});
console.log(` ],`);
});
console.log('};');