diff --git a/apps/ai-game-creator-shell/src/components/error-report/ErrorReportNotice.tsx b/apps/ai-game-creator-shell/src/components/error-report/ErrorReportNotice.tsx index 0c83afdb2..c9bb8283f 100644 --- a/apps/ai-game-creator-shell/src/components/error-report/ErrorReportNotice.tsx +++ b/apps/ai-game-creator-shell/src/components/error-report/ErrorReportNotice.tsx @@ -16,15 +16,23 @@ export function ErrorReportNotice() { const loadEvents = useCallback(async (eventIds?: string[]) => { try { const events = await getPendingClientErrorEvents(); - if (!eventIds?.length) return; - const ids = new Set(eventIds); - setNotificationEvents(events.filter((event) => ids.has(event.eventId))); + if (eventIds?.length) { + const ids = new Set(eventIds); + setNotificationEvents(events.filter((event) => ids.has(event.eventId))); + } else { + setNotificationEvents( + events.filter((event) => event.notified === false), + ); + } } catch { // 通知失败不应打断 AGC 主流程。 } }, []); - useEffect(() => subscribeClientErrorEvents(loadEvents), [loadEvents]); + useEffect(() => { + void loadEvents(); + return subscribeClientErrorEvents(loadEvents); + }, [loadEvents]); const openReport = () => { setReportEvents(notificationEvents); diff --git a/apps/ai-game-creator-shell/src/services/errorReporting.ts b/apps/ai-game-creator-shell/src/services/errorReporting.ts index 89e778c3b..bc305b4f9 100644 --- a/apps/ai-game-creator-shell/src/services/errorReporting.ts +++ b/apps/ai-game-creator-shell/src/services/errorReporting.ts @@ -17,6 +17,7 @@ export type ClientErrorEvent = { stack?: string; occurredAt: string; count: number; + notified?: boolean; }; export type DiagnosticLogFile = { name: string; content: string }; @@ -181,7 +182,9 @@ export async function submitErrorReportBatch( schemaVersion: 1, submissionId: globalThis.crypto?.randomUUID?.() ?? `submission-${Date.now()}`, - events: payload.events, + events: payload.events.map( + ({ notified: _notified, ...event }) => event, + ), userDescription: payload.userDescription?.trim() || null, logs: payload.logs, }),