129 lines
5.0 KiB
JavaScript
129 lines
5.0 KiB
JavaScript
|
|
#!/usr/bin/env node
|
|||
|
|
|
|||
|
|
const fs = require('fs');
|
|||
|
|
const path = require('path');
|
|||
|
|
|
|||
|
|
// 孙悦彤的导师信息
|
|||
|
|
const sunYueTongInfo = {
|
|||
|
|
name: "孙悦彤",
|
|||
|
|
title: "企业资深HR",
|
|||
|
|
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuXM074e1DUq.png",
|
|||
|
|
introduction: "推动集团招聘数字化转型,引入ATS与视频面试工具,使简历处理效率提升40%,关键岗位转化率提高至32%,用人部门满意度提升20%。同时主导上线HR SaaS平台和数据分析体系,实现人事数据可视化与决策支持。作为资深一线HR导师,还长期面向求职者提供一对一的个性化辅导,从真实招聘场景出发,帮助学员掌握简历优化与筛选逻辑、面试答题技巧与岗位匹配思路,并结合职业路径规划,提供可落地的发展方案,帮助学员快速提升求职竞争力。",
|
|||
|
|
specialties: ["模拟面试实战", "核心能力塑造", "职场沟通提升", "长远目标设定"]
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
console.log('开始全面替换魏立慧为孙悦彤...\n');
|
|||
|
|
|
|||
|
|
// 1. 更新 mockData.js
|
|||
|
|
const mockDataPath = path.join(__dirname, 'src/data/mockData.js');
|
|||
|
|
console.log('正在更新 mockData.js...');
|
|||
|
|
|
|||
|
|
// 备份
|
|||
|
|
const mockDataBackup = `${mockDataPath}.backup_${new Date().toISOString().replace(/[:.]/g, '-')}_full_replace`;
|
|||
|
|
fs.copyFileSync(mockDataPath, mockDataBackup);
|
|||
|
|
console.log(`✓ 已备份到: ${mockDataBackup}`);
|
|||
|
|
|
|||
|
|
let mockDataContent = fs.readFileSync(mockDataPath, 'utf-8');
|
|||
|
|
|
|||
|
|
// 1.1 替换 avatarMap 中的魏立慧
|
|||
|
|
mockDataContent = mockDataContent.replace(
|
|||
|
|
/"魏立慧":\s*"[^"]+"/g,
|
|||
|
|
`"孙悦彤": "${sunYueTongInfo.avatar}"`
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 1.2 替换 teachersDetail 中的魏立慧对象
|
|||
|
|
mockDataContent = mockDataContent.replace(
|
|||
|
|
/"魏立慧":\s*\{[^}]*name:\s*"魏立慧"[^}]*\}/s,
|
|||
|
|
`"孙悦彤": {
|
|||
|
|
name: "孙悦彤",
|
|||
|
|
introduction: "${sunYueTongInfo.introduction}",
|
|||
|
|
specialties: ${JSON.stringify(sunYueTongInfo.specialties)},
|
|||
|
|
courses: []
|
|||
|
|
}`
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 1.3 替换 jobStrategyLive 中的教师名字和头像
|
|||
|
|
mockDataContent = mockDataContent.replace(
|
|||
|
|
/teacher:\s*"企业资深HR - 魏立慧"/g,
|
|||
|
|
`teacher: "企业资深HR - 孙悦彤"`
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 1.4 替换教师头像URL(如果是魏立慧的)
|
|||
|
|
mockDataContent = mockDataContent.replace(
|
|||
|
|
/teacherAvatar:\s*"https:\/\/ddcz-1315997005\.cos\.ap-nanjing\.myqcloud\.com\/static\/img\/teach_sys_teacher-avatar\/recuUpSO4gUtJz\.png"/g,
|
|||
|
|
`teacherAvatar: "${sunYueTongInfo.avatar}"`
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 1.5 替换 teachers 对象中的魏立慧(如果存在)
|
|||
|
|
const teachersRegex = /const\s+teachers\s*=\s*\{([^}]+)\}/s;
|
|||
|
|
const teachersMatch = mockDataContent.match(teachersRegex);
|
|||
|
|
if (teachersMatch) {
|
|||
|
|
let teachersContent = teachersMatch[0];
|
|||
|
|
teachersContent = teachersContent.replace(
|
|||
|
|
/魏立慧:\s*\{[^}]+\}/s,
|
|||
|
|
`孙悦彤: {
|
|||
|
|
name: "孙悦彤",
|
|||
|
|
title: "${sunYueTongInfo.title}",
|
|||
|
|
avatar: "${sunYueTongInfo.avatar}"
|
|||
|
|
}`
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// 替换 teachers.魏立慧 引用
|
|||
|
|
mockDataContent = mockDataContent.replace(teachersMatch[0], teachersContent);
|
|||
|
|
mockDataContent = mockDataContent.replace(
|
|||
|
|
/teacher:\s*teachers\.魏立慧/g,
|
|||
|
|
'teacher: teachers.孙悦彤'
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 1.6 替换所有剩余的魏立慧文本引用
|
|||
|
|
mockDataContent = mockDataContent.replace(/魏立慧/g, '孙悦彤');
|
|||
|
|
|
|||
|
|
fs.writeFileSync(mockDataPath, mockDataContent);
|
|||
|
|
console.log('✓ mockData.js 更新完成');
|
|||
|
|
|
|||
|
|
// 2. 更新 visualDesignCalendar.json(已经完成)
|
|||
|
|
const calendarPath = path.join(__dirname, 'src/data/visualDesignCalendar.json');
|
|||
|
|
console.log('\n正在检查 visualDesignCalendar.json...');
|
|||
|
|
|
|||
|
|
const calendarData = JSON.parse(fs.readFileSync(calendarPath, 'utf-8'));
|
|||
|
|
let calendarReplaced = 0;
|
|||
|
|
|
|||
|
|
calendarData.forEach(item => {
|
|||
|
|
if (item['导师姓名查询'] === '魏立慧') {
|
|||
|
|
item['导师姓名查询'] = '孙悦彤';
|
|||
|
|
calendarReplaced++;
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (calendarReplaced > 0) {
|
|||
|
|
fs.writeFileSync(calendarPath, JSON.stringify(calendarData, null, 2));
|
|||
|
|
console.log(`✓ visualDesignCalendar.json 更新了 ${calendarReplaced} 处`);
|
|||
|
|
} else {
|
|||
|
|
console.log('✓ visualDesignCalendar.json 已经是最新的');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 3. 验证替换结果
|
|||
|
|
console.log('\n验证替换结果...');
|
|||
|
|
|
|||
|
|
// 检查 mockData.js
|
|||
|
|
const updatedMockData = fs.readFileSync(mockDataPath, 'utf-8');
|
|||
|
|
const weiReferences = (updatedMockData.match(/魏立慧/g) || []).length;
|
|||
|
|
const sunReferences = (updatedMockData.match(/孙悦彤/g) || []).length;
|
|||
|
|
|
|||
|
|
console.log(`mockData.js - 魏立慧: ${weiReferences} 处, 孙悦彤: ${sunReferences} 处`);
|
|||
|
|
|
|||
|
|
// 检查 calendar
|
|||
|
|
const updatedCalendar = fs.readFileSync(calendarPath, 'utf-8');
|
|||
|
|
const weiInCalendar = (updatedCalendar.match(/魏立慧/g) || []).length;
|
|||
|
|
const sunInCalendar = (updatedCalendar.match(/孙悦彤/g) || []).length;
|
|||
|
|
|
|||
|
|
console.log(`visualDesignCalendar.json - 魏立慧: ${weiInCalendar} 处, 孙悦彤: ${sunInCalendar} 处`);
|
|||
|
|
|
|||
|
|
if (weiReferences === 0 && weiInCalendar === 0) {
|
|||
|
|
console.log('\n✅ 成功!所有魏立慧的引用已替换为孙悦彤');
|
|||
|
|
} else {
|
|||
|
|
console.log('\n⚠️ 警告:仍有魏立慧的引用未被替换');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
console.log('\n替换完成!');
|