mirror of
https://github.com/hicccc77/WeFlow.git
synced 2026-03-25 15:25:50 +00:00
fix(export): batch session stats and avoid stale empty cache
This commit is contained in:
@@ -623,29 +623,41 @@ function ExportPage() {
|
|||||||
const updates: Record<string, SessionMetrics> = {}
|
const updates: Record<string, SessionMetrics> = {}
|
||||||
for (const session of pending) {
|
for (const session of pending) {
|
||||||
loadingMetricsRef.current.add(session.username)
|
loadingMetricsRef.current.add(session.username)
|
||||||
updates[session.username] = {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const statsResult = await window.electronAPI.chat.getExportSessionStats(pending.map(session => session.username))
|
const batchSize = 80
|
||||||
if (statsResult.success && statsResult.data) {
|
for (let i = 0; i < pending.length; i += batchSize) {
|
||||||
for (const session of pending) {
|
const chunk = pending.slice(i, i + batchSize)
|
||||||
const raw = statsResult.data[session.username]
|
const ids = chunk.map(session => session.username)
|
||||||
if (!raw) continue
|
|
||||||
updates[session.username] = {
|
try {
|
||||||
totalMessages: raw.totalMessages,
|
const statsResult = await window.electronAPI.chat.getExportSessionStats(ids)
|
||||||
voiceMessages: raw.voiceMessages,
|
if (!statsResult.success || !statsResult.data) {
|
||||||
imageMessages: raw.imageMessages,
|
console.error('加载会话统计失败:', statsResult.error || '未知错误')
|
||||||
videoMessages: raw.videoMessages,
|
continue
|
||||||
emojiMessages: raw.emojiMessages,
|
|
||||||
privateMutualGroups: raw.privateMutualGroups,
|
|
||||||
groupMemberCount: raw.groupMemberCount,
|
|
||||||
groupMyMessages: raw.groupMyMessages,
|
|
||||||
groupActiveSpeakers: raw.groupActiveSpeakers,
|
|
||||||
groupMutualFriends: raw.groupMutualFriends,
|
|
||||||
firstTimestamp: raw.firstTimestamp,
|
|
||||||
lastTimestamp: raw.lastTimestamp
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const session of chunk) {
|
||||||
|
const raw = statsResult.data[session.username]
|
||||||
|
// 成功响应但无明细时按 0 回填,避免该行反复重试导致滚动抖动。
|
||||||
|
updates[session.username] = {
|
||||||
|
totalMessages: raw?.totalMessages ?? 0,
|
||||||
|
voiceMessages: raw?.voiceMessages ?? 0,
|
||||||
|
imageMessages: raw?.imageMessages ?? 0,
|
||||||
|
videoMessages: raw?.videoMessages ?? 0,
|
||||||
|
emojiMessages: raw?.emojiMessages ?? 0,
|
||||||
|
privateMutualGroups: raw?.privateMutualGroups,
|
||||||
|
groupMemberCount: raw?.groupMemberCount,
|
||||||
|
groupMyMessages: raw?.groupMyMessages,
|
||||||
|
groupActiveSpeakers: raw?.groupActiveSpeakers,
|
||||||
|
groupMutualFriends: raw?.groupMutualFriends,
|
||||||
|
firstTimestamp: raw?.firstTimestamp,
|
||||||
|
lastTimestamp: raw?.lastTimestamp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('加载会话统计分批失败:', error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user