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("无"); }