Agent/server/src/main.js

40 lines
1.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
const config = require('./config');
const { createApp } = require('./app');
const db = require('./infra/db');
const redis = require('./infra/redis');
const modules = require('./modules/modules');
const precompute = require('./precompute');
async function bootstrap() {
// 1. 注册预计算器
precompute.registerAll();
await require('./precompute/crew-metrics').ensureSchema();
// 2. 启动一致性校验(注册表 SSOT + modules 表对齐§5.4
await modules.syncModulesOnBoot();
// 3. 起 API 服务;导出 Worker 以独立进程运行,避免阻塞 HTTP 请求。
const app = createApp();
const server = app.listen(config.port, '127.0.0.1', () => {
console.log(`[server] listening on http://127.0.0.1:${config.port}/api/v1`);
});
// 4. 优雅退出
const shutdown = async (sig) => {
console.log(`[server] ${sig} received, shutting down...`);
server.close();
await db.close().catch(() => {});
await redis.close().catch(() => {});
process.exit(0);
};
process.on('SIGINT', () => shutdown('SIGINT'));
process.on('SIGTERM', () => shutdown('SIGTERM'));
}
bootstrap().catch((err) => {
console.error('[server] bootstrap failed:', err);
process.exit(1);
});