Files
ALL-teach_sys/frontend_交通物流/simpleFixInterview.js
KQL cd2e307402 初始化12个产业教务系统项目
主要内容:
- 包含12个产业的完整教务系统前端代码
- 智能启动脚本 (start-industry.sh)
- 可视化产业导航页面 (index.html)
- 项目文档 (README.md)

优化内容:
- 删除所有node_modules和.yoyo文件夹,从7.5GB减少到2.7GB
- 添加.gitignore文件避免上传不必要的文件
- 自动依赖管理和智能启动系统

产业列表:
1. 文旅产业 (5150)
2. 智能制造 (5151)
3. 智能开发 (5152)
4. 财经商贸 (5153)
5. 视觉设计 (5154)
6. 交通物流 (5155)
7. 大健康 (5156)
8. 土木水利 (5157)
9. 食品产业 (5158)
10. 化工产业 (5159)
11. 能源产业 (5160)
12. 环保产业 (5161)

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 14:14:14 +08:00

111 lines
3.7 KiB
JavaScript

import fs from 'fs';
// 简单的修复方案:直接替换整个 mockData.js 文件中有问题的部分
let content = fs.readFileSync('src/data/mockData.js', 'utf-8');
// 查找 transformInterviewStatus 函数的位置,并用一个简单的版本替换
const newFunction = `// 转换面试状态数据
const transformInterviewStatus = (statusData, jobsData) => {
if (!Array.isArray(statusData)) {
return [];
}
return statusData.map((status, index) => {
const matchedJob = jobsData.find(job =>
job["内推岗位名称"] === (status["岗位名称"] || status["查询岗位名称"])
);
const dateString = status["投递时间"] || status["阶段日期"] || "2024-01-01";
let formattedDate = dateString;
let interviewDate = new Date();
if (dateString.includes('-')) {
interviewDate = new Date(dateString);
}
let statusCode = 'PENDING';
const statusText = status["面试状态"] || "已投递";
if (statusText.includes("通过") || statusText.includes("Offer")) {
statusCode = 'OFFER';
} else if (statusText.includes("未通过") || statusText.includes("失败")) {
statusCode = 'FAILED';
}
return {
id: index + 1,
position: status["岗位名称"] || status["查询岗位名称"] || "未知岗位",
interviewTime: formattedDate,
interviewDate: interviewDate,
status: statusCode,
statusText: statusText,
progress: status["面试进度"] || 25,
nextStep: status["下一步"] || "等待回复",
job: matchedJob ? {
salary: matchedJob["薪资"] || "面议",
tags: matchedJob["职位标签"] || [],
location: matchedJob["工作地点"] || "未知",
education: matchedJob["学历要求"] || "不限",
companyInfo: matchedJob["公司介绍"] || "",
jobCategory: matchedJob["岗位相关标签"] || "专业相关岗位",
remainingPositions: 5,
description: matchedJob["职位描述"] || "",
requirements: matchedJob["任职要求"] || ""
} : null
};
}).filter(item => item !== null);
};`;
// 找到函数并替换
const functionPattern = /\/\/ 转换面试状态数据[\s\S]*?const transformInterviewStatus[\s\S]*?\};/;
if (content.match(functionPattern)) {
// 备份
fs.copyFileSync('src/data/mockData.js', `src/data/mockData.js.backup_${Date.now()}`);
// 替换
content = content.replace(functionPattern, newFunction);
// 保存
fs.writeFileSync('src/data/mockData.js', content, 'utf-8');
console.log('修复完成!');
} else {
console.log('未找到函数,尝试手动修复...');
// 手动查找并替换
const lines = content.split('\n');
let startIndex = -1;
let endIndex = -1;
for (let i = 0; i < lines.length; i++) {
if (lines[i].includes('transformInterviewStatus')) {
startIndex = i;
break;
}
}
if (startIndex !== -1) {
let braceCount = 0;
for (let i = startIndex; i < lines.length; i++) {
const line = lines[i];
braceCount += (line.match(/\{/g) || []).length;
braceCount -= (line.match(/\}/g) || []).length;
if (braceCount === 0 && line.includes('}')) {
endIndex = i;
break;
}
}
if (endIndex !== -1) {
// 替换函数
const beforeLines = lines.slice(0, startIndex);
const afterLines = lines.slice(endIndex + 1);
const newLines = [...beforeLines, ...newFunction.split('\n'), ...afterLines];
fs.copyFileSync('src/data/mockData.js', `src/data/mockData.js.backup_${Date.now()}`);
fs.writeFileSync('src/data/mockData.js', newLines.join('\n'), 'utf-8');
console.log('手动修复完成!');
}
}
}