guanghulab/backend/routes/coldstart.js
2026-05-10 13:12:44 +08:00

135 lines
3.3 KiB
JavaScript

const express = require('express');
const axios = require('axios');
const router = express.Router();
// 冷启动热身接口
router.post('/', async (req, res) => {
try {
// 并行执行四项检查
const [notion, primary, fallback, feishu] = await Promise.allSettled([
checkNotion(),
checkPrimaryAPI(),
checkFallbackAPI(),
checkFeishu()
]);
const result = {
status: 'ok',
message: '冷启动热身完成',
checks: {
notion_connection: notion.status === 'fulfilled' ? notion.value : false,
primary_api: primary.status === 'fulfilled' ? primary.value : false,
fallback_api: fallback.status === 'fulfilled' ? fallback.value : false,
feishu_connection: feishu.status === 'fulfilled' ? feishu.value : false
},
timestamp: new Date().toISOString()
};
res.json(result);
} catch (err) {
res.status(500).json({
status: 'error',
message: '冷启动检查失败',
error: err.message
});
}
});
// 检查 Notion 连接
async function checkNotion() {
try {
const token = process.env.NOTION_TOKEN;
if (!token) return false;
// 轻量检查:读取 Notion 用户信息
const response = await axios.get('https://api.notion.com/v1/users/me', {
headers: {
'Authorization': `Bearer ${token}`,
'Notion-Version': '2022-06-28'
},
timeout: 5000
});
return response.status === 200;
} catch {
return false;
}
}
// 检查主 API
async function checkPrimaryAPI() {
try {
const key = process.env.PRIMARY_API_KEY;
if (!key) return false;
// 轻量检查:调用一个简单的测试接口
const response = await axios.post(
'https://api.deepseek.com/v1/chat/completions',
{
model: 'deepseek-chat',
messages: [{ role: 'user', content: 'ping' }],
max_tokens: 5
},
{
headers: {
'Authorization': `Bearer ${key}`,
'Content-Type': 'application/json'
},
timeout: 5000
}
);
return response.status === 200;
} catch {
return false;
}
}
// 检查备用 API
async function checkFallbackAPI() {
try {
const key = process.env.FALLBACK_API_KEY;
if (!key) return false;
const response = await axios.post(
'https://api.deepseek.com/v1/chat/completions',
{
model: 'deepseek-chat',
messages: [{ role: 'user', content: 'ping' }],
max_tokens: 5
},
{
headers: {
'Authorization': `Bearer ${key}`,
'Content-Type': 'application/json'
},
timeout: 5000
}
);
return response.status === 200;
} catch {
return false;
}
}
// 检查飞书连接
async function checkFeishu() {
try {
const appId = process.env.FEISHU_APP_ID;
const appSecret = process.env.FEISHU_APP_SECRET;
if (!appId || !appSecret) return false;
// 获取 tenant_access_token
const response = await axios.post(
'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal',
{
app_id: appId,
app_secret: appSecret
},
{
headers: { 'Content-Type': 'application/json' },
timeout: 5000
}
);
return response.data.code === 0;
} catch {
return false;
}
}
module.exports = router;