import fs from 'fs'; // 读取环保项目案例数据 const envProjects = JSON.parse(fs.readFileSync('网页未导入数据/环保产业/环保项目案例.json', 'utf8')); // 转换为班级项目库格式 const projectsList = envProjects.map((project, index) => { // 解析岗位名称 const positions = project["对应个人简历名称"] ? project["对应个人简历名称"].split(',').map(p => p.trim()) : []; // 解析垂直方向和单元 const direction = project["所属垂直方向"] || "环保工程技术与服务"; const unit = project["对应单元名称(垂直能力课)"] || project["对应单元名称(复合能力课)"] || ""; // 确定分类 let category = "环保技术"; if (project["案例名称"].includes("碳")) { category = "碳管理"; } else if (project["案例名称"].includes("节能")) { category = "节能技术"; } else if (project["案例名称"].includes("生态修复") || project["案例名称"].includes("湿地")) { category = "生态修复"; } else if (project["案例名称"].includes("污水") || project["案例名称"].includes("水")) { category = "水处理"; } else if (project["案例名称"].includes("土壤")) { category = "土壤修复"; } else if (project["案例名称"].includes("环境影响评价")) { category = "环境评价"; } else if (project["案例名称"].includes("设备")) { category = "设备运维"; } return { id: index + 1, name: project["案例名称"], description: direction, positions: positions, unit: unit.split(',')[0].trim(), // 取第一个单元 direction: direction, category: category }; }); // 转换项目详情格式 const projectDetails = envProjects.map((project, index) => { // 解析岗位并添加等级 const positions = project["对应个人简历名称"] ? project["对应个人简历名称"].split(',').map(p => { const posName = p.trim(); // 根据岗位名称判断等级 let level = "技术骨干岗"; if (posName.includes("助理") || posName.includes("专员") || posName.includes("技术员")) { level = "普通岗"; } else if (posName.includes("主管") || posName.includes("经理")) { level = "储备干部岗"; } return { level: level, position: posName }; }) : []; // 解析项目内容 const content = project["项目案例内容"] || ""; // 提取项目概述 const overviewMatch = content.match(/# 一、项目概述\s*([\s\S]*?)(?=# 二、|$)/); const overview = overviewMatch ? overviewMatch[1].trim() : ""; // 提取流程部分 const processMatch = content.match(/# 二、项目整体流程介绍\s*([\s\S]*?)(?=# 三、|$)/); const process = processMatch ? processMatch[1].trim() : ""; // 提取关键技术点 const keyPointsMatch = content.match(/# 三、项目案例关键技术点\s*([\s\S]*?)$/); const keyPoints = keyPointsMatch ? keyPointsMatch[1].trim() : ""; return { id: index + 1, name: project["案例名称"], positions: positions, unit: project["对应单元名称(垂直能力课)"] || project["对应单元名称(复合能力课)"] || "", overview: overview, process: process, keyPoints: keyPoints }; }); // 生成Mock数据代码 const mockCode = `// 项目库Mock数据 export const getMockProjectsList = (params = {}) => { const { search = "", page = 1, pageSize = 10 } = params; // 完整项目列表数据 const projects = ${JSON.stringify(projectsList, null, 4)}; // 搜索过滤 const filteredProjects = projects.filter(project => { if (!search) return true; return project.name.includes(search) || project.description.includes(search) || project.positions.some(pos => pos.includes(search)) || project.category.includes(search); }); // 分页 const startIndex = (page - 1) * pageSize; const endIndex = startIndex + pageSize; const paginatedProjects = filteredProjects.slice(startIndex, endIndex); return { data: paginatedProjects, total: filteredProjects.length, page, pageSize, }; }; // 获取项目详情 export const getMockProjectDetail = (id) => { // 直接根据ID返回对应项目的详情 const projects = ${JSON.stringify(projectDetails, null, 2)}; const project = projects.find(p => p.id === parseInt(id)); if (!project) { return { error: "项目未找到" }; } return { data: project }; };`; // 写入文件 fs.writeFileSync('projectLibraryMock_env.js', mockCode, 'utf8'); console.log('环保项目数据转换完成!'); console.log(`共转换了 ${projectsList.length} 个项目`); console.log('\n项目分类统计:'); const categoryStats = {}; projectsList.forEach(p => { categoryStats[p.category] = (categoryStats[p.category] || 0) + 1; }); console.log(categoryStats);