fix:修复相关问题,新增留言查看

This commit is contained in:
Daniel
2026-03-06 11:41:09 +08:00
parent cbac58af62
commit 97b04b6ccc
10 changed files with 252 additions and 12 deletions

View File

@@ -55,12 +55,14 @@ wss.on('connection', (ws) => {
ws.send(JSON.stringify({ type: 'situation', data: getSituation(), stats: getStats() }))
})
// 仅用 situation.updated_at + situation_update 条数做“版本”,避免无变更时重复查库和推送
// 版本含 situationsituation_update、key_location 基地态势,任一变化都会触发广播,保证爬虫 AI 更新基地后前端实时刷新
function getBroadcastVersion() {
try {
const meta = db.prepare('SELECT updated_at FROM situation WHERE id = 1').get()
const row = db.prepare('SELECT COUNT(*) as c FROM situation_update').get()
return `${meta?.updated_at || ''}_${row?.c ?? 0}`
const usAtt = db.prepare("SELECT COUNT(*) as c FROM key_location WHERE side='us' AND status='attacked'").get()
const irAtt = db.prepare("SELECT COUNT(*) as c FROM key_location WHERE side='iran' AND status='attacked'").get()
return `${meta?.updated_at || ''}_${row?.c ?? 0}_b${usAtt?.c ?? 0}_${irAtt?.c ?? 0}`
} catch (_) {
return ''
}
@@ -92,15 +94,17 @@ if (BROADCAST_INTERVAL_MS > 0) {
setInterval(() => broadcastSituation(false), BROADCAST_INTERVAL_MS)
}
// 供爬虫调用:先从磁盘重载 DB纳入爬虫写入再更新 situation.updated_at 并立即广播;前端据此显示「实时更新」时间
// 供爬虫调用:先从磁盘重载 DB纳入爬虫写入再更新 situation.updated_at 并立即广播;前端据此实时更新基地态势等
function notifyCrawlerUpdate() {
try {
const db = require('./db')
db.reloadFromFile()
db.prepare("INSERT OR REPLACE INTO situation (id, data, updated_at) VALUES (1, '{}', ?)").run(new Date().toISOString())
broadcastSituation()
broadcastSituation(true) // 强制推送,确保基地数/被袭数等随 AI 清洗实时更新
const n = db.prepare('SELECT COUNT(*) as c FROM situation_update').get().c
console.log('[crawler/notify] DB 已重载并广播situation_update 条数:', n)
const usB = db.prepare("SELECT COUNT(*) as c FROM key_location WHERE side='us'").get().c
const irB = db.prepare("SELECT COUNT(*) as c FROM key_location WHERE side='iran'").get().c
console.log('[crawler/notify] DB 已重载并广播situation_update:', n, '基地 us/iran:', usB, irB)
} catch (e) {
console.error('[crawler/notify]', e?.message || e)
}