Files
jiaowu-test/verify_homework_images.cjs

112 lines
3.7 KiB
JavaScript
Raw Permalink Normal View History

// 验证课程作业图片数据匹配情况
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⚠ 发现数据不匹配,需要修复。');
}