import fs from 'fs'; // 读取日历数据 const dataPath = './src/data/intelligentManufacturingCalendar.json'; const data = JSON.parse(fs.readFileSync(dataPath, 'utf8')); console.log('开始修正单元归属...\n'); let fixCount = 0; // 1. 修正所有单元小结的单元归属 data.forEach((item, index) => { if (item['个人课程表'] === '单元小结') { // 找前一条有个人课程的记录 let prevUnit = null; for (let i = index - 1; i >= 0; i--) { if (data[i]['个人课程表'] && data[i]['个人课程表'] !== '单元小结' && data[i]['所属单元(个人课程)']) { prevUnit = data[i]['所属单元(个人课程)']; break; } } if (prevUnit && item['所属单元(个人课程)'] !== prevUnit) { console.log(`修正单元小结 [${item['日期']}]:`); console.log(` 原单元:${item['所属单元(个人课程)'] || '(空)'}`); console.log(` 新单元:${prevUnit}`); item['所属单元(个人课程)'] = prevUnit; fixCount++; } } // 2. 修正"个人职业目标与发展路径规划"的单元 if (item['个人课程表'] === '个人职业目标与发展路径规划') { if (item['所属单元(个人课程)'] !== '职业规划课') { console.log(`\n修正课程 "个人职业目标与发展路径规划" [${item['日期']}]:`); console.log(` 原单元:${item['所属单元(个人课程)'] || '(空)'}`); console.log(` 新单元:职业规划课`); item['所属单元(个人课程)'] = '职业规划课'; fixCount++; } } // 3. 修正"采样方法与仪器选型"的单元 if (item['个人课程表'] === '采样方法与仪器选型') { if (item['所属单元(个人课程)'] !== '空气及废气检测') { console.log(`\n修正课程 "采样方法与仪器选型" [${item['日期']}]:`); console.log(` 原单元:${item['所属单元(个人课程)'] || '(空)'}`); console.log(` 新单元:空气及废气检测`); item['所属单元(个人课程)'] = '空气及废气检测'; fixCount++; } } }); // 写回文件 fs.writeFileSync(dataPath, JSON.stringify(data, null, 2), 'utf8'); console.log(`\n修正完成!共更新了 ${fixCount} 条记录的单元归属。`); // 验证修正结果 console.log('\n验证结果:'); const summaryCount = data.filter(d => d['个人课程表'] === '单元小结' && d['所属单元(个人课程)']).length; const careerCount = data.filter(d => d['个人课程表'] === '个人职业目标与发展路径规划' && d['所属单元(个人课程)'] === '职业规划课').length; const samplingCount = data.filter(d => d['个人课程表'] === '采样方法与仪器选型' && d['所属单元(个人课程)'] === '空气及废气检测').length; console.log(` - 单元小结有单元归属的数量:${summaryCount}/10`); console.log(` - 个人职业目标与发展路径规划归属于"职业规划课":${careerCount > 0 ? '是' : '否'}`); console.log(` - 采样方法与仪器选型归属于"空气及废气检测":${samplingCount > 0 ? '是' : '否'}`);