- 包含4个产业方向的前端项目:智能开发、智能制造、大健康、财经商贸 - 已清理node_modules、.yoyo等大文件,项目大小从2.6GB优化至631MB - 配置完善的.gitignore文件 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
151 lines
4.6 KiB
JavaScript
151 lines
4.6 KiB
JavaScript
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
// Read finance commerce projects data
|
|
const financeProjects = JSON.parse(
|
|
fs.readFileSync('网页未导入数据/财经商贸产业/财经商贸项目案例.json', 'utf8')
|
|
);
|
|
|
|
// Transform finance projects to match the exact structure of manufacturing projects
|
|
const transformedProjects = financeProjects.map((project, index) => ({
|
|
id: index + 1,
|
|
name: project['案例名称'],
|
|
description: project['所属垂直方向'],
|
|
positions: project['对应个人简历名称'].split(',').map(p => p.trim()),
|
|
unit: project['对应单元名称(垂直能力课)'] || project['对应单元名称(复合能力课)'],
|
|
direction: project['所属垂直方向'],
|
|
category: getCategoryFromDirection(project['所属垂直方向'])
|
|
}));
|
|
|
|
// Helper function to map direction to category
|
|
function getCategoryFromDirection(direction) {
|
|
const categoryMap = {
|
|
'国际贸易': '国际贸易',
|
|
'供应链管理': '供应链管理',
|
|
'电子商务': '电子商务'
|
|
};
|
|
return categoryMap[direction] || direction;
|
|
}
|
|
|
|
// Generate the complete mock file content
|
|
const mockFileContent = `// 项目库Mock数据
|
|
export const getMockProjectsList = (params = {}) => {
|
|
const { search = "", page = 1, pageSize = 10 } = params;
|
|
|
|
// 完整项目列表数据
|
|
const projects = ${JSON.stringify(transformedProjects, null, 4)};
|
|
|
|
// 搜索过滤
|
|
let filteredProjects = projects;
|
|
if (search) {
|
|
filteredProjects = projects.filter(project =>
|
|
project.name.includes(search) ||
|
|
project.description.includes(search) ||
|
|
project.positions.some(pos => pos.includes(search)) ||
|
|
project.category.includes(search)
|
|
);
|
|
}
|
|
|
|
// 分页
|
|
const start = (page - 1) * pageSize;
|
|
const end = start + pageSize;
|
|
const paginatedProjects = filteredProjects.slice(start, end);
|
|
|
|
return {
|
|
success: true,
|
|
data: paginatedProjects,
|
|
total: filteredProjects.length,
|
|
page,
|
|
pageSize
|
|
};
|
|
};
|
|
|
|
// 项目详情Mock数据 - 财经商贸
|
|
export const getMockProjectDetail = (id) => {
|
|
const projects = ${JSON.stringify(transformedProjects, null, 4)};
|
|
|
|
const project = projects.find(p => p.id === parseInt(id));
|
|
|
|
if (!project) {
|
|
return {
|
|
success: false,
|
|
message: '项目不存在'
|
|
};
|
|
}
|
|
|
|
// 查找原始项目数据以获取详细内容
|
|
const financeProjectsData = ${JSON.stringify(financeProjects, null, 4)};
|
|
const originalProject = financeProjectsData[project.id - 1];
|
|
|
|
// 处理项目内容
|
|
let sections = [];
|
|
if (originalProject && originalProject['项目案例内容']) {
|
|
// 将Markdown内容转换为sections
|
|
const content = originalProject['项目案例内容'];
|
|
const lines = content.split('\\n');
|
|
let currentSection = null;
|
|
let currentContent = [];
|
|
|
|
lines.forEach(line => {
|
|
if (line.startsWith('# ') || line.startsWith('## ')) {
|
|
if (currentSection) {
|
|
sections.push({
|
|
title: currentSection,
|
|
content: currentContent.join('\\n').trim()
|
|
});
|
|
}
|
|
currentSection = line.replace(/^#+\\s*/, '').trim();
|
|
currentContent = [];
|
|
} else {
|
|
currentContent.push(line);
|
|
}
|
|
});
|
|
|
|
if (currentSection) {
|
|
sections.push({
|
|
title: currentSection,
|
|
content: currentContent.join('\\n').trim()
|
|
});
|
|
}
|
|
}
|
|
|
|
return {
|
|
success: true,
|
|
data: {
|
|
id: project.id,
|
|
title: project.name,
|
|
description: project.description || '',
|
|
images: [],
|
|
sections: sections.length > 0 ? sections : [
|
|
{
|
|
title: "项目概述",
|
|
content: project.name
|
|
}
|
|
]
|
|
}
|
|
};
|
|
};
|
|
`;
|
|
|
|
// Backup existing file
|
|
const timestamp = Date.now();
|
|
const backupPath = `src/mocks/projectLibraryMock.js.backup_${timestamp}`;
|
|
fs.copyFileSync('src/mocks/projectLibraryMock.js', backupPath);
|
|
console.log(`✅ Created backup at: ${backupPath}`);
|
|
|
|
// Write the new mock file
|
|
fs.writeFileSync('src/mocks/projectLibraryMock.js', mockFileContent);
|
|
console.log('✅ Successfully replaced projectLibraryMock.js with finance/commerce data');
|
|
|
|
// Update categories in ProjectLibraryPage/index.jsx
|
|
const indexPath = 'src/pages/ProjectLibraryPage/index.jsx';
|
|
const indexContent = fs.readFileSync(indexPath, 'utf8');
|
|
|
|
// Get unique categories and directions
|
|
const uniqueDirections = [...new Set(financeProjects.map(p => p['所属垂直方向']))];
|
|
const categories = ['全部', ...uniqueDirections];
|
|
|
|
console.log('📋 Categories to update:', categories);
|
|
console.log('✅ Project library data replacement complete!');
|
|
console.log(`📊 Total projects: ${transformedProjects.length}`);
|
|
console.log(`📁 Backup saved at: ${backupPath}`); |