fix(analytics): 完善群成员分析失败时的错误边界处理与UI展示

This commit is contained in:
Leoluis0705
2026-03-25 19:15:12 +08:00
parent 3c0683b9f8
commit a46b52e603
2 changed files with 9 additions and 2 deletions

View File

@@ -1531,7 +1531,9 @@ class GroupAnalyticsService {
try {
while (true) {
const batch = await wcdbService.fetchMessageBatch(cursor)
if (!batch.success) break
if (!batch.success) {
return { success: false, error: batch.error || '获取分析数据失败' }
}
const rows = Array.isArray(batch.rows) ? batch.rows as Record<string, any>[] : []
if (rows.length === 0) break

View File

@@ -168,6 +168,7 @@ function GroupAnalyticsPage() {
const [isExportingMemberMessages, setIsExportingMemberMessages] = useState(false)
const [memberMessages, setMemberMessages] = useState<Message[]>([])
const [memberAnalyticsData, setMemberAnalyticsData] = useState<any | null>(null)
const [analyticsError, setAnalyticsError] = useState<string | null>(null)
const [memberMessagesHasMore, setMemberMessagesHasMore] = useState(false)
const [memberMessagesCursor, setMemberMessagesCursor] = useState(0)
const [memberMessagesLoadingMore, setMemberMessagesLoadingMore] = useState(false)
@@ -570,6 +571,7 @@ function GroupAnalyticsPage() {
}
case 'memberAnalytics': {
setMemberAnalyticsData(null)
setAnalyticsError(null)
updateBackgroundTask(taskId, {
detail: '正在读取成员列表与消息分析',
progressText: '成员分析'
@@ -611,6 +613,7 @@ function GroupAnalyticsPage() {
progressText: '已完成'
})
} else {
setAnalyticsError(analyticsResult.error || '分析失败')
finishBackgroundTask(taskId, 'failed', { detail: analyticsResult.error || '分析失败' })
}
break
@@ -1434,7 +1437,9 @@ function GroupAnalyticsPage() {
)}
</div>
</div>
{memberAnalyticsData ? (
{analyticsError ? (
<div className="member-message-empty">{analyticsError}</div>
) : memberAnalyticsData ? (
<div className="analytics-content-scrollable" style={{ padding: '0', display: 'flex', flexDirection: 'column', flex: 1, minHeight: 0, overflowY: 'auto' }}>
<div className="stats-overview">
<div className="stat-card">