From c23e2c4a926e008a683a6801a45866e0db799c77 Mon Sep 17 00:00:00 2001 From: kdletters <61648117+kdletters@users.noreply.github.com> Date: Tue, 6 Oct 2026 00:14:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E6=94=B6=E6=95=9B=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=8A=A5=E5=91=8A=E8=AF=BB=E5=8F=96=E6=AD=A3=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 保留错误事件与诊断日志读取失败的具体原因 保留快照回退并更新错误报告回归测试 --- .../components/error-report/ErrorReportDialog.tsx | 13 ++++++++++--- .../tests/ErrorReportDialog.test.tsx | 10 ++++++---- .../【里程碑】AGC错误具体文本展示-2026-10-04.md | 1 + 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/apps/ai-game-creator-shell/src/components/error-report/ErrorReportDialog.tsx b/apps/ai-game-creator-shell/src/components/error-report/ErrorReportDialog.tsx index 74bd413a2..c5af5f345 100644 --- a/apps/ai-game-creator-shell/src/components/error-report/ErrorReportDialog.tsx +++ b/apps/ai-game-creator-shell/src/components/error-report/ErrorReportDialog.tsx @@ -68,19 +68,21 @@ export function ErrorReportDialog({ ); setEventsReady(true); }) - .catch(() => { + .catch((error) => { if (disposed) return; + const detail = visibleClientErrorMessage(error); if (fallbackEvents.length) { setEvents(fallbackEvents); setSelectedFingerprints( new Set(fallbackEvents.map((event) => event.fingerprint)), ); setEventsReady(true); - setStatus('最新错误读取失败,已使用打开通知时的快照'); + setStatus(`最新错误读取失败:${detail};已使用打开通知时的快照`); return; } setEventsError(true); setEventsReady(true); + setStatus(`错误事件读取失败:${detail}`); }); void readApplicationDiagnosticLogs() .then((nextLogs) => { @@ -88,11 +90,16 @@ export function ErrorReportDialog({ setLogs(nextLogs); setLogsReady(true); }) - .catch(() => { + .catch((error) => { if (disposed) return; setLogs([]); setLogsError(true); setLogsReady(true); + setStatus((current) => + current + ? `${current};应用诊断日志读取失败:${visibleClientErrorMessage(error)}` + : `应用诊断日志读取失败:${visibleClientErrorMessage(error)}`, + ); }); return () => { disposed = true; diff --git a/apps/ai-game-creator-shell/tests/ErrorReportDialog.test.tsx b/apps/ai-game-creator-shell/tests/ErrorReportDialog.test.tsx index 25776761c..9ae4fd65a 100644 --- a/apps/ai-game-creator-shell/tests/ErrorReportDialog.test.tsx +++ b/apps/ai-game-creator-shell/tests/ErrorReportDialog.test.tsx @@ -14,6 +14,8 @@ vi.mock('../src/services/errorReporting', () => ({ getPendingClientErrorEvents: mockState.getPending, readApplicationDiagnosticLogs: mockState.readLogs, submitErrorReportBatch: vi.fn(), + visibleClientErrorMessage: (error: unknown) => + error instanceof Error ? error.message : String(error), })); vi.mock('../src/components/modal/ThemedModal', () => ({ @@ -58,9 +60,7 @@ describe('ErrorReportDialog', () => { render(); - expect( - await screen.findByText('错误事件暂不可用,请关闭后重试。'), - ).toBeTruthy(); + expect(await screen.findByText('错误事件读取失败:读取失败')).toBeTruthy(); expect(screen.queryByText('当前没有待报告的错误。')).toBeNull(); }); @@ -74,7 +74,9 @@ describe('ErrorReportDialog', () => { expect(await screen.findByText(event.message)).toBeTruthy(); expect( - screen.getByText('最新错误读取失败,已使用打开通知时的快照'), + screen.getByText( + '最新错误读取失败:瞬时读取失败;已使用打开通知时的快照', + ), ).toBeTruthy(); }); }); diff --git a/docs/project-memory/plans/【里程碑】AGC错误具体文本展示-2026-10-04.md b/docs/project-memory/plans/【里程碑】AGC错误具体文本展示-2026-10-04.md index ddf2a199a..fcf0aa387 100644 --- a/docs/project-memory/plans/【里程碑】AGC错误具体文本展示-2026-10-04.md +++ b/docs/project-memory/plans/【里程碑】AGC错误具体文本展示-2026-10-04.md @@ -81,3 +81,4 @@ DirectProject 回合失败在确认不是客户端内部不可归类故障时, - 策划 Agent 的 Tauri 事件订阅失败原先只放行回合等待、没有任何用户提示;现把订阅 IPC 正文写入项目聊天错误出口,避免只收到不完整的最终态。 - 专业 Agent 历史回读与项目清单同步的后台 Promise 失败原先只返回 `failed` 或静默结束;现把具体读取/同步正文写入项目聊天错误出口。 - Direct 交付计划/合同 JSON 解析、策划工作区目录枚举与文本搜索还有 `map_err(|_|)` / `Err(_)` 丢细节;现保留 serde、目录和文件读取正文,安全路径边界仍单独拒绝。 +- 错误报告对话框读取最新错误事件或诊断日志失败时原先只显示“暂不可用/使用快照”;现把读取 IPC/文件正文附在状态提示中,快照回退行为保持不变。