- 包含4个产业方向的前端项目:智能开发、智能制造、大健康、财经商贸 - 已清理node_modules、.yoyo等大文件,项目大小从2.6GB优化至631MB - 配置完善的.gitignore文件 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
85 lines
3.2 KiB
JavaScript
85 lines
3.2 KiB
JavaScript
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("无");
|
||
}
|