3v324v23's picture
chore: 彻底清理项目,符合 Hugging Face 部署规范
ae4ceef
import { Router, type Response } from 'express';
import { verifyAdmin } from './auth.js';
import db from '../lib/db.js';
import { getQueueStatus } from '../lib/queue.js';
import { aiCircuitBreaker } from '../lib/circuit-breaker.js';
const router = Router();
/**
* 获取所有订单 (管理员)
*/
router.get('/orders', verifyAdmin, (req: any, res) => {
const orders = db.prepare(`
SELECT o.*, u.email as user_email, p.name as product_name
FROM orders o
JOIN users u ON o.user_id = u.id
JOIN products p ON o.product_id = p.id
ORDER BY o.created_at DESC
`).all();
res.json({ success: true, orders });
});
/**
* 获取所有用户 (管理员)
*/
router.get('/users', verifyAdmin, (req: any, res) => {
const users = db.prepare('SELECT id, email, name, role, plan, quota_remaining, created_at FROM users').all();
res.json({ success: true, users });
});
/**
* 更新产品信息 (管理员)
*/
router.post('/products/update', verifyAdmin, (req: any, res) => {
const { id, name, price, stock, description } = req.body;
try {
db.prepare(`
UPDATE products
SET name = ?, price = ?, stock = ?, description = ?
WHERE id = ?
`).run(name, price, stock, description, id);
res.json({ success: true, message: '产品已更新' });
} catch (err: any) {
res.status(500).json({ success: false, error: err.message });
}
});
/**
* 重置产品库存 (管理员)
*/
router.post('/products/reset-stock', verifyAdmin, (req: any, res) => {
const { id, stock = 10 } = req.body;
try {
db.prepare('UPDATE products SET stock = ? WHERE id = ?').run(stock, id);
res.json({ success: true, message: '库存已重置' });
} catch (err: any) {
res.status(500).json({ success: false, error: err.message });
}
});
/**
* 清除审计日志 (管理员)
*/
router.post('/system/clear-logs', verifyAdmin, (req: any, res) => {
try {
db.prepare('DELETE FROM audit_logs').run();
res.json({ success: true, message: '日志已清除' });
} catch (err: any) {
res.status(500).json({ success: false, error: err.message });
}
});
/**
* 获取所有知识库 (管理员监控)
*/
router.get('/knowledge/all', verifyAdmin, (req: any, res) => {
const kbs = db.prepare(`
SELECT k.*, u.email as user_email
FROM knowledge_bases k
JOIN users u ON k.user_id = u.id
ORDER BY k.created_at DESC
`).all();
res.json({ success: true, kbs });
});
/**
* 获取系统全量指标 (管理员)
*/
router.get('/system/dashboard', verifyAdmin, async (req: any, res) => {
const queueStatus = await getQueueStatus();
const totalOrders = db.prepare('SELECT count(*) as count FROM orders').get() as any;
const totalRevenue = db.prepare("SELECT sum(amount) as sum FROM orders WHERE status = 'paid'").get() as any;
const activeUsers = db.prepare('SELECT count(*) as count FROM users').get() as any;
// 获取最近 7 天的订单趋势
const orderTrend = db.prepare(`
SELECT date(created_at) as date, count(*) as count, sum(amount) as revenue
FROM orders
WHERE created_at >= date('now', '-7 days')
GROUP BY date(created_at)
ORDER BY date ASC
`).all();
res.json({
success: true,
metrics: {
totalOrders: totalOrders.count,
totalRevenue: totalRevenue.sum || 0,
activeUsers: activeUsers.count,
},
trend: orderTrend,
queue: queueStatus,
circuitBreaker: aiCircuitBreaker.getStatus(),
});
});
export default router;