Files
ALL-teach_sys/frontend_智能制造/test_data_transform.cjs
KQL 38350dca36 更新12个教务系统并优化项目大小
主要更新:
- 更新所有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>
2025-10-17 14:36:25 +08:00

85 lines
3.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const fs = require('fs');
// 读取数据
const companyJobsNewData = JSON.parse(fs.readFileSync('./src/data/companyJobsNew.json', 'utf8'));
const companyImagesData = JSON.parse(fs.readFileSync('./网页未导入数据/智能制造产业/智能制造_内推岗位企业图片.json', 'utf8'));
const interviewStatusData = JSON.parse(fs.readFileSync('./src/data/interviewStatus.json', 'utf8'));
console.log("=== 数据转换测试 ===\n");
// 创建图片映射复制mockData.js中的逻辑
const companyImagesMap = {};
companyImagesData.forEach(item => {
const positionName = item["内推岗位名称"];
const imageLinks = item["BOSS照片链接"];
if (positionName && imageLinks) {
companyImagesMap[positionName] = imageLinks.split(',').map(url => url.trim());
}
});
console.log("图片映射创建完成,共", Object.keys(companyImagesMap).length, "个岗位\n");
// 获取面试状态中的岗位
const interviewedPositions = interviewStatusData.map(status => status["查询岗位名称"]);
console.log("面试状态岗位数:", interviewedPositions.length);
console.log("面试状态岗位:", interviewedPositions.join(", "));
// 模拟transformCompanyJobs函数
const today = new Date();
today.setHours(0, 0, 0, 0);
const transformedJobs = companyJobsNewData
.filter(job => !interviewedPositions.includes(job["内推岗位名称"]))
.map((job, index) => {
const positionName = job["内推岗位名称"];
const companyImages = companyImagesMap[positionName] || [];
return {
id: index + 1,
position: positionName,
hasImages: companyImages.length > 0,
imageCount: companyImages.length,
details: {
companyImages: companyImages
}
};
});
console.log("\n=== 转换后的岗位数据 ===");
console.log("过滤后岗位总数:", transformedJobs.length);
console.log("有图片的岗位数:", transformedJobs.filter(j => j.hasImages).length);
console.log("\n=== 前10个转换后的岗位 ===");
transformedJobs.slice(0, 10).forEach((job, idx) => {
const mark = job.hasImages ? "✅" : "❌";
console.log(mark, (idx+1) + ".", job.position,
job.hasImages ? `(${job.imageCount}张)` : "(无图片)");
});
console.log("\n=== 有图片的岗位详细信息 ===");
const jobsWithImages = transformedJobs.filter(j => j.hasImages);
jobsWithImages.forEach((job, idx) => {
console.log(`${idx+1}. ${job.position}: ${job.imageCount}张图片`);
if (job.details.companyImages.length > 0) {
console.log(` 第一张: ${job.details.companyImages[0].substring(0, 80)}...`);
}
});
console.log("\n=== 被过滤掉的面试状态岗位中有图片的 ===");
const filteredJobsWithImages = companyJobsNewData
.filter(job => interviewedPositions.includes(job["内推岗位名称"]))
.filter(job => companyImagesMap[job["内推岗位名称"]])
.map(job => ({
position: job["内推岗位名称"],
imageCount: companyImagesMap[job["内推岗位名称"]].length
}));
if (filteredJobsWithImages.length > 0) {
console.log("注意:以下岗位有图片但因为在面试状态中被过滤:");
filteredJobsWithImages.forEach((job, idx) => {
console.log(` ${idx+1}. ${job.position} (${job.imageCount}张图片)`);
});
} else {
console.log("无");
}