From 6d1c3e02eb1b5456d274e0e7cafec3b3051ea353 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Mar 2026 17:17:14 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20address=20code=20review=20=E2=80=94=20en?= =?UTF-8?q?v=20var=20for=20GitHub=20repo,=20date=20dedup=20in=20receive-sy?= =?UTF-8?q?slog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com> --- backend/routes/feishu-bot.js | 4 ++-- scripts/receive-syslog.js | 16 +++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/backend/routes/feishu-bot.js b/backend/routes/feishu-bot.js index 3c61fdeb..b173dcbc 100644 --- a/backend/routes/feishu-bot.js +++ b/backend/routes/feishu-bot.js @@ -23,8 +23,8 @@ const FEISHU_APP_SECRET = process.env.FEISHU_APP_SECRET; const GITHUB_TOKEN = process.env.GITHUB_TOKEN; const VERIFICATION_TOKEN = process.env.FEISHU_VERIFICATION_TOKEN; -const GITHUB_REPO_OWNER = 'qinfendebingshuo'; -const GITHUB_REPO_NAME = 'guanghulab'; +const GITHUB_REPO_OWNER = process.env.GITHUB_REPO_OWNER || 'qinfendebingshuo'; +const GITHUB_REPO_NAME = process.env.GITHUB_REPO_NAME || 'guanghulab'; const VALID_PROTOCOL_VERSIONS = ['4.0', 'v4.0', '4.0.0']; diff --git a/scripts/receive-syslog.js b/scripts/receive-syslog.js index 8764ba6e..95e5b87e 100644 --- a/scripts/receive-syslog.js +++ b/scripts/receive-syslog.js @@ -129,25 +129,24 @@ function saveSyslogToFile(syslog) { fs.mkdirSync(SYSLOG_DIR, { recursive: true }); } - const dateStr = new Date().toISOString().split('T')[0]; const broadcastId = syslog.broadcast_id || syslog.broadcastId || 'UNKNOWN'; const devId = syslog.dev_id || syslog.developer_id || 'UNKNOWN'; + const dateStr = syslog.date || syslog.timestamp || new Date().toISOString().split('T')[0]; const filename = dateStr + '_' + broadcastId + '_' + devId + '.json'; const filepath = path.join(SYSLOG_DIR, filename); fs.writeFileSync(filepath, JSON.stringify(syslog, null, 2), 'utf8'); console.log(' → 已保存: syslog/' + filename); - return filepath; + return { filepath, dateStr, broadcastId, devId }; } // ══════════════════════════════════════════════════════════ // 步骤 ②:创建 Notion SYSLOG 收件箱条目 // ══════════════════════════════════════════════════════════ -async function createSyslogEntry(syslog, token, dbId) { +async function createSyslogEntry(syslog, token, dbId, dateStr) { const broadcastId = syslog.broadcast_id || syslog.broadcastId || 'UNKNOWN'; const devId = syslog.dev_id || syslog.developer_id || 'UNKNOWN'; - const dateStr = new Date().toISOString().split('T')[0]; const properties = { '标题': titleProp('SYSLOG · ' + broadcastId + ' · ' + devId), @@ -186,10 +185,9 @@ async function createSyslogEntry(syslog, token, dbId) { // 步骤 ③:创建霜砚工单 // ══════════════════════════════════════════════════════════ -async function createTicket(syslog, token, dbId) { +async function createTicket(syslog, token, dbId, dateStr) { const broadcastId = syslog.broadcast_id || syslog.broadcastId || 'UNKNOWN'; const devId = syslog.dev_id || syslog.developer_id || 'UNKNOWN'; - const dateStr = new Date().toISOString().split('T')[0]; const properties = { '标题': titleProp('SYSLOG 回传|' + broadcastId + ' · ' + devId), @@ -270,12 +268,12 @@ async function main() { // 步骤①:存入仓库 console.log('💾 步骤①: 存入仓库 syslog/ 目录...'); - saveSyslogToFile(syslog); + const { dateStr } = saveSyslogToFile(syslog); // 步骤②:创建 Notion SYSLOG 收件箱条目 if (notionToken && syslogDbId) { console.log('📝 步骤②: 创建 Notion SYSLOG 收件箱条目...'); - await createSyslogEntry(syslog, notionToken, syslogDbId); + await createSyslogEntry(syslog, notionToken, syslogDbId, dateStr); } else { console.log('⚠️ 步骤②: 缺少 NOTION_TOKEN 或 NOTION_SYSLOG_DB_ID,跳过 Notion 收件箱'); } @@ -283,7 +281,7 @@ async function main() { // 步骤③:创建霜砚工单 if (notionToken && ticketDbId) { console.log('📋 步骤③: 创建霜砚工单...'); - await createTicket(syslog, notionToken, ticketDbId); + await createTicket(syslog, notionToken, ticketDbId, dateStr); } else { console.log('⚠️ 步骤③: 缺少 NOTION_TOKEN 或 NOTION_TICKET_DB_ID,跳过工单创建'); }