fix: 优化数据
This commit is contained in:
@@ -58,18 +58,23 @@ function getSituation() {
|
||||
if (statsRow) conflictStats = statsRow
|
||||
} catch (_) {}
|
||||
|
||||
// 根据爬虫 conflict_stats 实时合并平民伤亡估算(GDELT 数据)
|
||||
// 平民伤亡:合计显示,不区分阵营
|
||||
const civUsK = lossesUs?.civilian_killed ?? 0
|
||||
const civUsW = lossesUs?.civilian_wounded ?? 0
|
||||
const civIrK = lossesIr?.civilian_killed ?? 0
|
||||
const civIrW = lossesIr?.civilian_wounded ?? 0
|
||||
const dbKilled = civUsK + civIrK
|
||||
const dbWounded = civUsW + civIrW
|
||||
const est = conflictStats.estimated_casualties || 0
|
||||
const civilianCasualtiesTotal = {
|
||||
killed: est > 0 ? Math.max(dbKilled, est) : dbKilled,
|
||||
wounded: dbWounded,
|
||||
}
|
||||
|
||||
const usLossesBase = lossesUs ? toLosses(lossesUs) : defaultLosses
|
||||
const irLossesBase = lossesIr ? toLosses(lossesIr) : defaultLosses
|
||||
const est = conflictStats.estimated_casualties || 0
|
||||
const mergeCivilian = (base, share) => {
|
||||
if (est <= 0) return base.civilianCasualties || { killed: 0, wounded: 0 }
|
||||
const gdeltKilled = Math.round(est * share)
|
||||
const cur = base.civilianCasualties || { killed: 0, wounded: 0 }
|
||||
return { killed: Math.max(cur.killed, gdeltKilled), wounded: cur.wounded }
|
||||
}
|
||||
const usLosses = { ...usLossesBase, civilianCasualties: mergeCivilian(usLossesBase, 0.35) }
|
||||
const irLosses = { ...irLossesBase, civilianCasualties: mergeCivilian(irLossesBase, 0.65) }
|
||||
const usLosses = { ...usLossesBase, civilianCasualties: { killed: 0, wounded: 0 } }
|
||||
const irLosses = { ...irLossesBase, civilianCasualties: { killed: 0, wounded: 0 } }
|
||||
|
||||
return {
|
||||
lastUpdated: meta?.updated_at || new Date().toISOString(),
|
||||
@@ -135,6 +140,7 @@ function getSituation() {
|
||||
url: e.url,
|
||||
})),
|
||||
conflictStats,
|
||||
civilianCasualtiesTotal,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user