Skip to content

事件协议 ​

HealthGuard 的所有 SDK 都遵循统一的事件协议,事件定义在 @health-guard/core 中,使用 Zod Schema 进行校验。

批量上报 ​

SDK 通过 POST /api/events/batch 批量上报事件。

请求体 ​

json
{
  "appKey": "web_abc123",
  "events": [
    { /* event 1 */ },
    { /* event 2 */ }
  ]
}

字段说明 ​

字段类型必填说明
appKeystring是应用唯一标识,必须与每个事件的 appKey 一致
eventsarray是事件数组,最少 1 条,最多 50 条

基础事件字段 ​

所有事件类型都包含以下公共字段:

字段类型必填说明
eventIdstring是事件唯一 ID
appKeystring是应用唯一标识
platformstring是平台类型,见下方枚举
timestampnumber是事件发生时间戳(毫秒)
sessionIdstring是会话 ID
anonymousIdstring是匿名用户 ID
sdkVersionstring是SDK 版本号
releasestring否应用版本号
environmentstring否development / test / production
userIdstring否业务用户标识
pageUrlstring否当前页面 URL
deviceInfoobject否设备信息

platform 枚举 ​

  • web
  • wechat-miniprogram
  • alipay-miniprogram
  • flutter
  • uniapp-h5
  • uniapp-wechat
  • uniapp-alipay
  • uniapp-douyin
  • uniapp-app
  • uniapp

environment 枚举 ​

  • development
  • test
  • production

事件类型 ​

error ​

错误事件用于上报 JS 错误、Promise rejection、资源加载失败、请求失败等。

字段类型必填说明
typestring是固定为 error
errorTypestring是js / promise / resource / request / native
messagestring是错误摘要
stackstring否错误堆栈
filenamestring否出错文件(浏览器环境)
linenonumber否行号
colnonumber否列号
fingerprintstring是Issue 聚合指纹
breadcrumbsarray是面包屑数组
contextobject否自定义上下文,最多 20 个键
pagestring否页面路径
scenestring否业务场景

http ​

HTTP 事件用于上报请求耗时、状态码和失败原因。

字段类型必填说明
typestring是固定为 http
methodstring是HTTP 方法
urlstring是请求 URL(已脱敏)
statusnumber否HTTP 状态码
durationnumber是请求耗时(毫秒)
successboolean是是否成功
errorMessagestring否错误描述
fingerprintstring否Issue 聚合指纹
contextobject否自定义上下文,最多 20 个键
requestDataobject否请求数据,最多 20 个键
pagestring否页面路径
scenestring否业务场景

performance ​

性能事件用于上报自定义性能指标或 Web Vitals 等数据。

字段类型必填说明
typestring是固定为 performance
namestring是指标名称
valuenumber是指标数值
ratingstring否good / needs-improvement / poor

面包屑事件用于显式记录用户操作或状态变更轨迹。

字段类型必填说明
typestring是固定为 breadcrumb
breadcrumb.typestring是navigation / click / http / manual
breadcrumb.messagestring是面包屑描述
breadcrumb.timestampnumber是时间戳
breadcrumb.dataobject否附加数据

指纹生成 ​

  • 错误指纹:基于 errorType、message、堆栈前 two 行、以及 context 中的 url/method/scene/page 生成。
  • HTTP 指纹:基于 method、URL pathname、status 和 platform 生成。

指纹用于在 Collector 端将相似事件聚合为 Issue。

脱敏与限制 ​

  • URL Query 中的敏感键会被替换为 [Filtered],敏感键包括:authorization、auth、cookie、password、secret、token、access_token、refresh_token。
  • context 与 requestData 每层最多 20 个键。
  • request body 和 response body 默认不上报。

相关文档 ​

网络诊断(未发布源码) ​

2026-10-14 源码新增诊断与补传能力,配置方式、发布状态和不可用字段见 网络诊断。Flutter 接入见 Flutter SDK。

Flutter 原请求证据与 HTTP Issue 指纹(未发布) ​

HTTP 事件可在 context.originalError 保留原始 Dio 类型,在 context.requestTrace 保留 source: original_request、requestId、startedAt、timeouts、connectionAcquisition、responseHeaders 及明确不可用的 dns/tcp/tls。该字段由 SDK 白名单脱敏,不能用于任意业务载荷。它与 context.networkDiagnostics.probes 中的独立探测不同。

Collector 为新 HTTP 失败生成 http:v2:<hash>,依据方法、目标 origin、路径、状态、平台、环境与故障阶段,忽略请求编号、耗时、查询参数和客户端自定义指纹。历史已存指纹保留兼容,不自动改变修复关联。

Released under the MIT License.