refactor: modularize application domains

This commit is contained in:
kkfluous
2026-08-13 12:03:34 +08:00
parent d610e4b841
commit 06fe75b4c7
142 changed files with 14645 additions and 8885 deletions
+47
View File
@@ -0,0 +1,47 @@
import { serveStatic } from '@hono/node-server/serve-static';
import { Hono } from 'hono';
import { cors } from 'hono/cors';
import authRouter from './auth/login.js';
import { authMiddleware } from './auth/middleware.js';
import eleRouter from './routes/ele/index.js';
import energyRouter from './routes/energy/index.js';
import feedbackRouter from './routes/feedback/index.js';
import hydrogenHeatmapRouter from './routes/hydrogen-heatmap.js';
import mileageRouter from './routes/mileage/index.js';
import schedulingRouter from './routes/scheduling/index.js';
import vehicleHeatmapRouter from './routes/vehicle-heatmap.js';
import vehiclesRouter from './routes/vehicles.js';
/**
* 创建 HTTP 应用,但不监听端口、不访问数据库,也不启动后台任务。
* 保持应用装配无副作用后,测试可以安全导入路由而不会挂住进程。
*/
export function createApp(): Hono {
const app = new Hono();
app.use('/api/*', cors());
// 登录接口公开,其余 API 统一经过认证与数据权限检查。
app.route('/api/auth', authRouter);
app.use('/api/*', authMiddleware);
app.route('/api/vehicles', vehiclesRouter);
app.route('/api/mileage', mileageRouter);
app.route('/api/scheduling', schedulingRouter);
app.route('/api/energy', energyRouter);
app.route('/api/ele', eleRouter);
app.route('/api/feedback', feedbackRouter);
app.route('/api/vehicle-heatmap', vehicleHeatmapRouter);
app.route('/api/hydrogen-heatmap', hydrogenHeatmapRouter);
app.get('/api/health', (context) => context.json({
status: 'ok',
time: new Date().toISOString(),
}));
// 生产环境由同一进程托管 Vite 构建产物,并回退到单页应用入口。
app.use('/*', serveStatic({ root: './dist' }));
app.use('/*', serveStatic({ root: './dist', path: 'index.html' }));
return app;
}