47 lines
1.4 KiB
JavaScript
47 lines
1.4 KiB
JavaScript
|
|
// scripts/update-memory.js
|
|||
|
|
// 用途:CI 完成后更新 memory.json 统计数据和事件日志
|
|||
|
|
|
|||
|
|
const fs = require('fs');
|
|||
|
|
const path = require('path');
|
|||
|
|
|
|||
|
|
const MEMORY_PATH = path.join(__dirname, '../.github/brain/memory.json');
|
|||
|
|
|
|||
|
|
const memory = JSON.parse(fs.readFileSync(MEMORY_PATH, 'utf8'));
|
|||
|
|
|
|||
|
|
const eventType = process.env.MEMORY_EVENT_TYPE || 'ci_run';
|
|||
|
|
const result = process.env.MEMORY_EVENT_RESULT || 'unknown';
|
|||
|
|
const prNumber = process.env.MEMORY_PR_NUMBER || null;
|
|||
|
|
const ref = process.env.GITHUB_REF || '';
|
|||
|
|
const actor = process.env.GITHUB_ACTOR || 'unknown';
|
|||
|
|
const runId = process.env.GITHUB_RUN_ID || null;
|
|||
|
|
|
|||
|
|
const event = {
|
|||
|
|
timestamp: new Date().toISOString(),
|
|||
|
|
type: eventType,
|
|||
|
|
result,
|
|||
|
|
actor,
|
|||
|
|
ref,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
if (prNumber) event.pr_number = prNumber;
|
|||
|
|
if (runId) event.run_id = runId;
|
|||
|
|
|
|||
|
|
// 更新计数器
|
|||
|
|
if (eventType === 'ci_run') {
|
|||
|
|
memory.stats.ci_runs = (memory.stats.ci_runs || 0) + 1;
|
|||
|
|
} else if (eventType === 'pr_review') {
|
|||
|
|
memory.stats.pr_reviews = (memory.stats.pr_reviews || 0) + 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 保留最近 100 条事件
|
|||
|
|
memory.events.push(event);
|
|||
|
|
if (memory.events.length > 100) {
|
|||
|
|
memory.events = memory.events.slice(-100);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memory.last_updated = new Date().toISOString();
|
|||
|
|
|
|||
|
|
fs.writeFileSync(MEMORY_PATH, JSON.stringify(memory, null, 2) + '\n', 'utf8');
|
|||
|
|
|
|||
|
|
console.log(`✅ memory.json 已更新 · 事件: ${eventType}(${result}) · CI总次数: ${memory.stats.ci_runs} · PR审核次数: ${memory.stats.pr_reviews}`);
|