87 lines
2.6 KiB
JavaScript
87 lines
2.6 KiB
JavaScript
|
|
/**
|
|||
|
|
* /api/chat/context — 组装 system prompt 路由
|
|||
|
|
*
|
|||
|
|
* 聚合所有数据源,返回增强版 system prompt 片段。
|
|||
|
|
* 版权:国作登字-2026-A-00037559
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
'use strict';
|
|||
|
|
|
|||
|
|
var express = require('express');
|
|||
|
|
var router = express.Router();
|
|||
|
|
var notionService = require('../services/notion');
|
|||
|
|
var dbConfig = require('../config/databases');
|
|||
|
|
|
|||
|
|
router.post('/chat/context', async function(req, res) {
|
|||
|
|
var devId = req.body.dev_id;
|
|||
|
|
|
|||
|
|
if (!devId || !/^DEV-\d{3}$/.test(devId)) {
|
|||
|
|
return res.status(400).json({
|
|||
|
|
error: true,
|
|||
|
|
code: 'INVALID_DEV_ID',
|
|||
|
|
message: '需要有效的 dev_id 参数'
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var context = {
|
|||
|
|
dev_id: devId,
|
|||
|
|
profile: null,
|
|||
|
|
agents_count: 0,
|
|||
|
|
syslogs_count: 0,
|
|||
|
|
tickets_count: 0,
|
|||
|
|
_source: 'realtime',
|
|||
|
|
timestamp: new Date().toISOString()
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 获取开发者画像
|
|||
|
|
try {
|
|||
|
|
if (dbConfig.controlPanel) {
|
|||
|
|
var controlPanel = await notionService.queryDB(dbConfig.controlPanel, {
|
|||
|
|
property: 'DEV编号',
|
|||
|
|
rich_text: { equals: devId }
|
|||
|
|
}, null, 1);
|
|||
|
|
if (controlPanel.results && controlPanel.results.length > 0) {
|
|||
|
|
var props = controlPanel.results[0].properties || {};
|
|||
|
|
context.profile = {
|
|||
|
|
broadcast_id: notionService.extractRichText(props['广播编号']) || '',
|
|||
|
|
broadcast_title: notionService.extractRichText(props['广播标题']) || notionService.extractTitle(props) || '',
|
|||
|
|
current_ring: notionService.extractNumber(props['当前环节']) || 0,
|
|||
|
|
status: notionService.extractRichText(props['状态']) || notionService.extractSelect(props['状态']) || ''
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} catch (_) {}
|
|||
|
|
|
|||
|
|
// 获取 Agent 注册表计数
|
|||
|
|
try {
|
|||
|
|
if (dbConfig.agentRegistry) {
|
|||
|
|
var agents = await notionService.queryDB(dbConfig.agentRegistry, null, null, 100);
|
|||
|
|
context.agents_count = agents.results ? agents.results.length : 0;
|
|||
|
|
}
|
|||
|
|
} catch (_) {}
|
|||
|
|
|
|||
|
|
// 获取 SYSLOG 计数
|
|||
|
|
try {
|
|||
|
|
if (dbConfig.syslogInbox) {
|
|||
|
|
var syslogs = await notionService.queryDB(dbConfig.syslogInbox, {
|
|||
|
|
property: 'DEV编号',
|
|||
|
|
rich_text: { equals: devId }
|
|||
|
|
}, null, 100);
|
|||
|
|
context.syslogs_count = syslogs.results ? syslogs.results.length : 0;
|
|||
|
|
}
|
|||
|
|
} catch (_) {}
|
|||
|
|
|
|||
|
|
// 获取活跃工单计数
|
|||
|
|
try {
|
|||
|
|
if (dbConfig.ticketBook) {
|
|||
|
|
var tickets = await notionService.queryDB(dbConfig.ticketBook,
|
|||
|
|
{ property: '状态', select: { does_not_equal: '已完成' } }, null, 100);
|
|||
|
|
context.tickets_count = tickets.results ? tickets.results.length : 0;
|
|||
|
|
}
|
|||
|
|
} catch (_) {}
|
|||
|
|
|
|||
|
|
res.json(context);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
module.exports = router;
|