58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
require('dotenv').config();
|
||
const express = require('express');
|
||
const cors = require('cors');
|
||
const path = require('path');
|
||
|
||
const authRoutes = require('./routes/auth');
|
||
const chatRoutes = require('./routes/chat');
|
||
const buildRoutes = require('./routes/build');
|
||
const notifyRoutes = require('./routes/notify');
|
||
|
||
const app = express();
|
||
app.use(cors());
|
||
app.use(express.json({ limit: '2mb' }));
|
||
|
||
// ── 静态文件:persona-studio 前端 ──
|
||
app.use('/persona-studio', express.static(path.join(__dirname, '..', 'frontend')));
|
||
|
||
// ── API 路由(统一前缀 /api/ps)──
|
||
app.use('/api/ps/auth', authRoutes);
|
||
app.use('/api/ps/chat', chatRoutes);
|
||
app.use('/api/ps/build', buildRoutes);
|
||
app.use('/api/ps/notify', notifyRoutes);
|
||
|
||
// ── 健康检查 ──
|
||
app.get('/api/ps/health', (_req, res) => {
|
||
res.json({
|
||
status: 'ok',
|
||
service: 'persona-studio',
|
||
version: '1.0.0',
|
||
timestamp: new Date().toISOString()
|
||
});
|
||
});
|
||
|
||
// ── 根路由 ──
|
||
app.get('/', (_req, res) => {
|
||
res.json({
|
||
status: 'ok',
|
||
message: 'Persona Studio 后端服务运行中',
|
||
version: '1.0.0',
|
||
routes: [
|
||
'/api/ps/auth/login',
|
||
'/api/ps/chat/message',
|
||
'/api/ps/chat/history',
|
||
'/api/ps/build/start',
|
||
'/api/ps/notify/send',
|
||
'/api/ps/health'
|
||
]
|
||
});
|
||
});
|
||
|
||
const PORT = process.env.PS_PORT || 3002;
|
||
|
||
app.listen(PORT, () => {
|
||
console.log(`🌊 Persona Studio 后端服务启动 · 端口 ${PORT}`);
|
||
});
|
||
|
||
module.exports = app;
|