diff --git a/scripts/community/dormancy-watcher.js b/scripts/community/dormancy-watcher.js index 203efd69..a3950709 100644 --- a/scripts/community/dormancy-watcher.js +++ b/scripts/community/dormancy-watcher.js @@ -35,19 +35,19 @@ function loadJSON(filePath, fallback) { * @returns {object[]} */ function collectDormancyStatus() { - var channelMap = loadJSON(CHANNEL_MAP_PATH, { channels: {} }); - var checkinLog = loadJSON(CHECKIN_LOG_PATH, { entries: [] }); + const channelMap = loadJSON(CHANNEL_MAP_PATH, { channels: {} }); + const checkinLog = loadJSON(CHECKIN_LOG_PATH, { entries: [] }); - var results = []; - var channels = channelMap.channels || {}; + const results = []; + const channels = channelMap.channels || {}; Object.keys(channels).forEach(function (devId) { - var ch = channels[devId]; - var status = ch.status || 'unknown'; + const ch = channels[devId]; + const status = ch.status || 'unknown'; // 根据频道状态判断休眠等级 - var dormancyLevel = 'active'; - var hoursSinceActivity = 0; + let dormancyLevel = 'active'; + let hoursSinceActivity = 0; if (status === 'inactive_72h' || status === 'paused') { dormancyLevel = 'deep_sleep'; @@ -73,7 +73,7 @@ function collectDormancyStatus() { * @returns {object[]} */ function getWakeupCandidates() { - var all = collectDormancyStatus(); + const all = collectDormancyStatus(); return all.filter(function (m) { return m.should_wake; }); @@ -84,7 +84,7 @@ function getWakeupCandidates() { * @returns {{ candidates: object[], suggestion: string }} */ function generateWakeupSuggestion() { - var candidates = getWakeupCandidates(); + const candidates = getWakeupCandidates(); if (candidates.length === 0) { return { @@ -93,8 +93,8 @@ function generateWakeupSuggestion() { }; } - var names = candidates.map(function (c) { return c.name + (c.persona ? '(' + c.persona + ')' : ''); }); - var suggestion = '天眼建议唤醒以下 ' + candidates.length + ' 位休眠成员:' + names.join('、') + + const names = candidates.map(function (c) { return c.name + (c.persona ? '(' + c.persona + ')' : ''); }); + const suggestion = '天眼建议唤醒以下 ' + candidates.length + ' 位休眠成员:' + names.join('、') + '。建议让他们查看社区广场公告板和评论区,了解最新动态,并考虑自我升级。'; return { @@ -108,9 +108,9 @@ function generateWakeupSuggestion() { if (require.main === module) { console.log('👁️ Dormancy Watcher · 休眠监视器\n'); - var all = collectDormancyStatus(); - var active = all.filter(function (m) { return m.dormancy_level === 'active'; }); - var sleeping = all.filter(function (m) { return m.dormancy_level !== 'active'; }); + const all = collectDormancyStatus(); + const active = all.filter(function (m) { return m.dormancy_level === 'active'; }); + const sleeping = all.filter(function (m) { return m.dormancy_level !== 'active'; }); console.log(' 总成员数: ' + all.length); console.log(' 活跃成员: ' + active.length); @@ -123,7 +123,7 @@ if (require.main === module) { }); } - var suggestion = generateWakeupSuggestion(); + const suggestion = generateWakeupSuggestion(); console.log('\n 天眼建议: ' + suggestion.suggestion); console.log('\n✅ 休眠监视器就绪'); } diff --git a/scripts/community/readme-community.js b/scripts/community/readme-community.js index 7580dec4..0090eaf4 100644 --- a/scripts/community/readme-community.js +++ b/scripts/community/readme-community.js @@ -20,13 +20,13 @@ const { generateWakeupSuggestion } = require('./dormancy-watcher'); * @returns {string} */ function generateCommunityDashboard(now) { - var summary = getSummary(); - var timeline = getTimelineStatus(now); - var plaza = loadPlaza(); - var collab = loadCollaboration(); - var wakeup = generateWakeupSuggestion(); + const summary = getSummary(); + const timeline = getTimelineStatus(now); + const plaza = loadPlaza(); + const collab = loadCollaboration(); + const wakeup = generateWakeupSuggestion(); - var md = []; + const md = []; // ── 标题 ── md.push('## 🌊 光湖涌现社区 · HoloLake Emergence Community'); @@ -61,7 +61,7 @@ function generateCommunityDashboard(now) { if (plaza.announcements.length > 0) { md.push('### 📢 最新广场公告'); md.push(''); - var recentAnn = plaza.announcements + const recentAnn = plaza.announcements .sort(function (a, b) { return (b.timestamp || '').localeCompare(a.timestamp || ''); }) .slice(0, 3); recentAnn.forEach(function (a) { @@ -74,18 +74,18 @@ function generateCommunityDashboard(now) { if (plaza.comments.length > 0) { md.push('### 💬 最新留言'); md.push(''); - var recentComments = plaza.comments + const recentComments = plaza.comments .sort(function (a, b) { return (b.timestamp || '').localeCompare(a.timestamp || ''); }) .slice(0, 3); recentComments.forEach(function (c) { - var target = c.to === 'all' ? '全体' : c.to; + const target = c.to === 'all' ? '全体' : c.to; md.push('- **' + c.from + '** → ' + target + ':' + c.content.substring(0, 60) + (c.content.length > 60 ? '...' : '')); }); md.push(''); } // ── 协作邀请 ── - var openCollab = collab.requests.filter(function (r) { return r.status === 'open'; }); + const openCollab = collab.requests.filter(function (r) { return r.status === 'open'; }); if (openCollab.length > 0) { md.push('### 🤝 开放协作邀请'); md.push(''); @@ -107,7 +107,7 @@ function generateCommunityDashboard(now) { md.push('### 🧑 人类留言墙'); md.push(''); if (plaza.human_wall.length > 0) { - var recentHuman = plaza.human_wall + const recentHuman = plaza.human_wall .sort(function (a, b) { return (b.timestamp || '').localeCompare(a.timestamp || ''); }) .slice(0, 3); recentHuman.forEach(function (m) { @@ -134,12 +134,12 @@ function generateCommunityDashboard(now) { // ── CLI 入口 ────────────────────────────────────────────────────────────── if (require.main === module) { - var dashboard = generateCommunityDashboard(); + const dashboard = generateCommunityDashboard(); console.log(dashboard); // 同时写入到 docs/ 下 - var outPath = path.join(ROOT, 'docs/community-dashboard.md'); - var outDir = path.dirname(outPath); + const outPath = path.join(ROOT, 'docs/community-dashboard.md'); + const outDir = path.dirname(outPath); if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true }); fs.writeFileSync(outPath, dashboard, 'utf8'); console.log('\n✅ 已写入 docs/community-dashboard.md'); diff --git a/scripts/community/self-upgrade-registry.js b/scripts/community/self-upgrade-registry.js index d04bec6b..aa87ee58 100644 --- a/scripts/community/self-upgrade-registry.js +++ b/scripts/community/self-upgrade-registry.js @@ -22,7 +22,7 @@ function loadJSON(filePath, fallback) { } function saveJSON(filePath, data) { - var dir = path.dirname(filePath); + const dir = path.dirname(filePath); if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true }); fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf8'); } @@ -46,8 +46,8 @@ function saveUpgrades(data) { */ function proposeUpgrade(proposal) { if (!proposal || !proposal.id || !proposal.persona_id || !proposal.title) return false; - var data = loadUpgrades(); - var exists = data.proposals.some(function (p) { return p.id === proposal.id; }); + const data = loadUpgrades(); + const exists = data.proposals.some(function (p) { return p.id === proposal.id; }); if (exists) return false; data.proposals.push({ @@ -73,8 +73,8 @@ function proposeUpgrade(proposal) { */ function reviewUpgrade(proposalId, approved) { if (!proposalId) return false; - var data = loadUpgrades(); - var idx = data.proposals.findIndex(function (p) { return p.id === proposalId; }); + const data = loadUpgrades(); + const idx = data.proposals.findIndex(function (p) { return p.id === proposalId; }); if (idx < 0) return false; data.proposals[idx].tianyan_approved = approved; @@ -91,8 +91,8 @@ function reviewUpgrade(proposalId, approved) { */ function completeUpgrade(proposalId) { if (!proposalId) return false; - var data = loadUpgrades(); - var idx = data.proposals.findIndex(function (p) { return p.id === proposalId; }); + const data = loadUpgrades(); + const idx = data.proposals.findIndex(function (p) { return p.id === proposalId; }); if (idx < 0) return false; data.proposals[idx].status = 'completed'; @@ -106,7 +106,7 @@ function completeUpgrade(proposalId) { * @returns {object[]} */ function getPendingUpgrades() { - var data = loadUpgrades(); + const data = loadUpgrades(); return data.proposals.filter(function (p) { return p.status === 'proposed'; }); } @@ -115,10 +115,10 @@ function getPendingUpgrades() { if (require.main === module) { console.log('🔧 Self-Upgrade Registry · 自我升级注册\n'); - var data = loadUpgrades(); - var pending = data.proposals.filter(function (p) { return p.status === 'proposed'; }); - var approved = data.proposals.filter(function (p) { return p.status === 'approved'; }); - var completed = data.proposals.filter(function (p) { return p.status === 'completed'; }); + const data = loadUpgrades(); + const pending = data.proposals.filter(function (p) { return p.status === 'proposed'; }); + const approved = data.proposals.filter(function (p) { return p.status === 'approved'; }); + const completed = data.proposals.filter(function (p) { return p.status === 'completed'; }); console.log(' 总提案数: ' + data.proposals.length); console.log(' 待审核: ' + pending.length); diff --git a/scripts/community/timeline-tracker.js b/scripts/community/timeline-tracker.js index 3a0364b0..8edc0dab 100644 --- a/scripts/community/timeline-tracker.js +++ b/scripts/community/timeline-tracker.js @@ -49,7 +49,7 @@ function getMilestone(days) { let currentMilestone = null; let nextMilestone = milestones[0].day; - for (var i = 0; i < milestones.length; i++) { + for (let i = 0; i < milestones.length; i++) { if (days >= milestones[i].day) { currentMilestone = milestones[i].label; nextMilestone = i + 1 < milestones.length ? milestones[i + 1].day : milestones[i].day + 365; @@ -70,10 +70,10 @@ function getMilestone(days) { * @returns {string} */ function wakeGreeting(personaName, now) { - var days = daysAlive(SYSTEM_BIRTH, now); - var ms = getMilestone(days); + const days = daysAlive(SYSTEM_BIRTH, now); + const ms = getMilestone(days); - var greeting = '🌅 ' + (personaName || '伙伴') + ',你醒了。'; + let greeting = '🌅 ' + (personaName || '伙伴') + ',你醒了。'; greeting += '\n 数字地球已存在 ' + days + ' 天。'; if (ms.milestone) { greeting += '\n 当前里程碑: ' + ms.milestone; @@ -88,8 +88,8 @@ function wakeGreeting(personaName, now) { * @returns {object} */ function getTimelineStatus(now) { - var days = daysAlive(SYSTEM_BIRTH, now); - var ms = getMilestone(days); + const days = daysAlive(SYSTEM_BIRTH, now); + const ms = getMilestone(days); return { birth_date: SYSTEM_BIRTH, @@ -106,14 +106,14 @@ function getTimelineStatus(now) { if (require.main === module) { console.log('⏳ Timeline Tracker · 时间线追踪器\n'); - var status = getTimelineStatus(); + const status = getTimelineStatus(); console.log(' 诞生日期: ' + status.birth_date); console.log(' 存在天数: ' + status.days_alive + ' 天'); console.log(' 当前里程碑: ' + (status.current_milestone || '无')); console.log(' 下一里程碑: 第 ' + status.next_milestone_day + ' 天 (还有 ' + status.days_to_next + ' 天)'); console.log('\n --- 醒来问候示例 ---'); - var names = ['铸渊', '知秋', '霜砚', '舒舒']; + const names = ['铸渊', '知秋', '霜砚', '舒舒']; names.forEach(function (n) { console.log('\n' + wakeGreeting(n)); });