guanghulab/index.js
2026-05-10 13:12:44 +08:00

81 lines
2.3 KiB
JavaScript

require('dotenv').config({ path: '/opt/guanghulab-dingtalk/dingtalk-bot/.env' });
var express = require('express');
var axios = require('axios');
var app = express();
var PORT = process.env.PORT || 3007;
// 引入 v3 webhook 处理器
var dingtalkWebhook = require('./dingtalk-webhook-v3');
app.use(require('cors')());
app.use(require('body-parser').json());
// 健康检查
app.get('/dingtalk/callback', dingtalkWebhook.healthCheck);
// 消息回调(使用签名验证中间件 + 处理器)
app.post('/dingtalk/callback',
dingtalkWebhook.verifyMiddleware,
dingtalkWebhook.handleCallback
);
// ======= Phase 8 新增API路由 =======
var llmEngine = require('./llm-engine');
var githubBridge = require('./github-bridge');
var convManager = require('./conversation-manager');
// LLM引擎状态
app.get('/api/dingtalk/llm-status', async function(req, res) {
try {
var status = await llmEngine.healthCheck();
res.json(status);
} catch (err) {
res.json({ status: 'error', error: err.message });
}
});
// GitHub桥接状态
app.get('/api/dingtalk/github-status', async function(req, res) {
try {
var status = await githubBridge.healthCheck();
res.json(status);
} catch (err) {
res.json({ status: 'error', error: err.message });
}
});
// 对话引擎统计
app.get('/api/dingtalk/conv-stats', function(req, res) {
res.json(convManager.getStats());
});
// 综合系统状态
app.get('/api/dingtalk/system-status', async function(req, res) {
try {
var llmStatus = await llmEngine.healthCheck();
var ghStatus = await githubBridge.healthCheck();
var convStats = convManager.getStats();
res.json({
service: 'M-DINGTALK',
phase: 8,
version: 'v3.0',
llm: llmStatus,
github: ghStatus,
conversations: convStats,
uptime: process.uptime(),
time: new Date().toLocaleString('zh-CN')
});
} catch (err) {
res.json({ status: 'error', error: err.message });
}
});
app.listen(PORT, '0.0.0.0', () => {
console.log('🚀 M-DINGTALK Phase 8 v3.0 启动,端口:' + PORT);
});
process.stdin.resume();
process.on('uncaughtException', (err) => {
console.error('❌ 未捕获异常:', err.message);
});