已开启
feat(web): copy error diagnostics and submit issue from error surfaces(Issue #101) #142
feat(web): copy error diagnostics and submit issue from error surfaces(Issue #101) #142
已开启
hugoxk创建于 10 天前
hugoxk
10 天前

What type of PR is this?
/kind feature

What does this PR do / why do we need it:

为报错表面(错误 Toast、内联警示、面板 Error Boundary)增加「复制关键日志」和「提交 Issue」两个操作入口,让用户能一键收集诊断信息并向仓库提 Bug,无需手动翻数据目录日志。

  • apps/web/src/diagnostics.ts:新诊断工具模块,组装纯前端快照(产品名、平台、语言、时间戳、错误标题与正文)。不含 token / API Key / 用户提示词 / 工具载荷。
  • 三个报错表面均增加「复制诊断信息」(走已有 CopyButton 组件写入剪贴板)和「提交 Issue」(打开 GitCode 新建 Issue 页,预填标题与诊断正文,仍由用户手动创建)。
  • EN / ZH i18n key 同步补齐。

Which issue(s) this PR fixes:

Fixes #101

Test Plan and Test result(测试场景、验证结果(功能、性能、可靠性等)):

验证提交:8536e0a(6 files, +99/-4)

  • Web typecheck:tsc --noEmit 通过,0 错误
  • Web 单元测试:786 passed / 0 failed / 0 skipped
  • Share diagnostics module(diagnostics.ts)纯函数,无外部依赖
  • 修改范围限定前端错误展示层,不涉及后端/沙箱/运行链路

Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入)

likedislike
合并受阻
Hhugoxk
10 天前 关联了issue:[Feature]: 报错时支持复制关键日志并提交 Issue
atomgit-bot
atomgit-bot
10 天前 评论:

变更摘要

本 PR 为前端报错表面增加一键诊断与提 Bug 能力:新增纯前端诊断模块 apps/web/src/diagnostics.ts,提供 buildErrorDiagnostic 组装含产品名、平台、语言、时间戳、错误标题与正文的诊断快照,并通过 redactSecrets 对 Bearer、api_key、token、secret、password、authorization/set-cookie 等敏感信息做 [REDACTED] 脱敏;同时提供 buildIssueUrl 生成预填标题与正文的 GitCode 新建 Issue 链接。错误 Toast(Toasts.tsx)、内联警示(InlineErrorAlert.tsx)和面板 Error Boundary(ErrorBoundary.tsx)三处均接入「复制诊断信息」(复用 CopyButton)与「提交 Issue」(打开 ExternalIcon 外链)两个操作入口,并同步补齐 EN/ZH i18n key 与样式。

主要改动

  • 新增诊断工具模块: apps/web/src/diagnostics.ts 导出 buildErrorDiagnostic 与 buildIssueUrl,诊断正文包含产品、平台、语言、时间与错误详情,且对常见密钥模式做脱敏后拼接为 Markdown 文本。
  • 三处报错表面接入操作入口: ErrorBoundary.tsx、InlineErrorAlert.tsx、Toasts.tsx 分别在错误区域渲染 CopyButton 复制诊断信息与 .error-issue-link 外链跳转 GitCode 新建 Issue,Toast 仅在 tone === "error" 时显示。
  • i18n 文案补齐: apps/web/src/i18n/messages.ts 新增 error.diagnostics.copy 与 error.diagnostics.submitIssue 两个 key,中英文分别为「复制诊断信息 / 提交 Issue」。
  • 新增诊断样式: apps/web/src/styles/feedback.css 增加 .inline-error-actions、.toast-error-actions、.error-issue-link 等布局与配色规则,适配内联警示与 Toast 两种错误表面。
  • 新增单元测试: apps/web/tests/diagnostics.test.tsx 覆盖诊断字段生成、密钥脱敏与 buildIssueUrl 的标题/正文编码。
likedislike
不准确?
atomgit-bot
atomgit-bot
10 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
openJiuwen-bot成员
10 天前 评论:

欢迎来到 openJiuwen 社区

Hey @hugoxk , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

likedislike
OopenJiuwen-bot成员
10 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
10 天前 评论:

The pipeline(pipeline number:142) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
10 天前 添加了label:ci-running
wang_cheng_zhao成员
10 天前 评论:

AI 自动检视,仅供参考,问题都需要人工评估分析.

变更摘要

相对 origin/main 1 个 commit、6 个文件:新增 diagnostics.ts,在错误 Toast、InlineErrorAlert、面板 ErrorBoundary 上加「复制诊断信息 / 提交 Issue」。快照只拼产品名、平台/UA、语言、时间、错误标题与正文,并附脱敏提醒;Issue 链接用 URLSearchParams 拼到 GitCode 新建页,无自动上报。EN/ZH 文案键已补。

做法是否合理

方向对:共享模块避免三处各写一份,CopyButton 的 getText 延迟求值也合适。敏感面控制得住——没有把 token / API key / prompt / tool payload 写进快照;buildIssueUrl 走 query 编码,不会把正文直接拼进 href 造成注入。Toast / Inline 两处已接 i18n。

问题

  1. ErrorBoundary 文案未走 i18n。 Toast / InlineErrorAlert 用了 t("error.diagnostics.copy|submitIssue"),但 ErrorBoundary 仍写死英文 "Copy diagnostics" / "Submit issue"(链接可见文字 + title)。类组件不能 useLocale,但仓里已有 translateActive(locale.ts 注释就是给非 hook 场景用的)。中文界面下面板挂掉时这两颗按钮会露英文,和另外两处错误面不一致,建议改掉再合。

  2. diagnostics.ts 缺单测。 buildErrorDiagnostic / buildIssueUrl 是纯函数,适合锁住「字段集合不含密钥类信息」和 query 编码行为;现有 Toasts.test.tsx / InlineErrorAlert.test.tsx 也未断言新动作是否出现。PR 描述里的「786 通过」更像是存量全绿,不是本模块增量覆盖。建议补一组轻量 node:test。

次要(不挡合入,提一下即可):InlineErrorAlert 建 Issue 标题用 title ?? "Settings"(写死英文),诊断正文却用 t("error.settingsTitle"),两处默认值不一致;GitCode 新建页是否真吃 title/body query 建议手动点一次确认(复制诊断路径不受影响)。

结论:条件合(先修 ErrorBoundary i18n;单测建议同 PR 带上)。

likedislike
openJiuwen-bot成员
10 天前 评论:

✅ 流水线 32427a2e5369412581dc12e0d16e8e68 执行成功。

可在 https://gitcode.com/openJiuwen/sciencediscovery/pull/142/check 查看完整构建日志。

在 PR 评论中发送 rerun 可重新触发 CI 流水线。

任务名称子任务状态详情
代码检查SCA(开源合规)PASSED点此跳转
Anti-poison(防投毒)PASSED点此跳转
CodeCheck(静态检查)PASSED点此跳转
Blacklist(禁用词)PASSED点此跳转
UThost tierPASSED公开日志
guest tier (QEMU TCG sandbox)PASSED公开日志
ST-PASSED公开日志
Binaryx86_64 debug packagePASSEDbinary · SHA256SUMS
aarch64 debug packagePASSEDbinary · SHA256SUMS
likedislike
OopenJiuwen-bot成员
10 天前 添加了label:ci-successful
OopenJiuwen-bot成员
10 天前 删除了label:ci-running
Hhugoxk
10 天前 审查状态已重置,审查人: hong-ye-zhou,yi-zhang95,wang_cheng_zhao
Hhugoxk
10 天前 强制推送  1 个提交:e517d127-feat(web): copy error diagnostics and submit issue from error surfaces
OopenJiuwen-bot成员
10 天前 删除了label:ci-successful
OopenJiuwen-bot成员
10 天前 删除了label:openJiuwen-cla/yes
openJiuwen-bot成员
10 天前 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): ci-successful.

likedislike
OopenJiuwen-bot成员
10 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
10 天前 评论:

The pipeline(pipeline number:142) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
10 天前 添加了label:ci-running
wang_cheng_zhao成员
10 天前 评论:

上一轮检视:https://gitcode.com/openJiuwen/sciencediscovery/pull/142?ref=&did=fb8454be3df7e0fee7be08eb1ba387883f0ebe44#tid-190455748

AI 自动检视,仅供参考,问题都需要人工评估分析.

本轮相对上一轮 HEAD 8536e0a → e517d12(仍是相对 origin/main 的 1 个 commit,force-update),主要补上了上一轮条件合里点到的两处:

  • ErrorBoundary i18n:Copy diagnostics / Submit issue 改为 translateActive("error.diagnostics.copy|submitIssue"),和 Toast / Inline 对齐。
  • 单测:新增 apps/web/tests/diagnostics.test.tsx,覆盖快照字段、buildIssueUrl 的 query 编码,以及 detail 里 Bearer / api_key / password 等脱敏。
  • 顺带修了 Inline 默认 Issue 标题 title ?? "Settings" 与 t("error.settingsTitle") 不一致的问题;diagnostics.ts 增加 redactSecrets,在拼进 Detail 前做一层正则脱敏,比只靠文案提醒更稳妥。

上一轮两个 unresolved 都已落地,这轮没有新的阻塞点。Toast / Inline 组件测仍未断言新按钮是否出现,属于锦上添花,不挡合入。

结论:可合

likedislike
openJiuwen-bot成员
10 天前 评论:

✅ 流水线 3752e13e086f484db44a42cc753f8c0c 执行成功。

可在 https://gitcode.com/openJiuwen/sciencediscovery/pull/142/check 查看完整构建日志。

在 PR 评论中发送 rerun 可重新触发 CI 流水线。

任务名称子任务状态详情
代码检查SCA(开源合规)PASSED点此跳转
Anti-poison(防投毒)PASSED点此跳转
CodeCheck(静态检查)PASSED点此跳转
Blacklist(禁用词)PASSED点此跳转
UThost tierPASSED公开日志
guest tier (QEMU TCG sandbox)PASSED公开日志
ST-PASSED公开日志
Binaryx86_64 debug packagePASSEDbinary · SHA256SUMS
aarch64 debug packagePASSEDbinary · SHA256SUMS
likedislike
OopenJiuwen-bot成员
10 天前 添加了label:ci-successful
OopenJiuwen-bot成员
10 天前 删除了label:ci-running
atomgit-bot
atomgit-bot
9 天前 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike
不准确?
Hhugoxk
9 天前 修改标题为 “feat(web): copy error diagnostics and submit issue from error surfaces(Issue #101)”,原标题为“feat(web): copy error diagnostics and submit issue from error surfaces”
Hhugoxk
8 天前 审查状态已重置,审查人: hong-ye-zhou,yi-zhang95,wang_cheng_zhao
Hhugoxk
8 天前 强制推送  28 个提交:3cb35700-27 commits from branch main,85ddf9e5-feat(web): copy error diagnostics and submit issue from error surfaces
OopenJiuwen-bot成员
8 天前 删除了label:ci-successful
OopenJiuwen-bot成员
8 天前 删除了label:openJiuwen-cla/yes
openJiuwen-bot成员
8 天前 评论:

Notification

This pull request has been changed(code update) or closed, so removes the following label(s): ci-successful.

likedislike
OopenJiuwen-bot成员
8 天前 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
8 天前 评论:

CLA 签署成功

hugoxk, 感谢您的代码贡献。 所有的代码贡献者都已完成了 CLA 签署。 👍

likedislike
openJiuwen-bot成员
8 天前 评论:

The pipeline(pipeline number:142) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
8 天前 添加了label:ci-running
wang_cheng_zhao成员
8 天前 评论:

上一轮检视:https://gitcode.com/openJiuwen/sciencediscovery/pull/142?ref=&did=b57c8b9e7539c04edd9f4d4cc4a6e25addd9721c#tid-190462056

AI 自动检视,仅供参考,问题都需要人工评估分析

本轮相对上一轮(e517d127)主要是 rebase 到最新 main,以及补上了 Toast / InlineErrorAlert 对「复制诊断 / 提交 Issue」按钮的组件级断言。核心实现(ErrorBoundary、diagnostics 模块、redactSecrets、i18n/translateActive)与 Round-2 一致,三向 diff 相对 origin/main 仍是那 9 个 web 文件,没有无关改动混入。

上一轮已确认的修复(ErrorBoundary 走 i18n、diagnostics 单测、Inline 默认标题对齐、密钥脱敏)仍然在;原先非阻塞的 Toast/Inline 动作按钮缺测也补上了。整体方案仍合理,可合。

likedislike
hugoxk
8 天前 评论:

report error.png

likedislike
openJiuwen-bot成员
8 天前 评论:

✅ 流水线 3ddb8b9905974582943cdc5bcf86df10 执行成功。

可在 https://gitcode.com/openJiuwen/sciencediscovery/pull/142/check 查看完整构建日志。

在 PR 评论中发送 rerun 可重新触发 CI 流水线。

任务名称子任务状态详情
代码检查SCA(开源合规)PASSED点此跳转
Anti-poison(防投毒)PASSED点此跳转
CodeCheck(静态检查)PASSED点此跳转
Blacklist(禁用词)PASSED点此跳转
UThost tierPASSED公开日志
guest tier (QEMU TCG sandbox)PASSED公开日志
ST-PASSED公开日志
Binaryx86_64 debug packagePASSEDbinary · SHA256SUMS
aarch64 debug packagePASSEDbinary · SHA256SUMS
likedislike
OopenJiuwen-bot成员
8 天前 添加了label:ci-successful
OopenJiuwen-bot成员
8 天前 删除了label:ci-running