主要更新: - 更新所有12个产业的教务系统数据和功能 - 删除所有 node_modules 文件夹(节省3.7GB) - 删除所有 .yoyo 缓存文件夹(节省1.2GB) - 删除所有 dist 构建文件(节省55MB) 项目优化: - 项目大小从 8.1GB 减少到 3.2GB(节省60%空间) - 保留完整的源代码和配置文件 - .gitignore 已配置,防止再次提交大文件 启动脚本: - start-industry.sh/bat/ps1 脚本会自动检测并安装依赖 - 首次启动时自动运行 npm install - 支持单个或批量启动产业系统 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
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替换完成!'); |