const express = require('express'); const cors = require('cors'); const bodyParser = require('body-parser'); const app = express(); const PORT = 8080; // 使用中间件 app.use(cors()); // 允许跨域请求 app.use(bodyParser.json()); // 解析JSON请求体 // 会话存储 const sessions = {}; // 生成唯一会话ID function generateSessionId() { return 'session_' + Date.now() + '_' + Math.random().toString(36).substring(2, 15); } // 开始新会话 app.post('/api/ai/travel/start', (req, res) => { const sessionId = generateSessionId(); sessions[sessionId] = { id: sessionId, messages: [], createdAt: new Date() }; console.log(`新会话已创建: ${sessionId}`); res.json({ code: 200, sessionId: sessionId, msg: '欢迎使用AI旅行助手,请问有什么可以帮助您的?' }); }); // 聊天接口 app.post('/api/ai/travel/chat', (req, res) => { const sessionId = req.headers.sessionid; const message = req.body.message; const logToConsole = req.body.logToConsole || req.headers['x-log-to-console'] === 'true'; console.log(`收到消息请求: sessionId=${sessionId}, logToConsole=${logToConsole}`); // 检查会话是否存在 if (!sessions[sessionId]) { console.log(`会话不存在: ${sessionId}`); return res.status(404).json({ code: 404, msg: '会话不存在,请重新开始对话' }); } // 记录消息 sessions[sessionId].messages.push({ role: 'user', content: message, timestamp: new Date() }); // 在控制台输出消息 if (logToConsole || message.includes('[LOG_TO_CONSOLE]') || message.includes('[CONSOLE_TEST]')) { console.log('\n======== 前端消息输出到控制台 ========'); console.log(`会话ID: ${sessionId}`); console.log(`时间: ${new Date().toLocaleString()}`); console.log(`消息内容: ${message}`); console.log('======================================\n'); } // 模拟AI回复 const aiReply = `我已收到您的消息: "${message.replace(/\[LOG_TO_CONSOLE\]|\[CONSOLE_TEST\]/g, '')}"`; // 记录AI回复 sessions[sessionId].messages.push({ role: 'assistant', content: aiReply, timestamp: new Date() }); // 返回成功响应 res.json({ code: 200, msg: '消息已发送', data: { reply: aiReply } }); }); // 获取状态接口 app.get('/api/ai/travel/status', (req, res) => { const sessionId = req.headers.sessionid; // 检查会话是否存在 if (!sessions[sessionId]) { return res.status(404).json({ code: 404, msg: '会话不存在' }); } // 获取最新的AI回复 const messages = sessions[sessionId].messages; let lastAiMessage = null; for (let i = messages.length - 1; i >= 0; i--) { if (messages[i].role === 'assistant') { lastAiMessage = messages[i]; break; } } res.json({ code: 200, reply: lastAiMessage ? lastAiMessage.content : null, hasNewMessage: !!lastAiMessage }); }); // 结束会话 app.post('/api/ai/travel/end', (req, res) => { const sessionId = req.headers.sessionid; // 检查会话是否存在 if (sessions[sessionId]) { console.log(`结束会话: ${sessionId}`); delete sessions[sessionId]; } res.json({ code: 200, msg: '会话已结束' }); }); // 启动服务器 app.listen(PORT, () => { console.log(`服务器已启动,监听端口: ${PORT}`); console.log(`API基础URL: http://localhost:${PORT}`); });