@gz-fronted/gz-pc 0.1.3-beta.0 → 0.1.3-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -340,10 +340,10 @@ import { ConfigProvider } from '@chenhui996/gg-ui';
340
340
  </ConfigProvider>;
341
341
  ```
342
342
 
343
- 该 Provider 使用 `message.useMessage()`、受控 gg-ui `Modal` 和 `Drawer`,不会在已接入
344
- 的项目中调用脱离 React 上下文的静态反馈 API。因此主题切换时,三类反馈都会继续读取
345
- 宿主 `ConfigProvider` 的主题 Token。业务页面不需要维护反馈状态。未挂载该 Provider 的
346
- 已有项目仍会回退到原来的静态 `message.error`,不会静默丢失错误提示。
343
+ 该 Provider 是兼容包装层,内部组合通用 Debug Feedback Provider 和受控 gg-ui 401
344
+ `Modal`。因此主题切换时,普通消息、Debug Drawer 和 401 弹窗都会继续读取宿主
345
+ `ConfigProvider` 的主题 Token。业务页面不需要维护反馈状态。未挂载该 Provider 的已有
346
+ 项目仍会回退到原来的静态 `message.error`,不会静默丢失错误提示。
347
347
  `GzFetchUnauthorizedModal` 继续保留为兼容 API,但新项目优先使用统一 Provider。
348
348
 
349
349
  所有由同一份 gz-pc 包创建的默认客户端和独立客户端共享一个 401 管理器。首个 401
@@ -369,6 +369,52 @@ configureGzFetch({
369
369
 
370
370
  ## Debug 错误反馈
371
371
 
372
+ Debug Feedback 归属于 `fetch` 请求基础设施,可让保留 Axios 的项目复用同一套 Debug
373
+ Drawer,而不需要迁移请求层:
374
+
375
+ ```tsx
376
+ import { ConfigProvider } from '@chenhui996/gg-ui';
377
+ import { GzDebugFeedbackProvider } from '@gz-fronted/gz-pc/fetch';
378
+
379
+ <ConfigProvider themeMode={themeMode}>
380
+ <GzDebugFeedbackProvider>
381
+ <App />
382
+ </GzDebugFeedbackProvider>
383
+ </ConfigProvider>;
384
+ ```
385
+
386
+ 纯 Axios 项目使用 `GzDebugFeedbackProvider`。使用 gzFetch 的项目(包括 Axios 与 gzFetch
387
+ 混用的过渡项目)继续只挂载 `GzFetchFeedbackProvider`,不需要修改已有 JSX。两者共享同一
388
+ 份 Debug 状态;重复嵌套不会展示两份 Drawer,但没有必要同时挂载。
389
+
390
+ Axios 项目在其已有错误拦截器或请求封装中调用 `reportDebugError`,并保留自己的消息解析、
391
+ 401 和普通错误提示策略:
392
+
393
+ ```ts
394
+ import { reportDebugError } from '@gz-fronted/gz-pc/fetch';
395
+
396
+ const data = error.response?.data;
397
+ const handled = reportDebugError({
398
+ message: messageText,
399
+ debug:
400
+ typeof data === 'object' && data !== null && 'debug' in data
401
+ ? data.debug
402
+ : undefined,
403
+ responseData: data,
404
+ method: error.config?.method,
405
+ url: error.config?.url,
406
+ });
407
+
408
+ if (!handled) {
409
+ message.error(messageText);
410
+ }
411
+ ```
412
+
413
+ `reportDebugError()` 在有效 debug、Debug 开关开启且存在 Provider host 时返回 `true`;否则
414
+ 返回 `false`,不会抛错也不会自行弹普通错误消息。它不处理 Axios interceptor、HTTP 401、
415
+ Token、登录跳转、业务 code 或错误文案解析。调用方必须先走项目原有的 401 分支,再决定是否
416
+ 调用该 API。
417
+
372
418
  非 401 HTTP 异常的响应体包含对象类型的 `debug`,并且以下任一开关开启时,错误会进入
373
419
  Provider 内的 Debug Drawer,不再重复调用普通 `message.error`:
374
420
 
@@ -379,7 +425,8 @@ Provider 内的 Debug Drawer,不再重复调用普通 `message.error`:
379
425
  运行环境。Drawer 从右侧打开,在同一个列表中追加每一次错误且不去重;可逐条删除、全部
380
426
  清除或手动关闭。关闭 Drawer 不会清空列表,后续新错误会再次打开。每条记录展示错误
381
427
  摘要、请求 method/url,以及完整格式化的 `debug.request`、`debug.stackTrace` 和
382
- `debug.mdc`;缺失字段显示为空占位。
428
+ `debug.mdc`;缺失字段显示为空占位。“复制完整响应”仅在传入完整 `responseData` 时出现,
429
+ 未传入时隐藏,并复制该响应体。
383
430
 
384
431
  `showErrorMessage: false` 会同时关闭普通错误消息和 Debug Drawer。HTTP 401 始终优先走
385
432
  原有 unauthorized 分支,不进入 Debug Drawer。未挂载 Provider 时会回退普通