Files
teach_sys_Demo/test_mockdata_transform.cjs

118 lines
4.8 KiB
JavaScript
Raw Permalink Normal View History

// 测试mockData中的transformCompanyJobs函数
const companyJobsNewData = require('./src/data/companyJobsNew.json');
const companyImagesData = require('./网页未导入数据/文旅产业/文旅_内推岗位企业图片.json');
const interviewStatusData = require('./src/data/interviewStatus.json');
// 创建公司图片映射模拟mockData.js中的逻辑
const companyImagesMap = {};
companyImagesData.forEach(item => {
const imageUrls = item['BOSS照片链接'] ? item['BOSS照片链接'].split(',').map(url => url.trim()) : [];
companyImagesMap[item['内推岗位名称']] = imageUrls;
});
console.log('📊 公司图片映射创建完成');
console.log(' 映射表大小:', Object.keys(companyImagesMap).length);
console.log(' SEO专员图片数:', companyImagesMap['SEO专员']?.length || 0);
// 模拟transformCompanyJobs函数
const transformCompanyJobs = (jobsData) => {
const today = new Date();
today.setHours(0, 0, 0, 0);
const interviewedPositions = interviewStatusData.map(status => status["查询岗位名称"]);
return jobsData
.filter(job => !interviewedPositions.includes(job["内推岗位名称"]))
.map((job, index) => {
const deadlineParts = job["截止时间"].split('/');
const deadlineDate = new Date(
parseInt(deadlineParts[0]),
parseInt(deadlineParts[1]) - 1,
parseInt(deadlineParts[2])
);
deadlineDate.setHours(0, 0, 0, 0);
const isExpired = deadlineDate < today;
return {
id: index + 1,
company: job["公司介绍"] ? job["公司介绍"].split('。')[0].substring(0, 20) + '...' : `公司${index + 1}`,
position: job["内推岗位名称"],
salary: job["薪资"],
status: isExpired ? "expired" : "available",
jobType: job["岗位标签"] === "实习" ? "internship" : "fulltime",
remainingPositions: parseInt(job["招聘人数"]) || 1,
applicationStatus: isExpired ? "expired" : "not_applied",
tags: job["职位标签"] || [],
deadline: `${deadlineParts[0]}-${deadlineParts[1].padStart(2, '0')}-${deadlineParts[2].padStart(2, '0')}`,
deadlineDate: deadlineDate,
isExpired: isExpired,
type: job["岗位相关标签"] || "专业相关岗位",
jobCategory: job["岗位相关标签"] || "专业相关岗位",
location: job["工作地点"],
education: job["学历要求"],
benefits: job["福利标签"] || [],
isRecommended: Math.random() > 0.7,
details: {
location: job["工作地点"],
experience: "1-3年",
education: job["学历要求"],
positions: job["招聘人数"],
description: job["职位描述"],
requirements: job["任职要求"] ? job["任职要求"].split(/\d+\.\s*/).filter(r => r.trim()) : [],
requirementsText: job["任职要求"],
benefits: job["福利标签"] || [],
companyInfo: job["公司介绍"],
companyImages: companyImagesMap[job["内推岗位名称"]] || []
}
};
})
.sort((a, b) => {
return b.deadlineDate - a.deadlineDate;
});
};
const transformedJobs = transformCompanyJobs(companyJobsNewData);
console.log('\n📋 转换后的岗位数据');
console.log(' 总岗位数:', transformedJobs.length);
// 查找SEO专员
const seoJob = transformedJobs.find(job => job.position === 'SEO专员');
console.log('\n🎯 SEO专员岗位数据:');
if (seoJob) {
console.log(' ✓ 找到SEO专员岗位');
console.log(' 岗位ID:', seoJob.id);
console.log(' 岗位名称:', seoJob.position);
console.log(' 公司介绍存在:', !!seoJob.details.companyInfo);
console.log(' 公司介绍长度:', seoJob.details.companyInfo?.length || 0);
console.log(' companyImages存在:', !!seoJob.details.companyImages);
console.log(' companyImages是数组:', Array.isArray(seoJob.details.companyImages));
console.log(' 图片数量:', seoJob.details.companyImages?.length || 0);
if (seoJob.details.companyImages && seoJob.details.companyImages.length > 0) {
console.log(' ✅ SEO专员有图片数据!');
console.log(' 第一张图片:', seoJob.details.companyImages[0]);
} else {
console.log(' ❌ SEO专员没有图片数据!');
}
console.log('\n 完整的details对象:');
console.log(JSON.stringify(seoJob.details, null, 2));
} else {
console.log(' ✗ 未找到SEO专员岗位');
}
// 统计有图片的岗位
const jobsWithImages = transformedJobs.filter(job =>
job.details.companyImages && job.details.companyImages.length > 0
);
console.log('\n📸 图片统计:');
console.log(' 有图片的岗位数:', jobsWithImages.length);
console.log(' 前10个有图片的岗位:');
jobsWithImages.slice(0, 10).forEach(job => {
console.log(` - ${job.position}: ${job.details.companyImages.length}张图片`);
});