const express = require('express'); const path = require('path'); const fs = require('fs'); const yaml = require('js-yaml'); // 加载路由配置 function loadRoutes() { try { const fileContents = fs.readFileSync('routes.yaml', 'utf8'); return yaml.load(fileContents); } catch (e) { console.error('加载路由配置失败:', e); process.exit(1); } } const config = loadRoutes(); const app = express(); const PORT = config.server.port || 4155; // 静态文件服务 app.use('/css', express.static('css')); app.use('/js', express.static('js')); app.use('/data', express.static('data')); app.use('/order-classes', express.static('order-classes')); // 日志中间件 app.use((req, res, next) => { console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`); next(); }); // 主路由 - 显示订单班选择页面 app.get('/', (req, res) => { const orderClass = req.query.class; if (orderClass) { // 如果指定了订单班,重定向到对应路由 res.redirect(`/order-class/${orderClass}`); } else { // 显示选择页面 res.send(generateIndexPage()); } }); // 订单班路由 app.get('/order-class/:className', (req, res) => { const className = req.params.className; const classConfig = config.order_classes[className]; if (!classConfig) { res.status(404).send(generate404Page(className)); return; } // 如果订单班已完成,返回其页面 if (classConfig.status === 'completed') { const filePath = path.join(__dirname, classConfig.path, classConfig.entry); if (fs.existsSync(filePath)) { // 读取文件并修改相对路径 let html = fs.readFileSync(filePath, 'utf8'); // 修正资源路径 html = html.replace(/href="css\//g, 'href="/css/'); html = html.replace(/src="js\//g, 'src="/js/'); html = html.replace(/href="pages\//g, `href="${classConfig.path}`); html = html.replace(/src="\/data\//g, 'src="/data/'); html = html.replace(/href="\/pages\//g, `href="${classConfig.path}`); res.send(html); } else { res.send(generateComingSoonPage(classConfig)); } } else { res.send(generateComingSoonPage(classConfig)); } }); // 处理订单班内部页面(如文旅的overview.html等) app.get('/order-classes/:className/:page', (req, res) => { const { className, page } = req.params; const filePath = path.join(__dirname, 'order-classes', className, page); if (fs.existsSync(filePath)) { let html = fs.readFileSync(filePath, 'utf8'); // 修正资源路径 html = html.replace(/href="\.\.\/css\//g, 'href="/css/'); html = html.replace(/src="\.\.\/js\//g, 'src="/js/'); html = html.replace(/src="\/data\//g, 'src="/data/'); res.send(html); } else { res.status(404).send(generate404Page(`${className}/${page}`)); } }); // 生成首页(选择页面) function generateIndexPage() { const orderClasses = Object.entries(config.order_classes); const completedClasses = orderClasses.filter(([_, c]) => c.status === 'completed'); const pendingClasses = orderClasses.filter(([_, c]) => c.status === 'pending'); return `
基于多Agent协作的智能方案生成平台
${config.description}
${config.description}
${classConfig.title}
${classConfig.description}
🚀 正在开发中
我们的AI专家团队正在为您准备专业的解决方案