Files
ALL-teach_sys/frontend_能源/updateModifiedResumes.js

143 lines
4.9 KiB
JavaScript
Raw Normal View History

import fs from 'fs';
import path from 'path';
// 修改版简历文件夹路径
const modifiedResumesPath = './网页未导入数据/能源产业/能源修改版简历';
// 读取所有修改版简历文件
const modifiedFiles = fs.readdirSync(modifiedResumesPath).filter(f => f.endsWith('.md'));
console.log(`找到 ${modifiedFiles.length} 个修改版简历文件`);
// 构建修改版简历映射
const modifiedResumes = {};
const modifiedPositionNames = [];
modifiedFiles.forEach(file => {
// 从文件名获取岗位名称
const positionName = file.replace('.md', '');
modifiedPositionNames.push(positionName);
// 读取文件内容
const content = fs.readFileSync(path.join(modifiedResumesPath, file), 'utf8');
modifiedResumes[positionName] = content;
console.log(`- ${positionName}`);
});
// 读取resumeInterviewMock.js文件
let mockFileContent = fs.readFileSync('./src/mocks/resumeInterviewMock.js', 'utf8');
// 更新resumeTemplates中的modified内容
console.log('\n开始更新简历模板的modified内容...');
// 处理每个修改版简历
Object.keys(modifiedResumes).forEach(positionName => {
const modifiedContent = modifiedResumes[positionName];
// 查找这个岗位在resumeTemplates中的位置
const positionPattern = new RegExp(`"position":\\s*"${positionName}"`, 'g');
let match;
let updateCount = 0;
while ((match = positionPattern.exec(mockFileContent)) !== null) {
const startPos = match.index;
// 找到该岗位对应的content对象
const contentStartPattern = /"content":\s*{/;
const searchStart = startPos;
const searchEnd = startPos + 5000; // 限制搜索范围
const searchArea = mockFileContent.substring(searchStart, searchEnd);
const contentMatch = contentStartPattern.exec(searchArea);
if (contentMatch) {
const contentPos = searchStart + contentMatch.index;
// 找到content对象的结束位置
let braceCount = 0;
let contentEndPos = contentPos + contentMatch[0].length - 1;
let inString = false;
let escapeNext = false;
for (let i = contentEndPos; i < mockFileContent.length; i++) {
const char = mockFileContent[i];
if (escapeNext) {
escapeNext = false;
continue;
}
if (char === '\\') {
escapeNext = true;
continue;
}
if (char === '"' && !escapeNext) {
inString = !inString;
}
if (!inString) {
if (char === '{') braceCount++;
if (char === '}') {
braceCount--;
if (braceCount === 0) {
contentEndPos = i + 1;
break;
}
}
}
}
// 提取content对象
const contentStr = mockFileContent.substring(contentPos, contentEndPos);
// 检查是否已有modified字段
if (contentStr.includes('"modified":')) {
// 替换现有的modified内容
const modifiedPattern = /"modified":\s*"[^"]*(?:\\.[^"]*)*"/;
const escapedContent = JSON.stringify(modifiedContent);
const newModified = `"modified": ${escapedContent}`;
const newContentStr = contentStr.replace(modifiedPattern, newModified);
mockFileContent = mockFileContent.substring(0, contentPos) + newContentStr + mockFileContent.substring(contentEndPos);
} else {
// 添加modified字段到content对象
// 在original字段后添加
const originalPattern = /("original":\s*"[^"]*(?:\\.[^"]*)*")/;
const escapedContent = JSON.stringify(modifiedContent);
const newContentStr = contentStr.replace(originalPattern, `$1,\n "modified": ${escapedContent}`);
mockFileContent = mockFileContent.substring(0, contentPos) + newContentStr + mockFileContent.substring(contentEndPos);
}
updateCount++;
console.log(`✅ 更新了 ${positionName} 的修改版简历`);
}
}
if (updateCount === 0) {
console.log(`⚠️ 未找到 ${positionName} 的岗位模板`);
}
});
// 更新hasRealModifiedVersion函数
console.log('\n更新hasRealModifiedVersion函数...');
const hasModifiedFunctionPattern = /const hasRealModifiedVersion = \(positionTitle\) => \{[\s\S]*?\n \};/;
const newFunction = `const hasRealModifiedVersion = (positionTitle) => {
const modifiedPositions = [
// 能源产业岗位
${modifiedPositionNames.map(name => `"${name}"`).join(',\n ')}
];
return modifiedPositions.includes(positionTitle);
};`;
mockFileContent = mockFileContent.replace(hasModifiedFunctionPattern, newFunction);
// 写回文件
fs.writeFileSync('./src/mocks/resumeInterviewMock.js', mockFileContent);
console.log('\n✅ 修改版简历更新完成!');
console.log(`📝 共更新了 ${modifiedPositionNames.length} 个岗位的修改版简历`);
console.log('📋 岗位列表:', modifiedPositionNames.join(', '));