112 lines
3.7 KiB
JavaScript
112 lines
3.7 KiB
JavaScript
|
|
// 验证课程作业图片数据匹配情况
|
|||
|
|
const fs = require('fs');
|
|||
|
|
const path = require('path');
|
|||
|
|
|
|||
|
|
// 读取文旅_作业海报.json
|
|||
|
|
const postersPath = path.join(__dirname, '网页未导入数据/文旅产业/文旅_作业海报.json');
|
|||
|
|
const posters = JSON.parse(fs.readFileSync(postersPath, 'utf-8'));
|
|||
|
|
|
|||
|
|
// 创建课程名称到图片URL的映射
|
|||
|
|
const posterMap = new Map();
|
|||
|
|
posters.forEach(item => {
|
|||
|
|
posterMap.set(item['课程名称'], item['图片url']);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log(`文旅_作业海报.json 共有 ${posters.length} 条数据\n`);
|
|||
|
|
|
|||
|
|
// 读取mockData.js并提取homework数据
|
|||
|
|
const mockDataPath = path.join(__dirname, 'src/data/mockData.js');
|
|||
|
|
const mockDataContent = fs.readFileSync(mockDataPath, 'utf-8');
|
|||
|
|
|
|||
|
|
// 提取homework部分 (使用正则匹配)
|
|||
|
|
const homeworkMatch = mockDataContent.match(/homework:\s*\[([\s\S]*?)\n\s*\],\s*\/\//);
|
|||
|
|
if (!homeworkMatch) {
|
|||
|
|
console.error('无法找到homework数据');
|
|||
|
|
process.exit(1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 统计信息
|
|||
|
|
let totalCourses = 0;
|
|||
|
|
let coursesWithImages = 0;
|
|||
|
|
let coursesWithoutImages = 0;
|
|||
|
|
let coursesNotInPosterJson = [];
|
|||
|
|
let coursesWithWrongImages = [];
|
|||
|
|
|
|||
|
|
// 简单的课程名称提取 (从imageUrl或name字段)
|
|||
|
|
const courseNamePattern = /name:\s*"([^"]+)"/g;
|
|||
|
|
const imageUrlPattern = /imageUrl:\s*"([^"]+)"/g;
|
|||
|
|
|
|||
|
|
let match;
|
|||
|
|
const coursesData = [];
|
|||
|
|
|
|||
|
|
// 提取所有课程名称和imageUrl
|
|||
|
|
let nameMatches = [...mockDataContent.matchAll(courseNamePattern)];
|
|||
|
|
let imageMatches = [...mockDataContent.matchAll(imageUrlPattern)];
|
|||
|
|
|
|||
|
|
console.log('开始验证课程作业图片数据...\n');
|
|||
|
|
console.log('='* 60);
|
|||
|
|
|
|||
|
|
// 遍历homework部分,找到所有课程
|
|||
|
|
const homeworkPart = homeworkMatch[0];
|
|||
|
|
const courseItems = [...homeworkPart.matchAll(/\{\s*id:\s*\d+,\s*name:\s*"([^"]+)"[^}]*imageUrl:\s*"([^"]+)"/g)];
|
|||
|
|
|
|||
|
|
courseItems.forEach(item => {
|
|||
|
|
const courseName = item[1];
|
|||
|
|
const imageUrl = item[2];
|
|||
|
|
totalCourses++;
|
|||
|
|
|
|||
|
|
if (imageUrl && imageUrl !== '') {
|
|||
|
|
coursesWithImages++;
|
|||
|
|
|
|||
|
|
// 检查该课程是否在poster json中
|
|||
|
|
const expectedUrl = posterMap.get(courseName);
|
|||
|
|
|
|||
|
|
if (!expectedUrl) {
|
|||
|
|
coursesNotInPosterJson.push(courseName);
|
|||
|
|
console.log(`⚠️ 课程 "${courseName}" 在文旅_作业海报.json中找不到对应数据`);
|
|||
|
|
} else if (expectedUrl !== imageUrl) {
|
|||
|
|
coursesWithWrongImages.push({
|
|||
|
|
name: courseName,
|
|||
|
|
current: imageUrl,
|
|||
|
|
expected: expectedUrl
|
|||
|
|
});
|
|||
|
|
console.log(`❌ 课程 "${courseName}" 图片URL不匹配`);
|
|||
|
|
console.log(` 当前: ${imageUrl}`);
|
|||
|
|
console.log(` 应为: ${expectedUrl}\n`);
|
|||
|
|
} else {
|
|||
|
|
console.log(`✅ 课程 "${courseName}" 图片URL正确`);
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
coursesWithoutImages++;
|
|||
|
|
console.log(`⚠️ 课程 "${courseName}" 没有设置imageUrl`);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log('\n' + '='.repeat(60));
|
|||
|
|
console.log('\n📊 验证结果统计:\n');
|
|||
|
|
console.log(`总课程数: ${totalCourses}`);
|
|||
|
|
console.log(`已设置图片: ${coursesWithImages}`);
|
|||
|
|
console.log(`未设置图片: ${coursesWithoutImages}`);
|
|||
|
|
console.log(`图片URL错误: ${coursesWithWrongImages.length}`);
|
|||
|
|
console.log(`不在poster json中: ${coursesNotInPosterJson.length}`);
|
|||
|
|
|
|||
|
|
if (coursesWithWrongImages.length > 0) {
|
|||
|
|
console.log('\n❌ 需要修正的课程:');
|
|||
|
|
coursesWithWrongImages.forEach(course => {
|
|||
|
|
console.log(` - ${course.name}`);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (coursesNotInPosterJson.length > 0) {
|
|||
|
|
console.log('\n⚠️ 不在文旅_作业海报.json中的课程:');
|
|||
|
|
coursesNotInPosterJson.forEach(name => {
|
|||
|
|
console.log(` - ${name}`);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (coursesWithWrongImages.length === 0 && coursesNotInPosterJson.length === 0 && coursesWithoutImages === 0) {
|
|||
|
|
console.log('\n✅ 所有课程图片数据都正确匹配!');
|
|||
|
|
} else {
|
|||
|
|
console.log('\n⚠️ 发现数据不匹配,需要修复。');
|
|||
|
|
}
|