- 数据库新增 Role 枚举、disabled 字段和 McpCallLog 调用日志表 - 后端新增 requireAdmin 中间件和 /api/admin/* 管理接口(统计、用户、项目、日志) - MCP 工具调用自动记录详细日志(耗时、参数、响应大小、客户端IP、token估算) - 前端新增 /admin 路由区域:仪表盘、用户管理、项目管理、调用日志四个页面 - JWT 携带 role 字段,登录/OAuth 增加禁用账号检查 - nginx 配置补充 X-Forwarded-For 透传真实客户端 IP Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import express from 'express';
|
|
import cors from 'cors';
|
|
import authRouter from './routes/auth.js';
|
|
import oauthRouter from './routes/oauth.js';
|
|
import projectRouter from './routes/projects.js';
|
|
import importRouter from './routes/import.js';
|
|
import moduleRouter from './routes/modules.js';
|
|
import endpointRouter from './routes/endpoints.js';
|
|
import fetchSpecRouter from './routes/fetch-spec.js';
|
|
import adminRouter from './routes/admin.js';
|
|
|
|
const app = express();
|
|
app.use(cors());
|
|
app.use(express.json({ limit: '10mb' }));
|
|
app.use(express.urlencoded({ extended: true }));
|
|
|
|
app.get('/api/health', (_req, res) => {
|
|
res.json({ success: true, data: { status: 'ok' } });
|
|
});
|
|
|
|
app.use('/api/auth', authRouter);
|
|
app.use('/api/auth/oauth', oauthRouter);
|
|
app.use('/api/fetch-spec', fetchSpecRouter);
|
|
app.use('/api/projects', projectRouter);
|
|
app.use('/api/projects', importRouter);
|
|
app.use('/api/projects', moduleRouter);
|
|
app.use('/api/projects', endpointRouter);
|
|
app.use('/api/admin', adminRouter);
|
|
|
|
const port = process.env.SERVER_PORT || 3000;
|
|
app.listen(port, () => {
|
|
console.log(`Server running on port ${port}`);
|
|
});
|