dsh-request-doctor 0.16.8 → 0.16.10

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  **产品名称**:request-doctor(请求急救员)
4
4
  **产品标识**:request-doctor
5
- **版本**:0.16.8
5
+ **版本**:0.16.10
6
6
 
7
7
  ---
8
8
 
@@ -1,7 +1,7 @@
1
1
  # 软件设计说明
2
2
 
3
3
  **产品名称**:request-doctor(请求急救员)
4
- **版本**:0.16.8
4
+ **版本**:0.16.10
5
5
  **编制依据**:GB/T 8567-2006《计算机软件文档编制规范》6.2
6
6
 
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  # 软件测试报告
2
2
 
3
3
  **产品名称**:request-doctor(请求急救员)
4
- **版本**:0.16.8
4
+ **版本**:0.16.10
5
5
  **编制依据**:GB/T 8567-2006《计算机软件文档编制规范》6.6;GB/T 8566-2007 验证与确认过程
6
6
 
7
7
  ---
@@ -248,4 +248,37 @@ all files 行 85.76% 分支 77.28% 函数 86.90%
248
248
 
249
249
  分支覆盖率最低的两个模块是 `plugin-discovery.js`(55.38%)与 `version-repair.js`(47.47%)。它们的未覆盖部分集中在真实文件系统与插件管理器的交互上,需要构造更完整的替身才能走到,本轮未做。
250
250
 
251
- `install-bundle.js` 原本只有 41.21% 行覆盖,`installRemoteBundle` 整块没人测。补上它的两条前置拒绝(非注册表名、缺 profile)之后升到 56.28%,其余部分需要真实访问 npm registry,不适合放进单测。
251
+ `install-bundle.js` 原本只有 41.21% 行覆盖,`installRemoteBundle` 整块没人测。补上它的两条前置拒绝(非注册表名、缺 profile)之后升到 56.28%,其余部分需要真实访问 npm registry,不适合放进单测。
252
+
253
+ ## 9 验证边界与已知限制
254
+
255
+ 下面这些内容**没有被验证**,或只验证了一半。写在这里是为了让人知道哪些结论可以直接采信,
256
+ 哪些还需要在真实环境里观察,而不是默认「测试全绿 = 全都验证过了」。
257
+
258
+ ### 9.1 只能验证到一半的
259
+
260
+ | 事项 | 验证到了 | 没验证 |
261
+ | --- | --- | --- |
262
+ | 失败修复后的重试 | 修复执行、账本记账、向下游回 `{ kind: 'retry' }` | 下游收到之后是否真的重发了请求——那在 DSH 内核里,插件侧观测不到 |
263
+ | 凭据 / 模型目录刷新 | 刷新被调用、provider 参数正确、服务抛错不致命 | 刷新之后对应失败是否真的消失——需要真实凭据层与模型服务 |
264
+ | 界面渲染 | React 服务端渲染出预期节点(输入框、按钮、判定行) | 真实浏览器里的视觉呈现与交互——测试环境无浏览器桥 |
265
+ | 兼容环境的实际效果 | 声明已对齐、所需符号确实由旧版本提供、符号核对通过 | 插件在运行时里是否真的工作正常——`dsh-hyper-tools` 走 typert remote,不出现在工具列表里 |
266
+
267
+ ### 9.2 完全没有覆盖的
268
+
269
+ - `installRemoteBundle` 的网络部分(取元数据、下载 tarball):`REGISTRY` 是硬编码常量,无法注入本地源。只覆盖了联网前的两道拒绝。
270
+ - `plugin-discovery.js` 的 `scanOne` 内部多级判定:需要同时构造「已启用但加载失败的插件 + 完整 probe + 兼容环境」,属于集成测试范畴。
271
+ - `version-repair.js` 中与真实插件管理器交互的路径:同理。
272
+
273
+ ### 9.3 不处理的情况(设计选择,非缺陷)
274
+
275
+ - **TLS 证书失败**:重试不会让证书变可信,因此不重试,只给出处理建议。
276
+ - **本机权限 / 路径 / 磁盘满**:重试一万次也不会变,因此不重试,只给出处理建议。
277
+ - **配额 / 限流 / 内容策略**:属于服务方状态,插件不处置。
278
+ - **运行时已删除的 API**:不伪造实现。找不到旧版本就如实报告缺哪个符号。
279
+
280
+ ### 9.4 关于「测试全绿」
281
+
282
+ 当前 278 条用例覆盖的是插件自己的逻辑:分类、判定、记账、拼装输出、写盘与恢复。
283
+ 凡涉及 DSH 内核、真实网络、真实浏览器、真实第三方服务的行为,都在上面列明了边界。
284
+ 把有限验证说成全验证,比不做验证更危险。
@@ -1,7 +1,7 @@
1
1
  # 软件安装部署说明
2
2
 
3
3
  **产品名称**:request-doctor(请求急救员)
4
- **版本**:0.16.8
4
+ **版本**:0.16.10
5
5
  **编制依据**:GB/T 8567-2006《计算机软件文档编制规范》6.7
6
6
 
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  # 软件用户手册
2
2
 
3
3
  **产品名称**:request-doctor(请求急救员)
4
- **版本**:0.16.8
4
+ **版本**:0.16.10
5
5
  **编制依据**:GB/T 8567-2006《计算机软件文档编制规范》6.5
6
6
 
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  # 软件质量度量报告
2
2
 
3
3
  **产品名称**:request-doctor(请求急救员)
4
- **版本**:0.16.8
4
+ **版本**:0.16.10
5
5
  **度量标准**:GB/T 45717-2025《信息技术 软件测量 软件质量测量 自动化的源代码质量测度》
6
6
  **度量工具**:`tools/quality-measure.mjs`(本仓库自带,可复现)
7
7
 
@@ -35,16 +35,16 @@
35
35
 
36
36
  | 度量项 | 实测值 | 限值 | 判定 |
37
37
  | --- | --- | --- | --- |
38
- | 文件数 | 27 | — | — |
39
- | 总行数 | 4955 | — | — |
40
- | 源代码行数 | 3615 | — | — |
41
- | 注释行数 | 888 | — | — |
42
- | **注释密度** | **24.56%** | ≥ 10% | 满足 |
38
+ | 文件数 | 41 | — | — |
39
+ | 总行数 | 5538 | — | — |
40
+ | 源代码行数 | 3984 | — | — |
41
+ | 注释行数 | 1034 | — | — |
42
+ | **注释密度** | **25.95%** | ≥ 10% | 满足 |
43
43
  | **重复率** | **4.93%** | ≤ 5% | 满足 |
44
- | 函数数 | 371 | — | — |
45
- | 平均圈复杂度 | 3.91 | — | — |
44
+ | 函数数 | 425 | — | — |
45
+ | 平均圈复杂度 | 3.84 | — | — |
46
46
  | **最大圈复杂度** | **10** | ≤ 10 | 满足 |
47
- | **最长函数** | **56 行** | ≤ 60 | 满足 |
47
+ | **最长函数** | **58 行** | ≤ 60 | 满足 |
48
48
  | **最长文件** | **500 行** | ≤ 500 | 满足 |
49
49
 
50
50
  结论:**全部度量项满足限值**。
@@ -57,23 +57,47 @@
57
57
 
58
58
  | 文件 | 行数 | 职责 |
59
59
  | --- | ---: | --- |
60
- | `index.js` | 约 380 | 组合根 |
61
- | `lib/version-repair.js` | 约 430 | 版本修复编排 |
62
- | `lib/compat-env.js` | 约 490 | 兼容环境构建 |
63
- | `lib/compat.js` | 约 380 | 兼容性判定 |
64
- | `lib/install-support.js` | 约 250 | 安装前预置 |
65
- | `lib/compat-repair.js` | 约 230 | 模块图扫描与审计 |
66
- | `lib/model-repair.js` | 约 150 | 模型请求修复 |
67
- | `lib/repair-listeners.js` | 约 150 | 工具与载体修复 |
68
- | `lib/diagnostics.js` | 约 120 | 诊断 |
69
- | `lib/runtime-probe.js` | 约 110 | 运行时探测 |
70
- | `lib/stat-cache.js` | 约 90 | 签名缓存 |
71
- | `lib/semver.js` | 约 200 | 版本语义 |
72
- | `lib/classify.js` | 约 170 | 失败分类 |
73
- | `lib/retry-ledger.js` | 约 90 | 重试账本 |
74
- | `lib/arbitrate.js` | 约 70 | 路由仲裁 |
75
- | `lib/timers.js` | 约 55 | 定时器 |
76
- | `lib/sleep.js` | 约 30 | 可中断延时 |
60
+ | `lib/version-repair.js` | 500 | 插件与 DSH 的版本修复。 |
61
+ | `lib/compat-env.js` | 491 | 兼容环境的搭建与拆除。 |
62
+ | `lib/classify.js` | 390 | 纯函数:判断一次失败到底是不是本机这边能挽回的,以及重试该怎么排。 |
63
+ | `lib/compat.js` | 333 | 判断一个声明的 DSH 依赖与当前运行时对不上的插件,到底能不能真的跑起来。 |
64
+ | `lib/commands.js` | 306 | /doctor 命令与界面路由。 |
65
+ | `client.js` | 253 | 界面半:插件页那一栏 |
66
+ | `lib/env-verify.js` | 250 | 验证兼容环境真的能把插件要的东西交出来。 |
67
+ | `lib/plugin-discovery.js` | 233 | 找出所有需要处理的插件。 |
68
+ | `lib/install-support.js` | 207 | 让本来装不上的插件能装上。 |
69
+ | `index.js` | 207 | 组合根:装配依赖与监听器 |
70
+ | `lib/model-repair.js` | 202 | 模型请求的修复。 |
71
+ | `lib/install-bundle.js` | 200 | 装一个远程的插件,不管它的版本检查过不过。 |
72
+ | `lib/compat-repair.js` | 197 | 找到装好的插件,拿它跟当前运行时对一遍。 |
73
+ | `lib/package-fetch.js` | 182 | 从 npm 取一个指定版本的包,解到本地。 |
74
+ | `lib/runtime-probe.js` | 172 | 运行时探测。 |
75
+ | `lib/verdict-report.js` | 169 | 已经在扫的时候,告诉用户等一下,而不是报「没有结果」。 |
76
+ | `lib/install-rescue.js` | 162 | 让「版本不匹配」的插件装得上。 |
77
+ | `lib/semver.js` | 160 | 版本号解析、比较,以及判断某个版本是否满足 manifest 里写的范围。 |
78
+ | `lib/repair-listeners.js` | 127 | 几个修复监听器。 |
79
+ | `lib/diagnostics.js` | 84 | 诊断记录。 |
80
+ | `lib/cache-store.js` | 80 | 兼容环境的下载缓存。 |
81
+ | `lib/retry-ledger.js` | 68 | 重试账本。 |
82
+ | `lib/stat-cache.js` | 68 | manifest 和模块图的缓存。 |
83
+ | `lib/arbitrate.js` | 46 | 路由冲突的报告。 |
84
+ | `lib/symbol-alias.js` | 45 | |
85
+ | `lib/version-search.js` | 45 | 决定去试哪些版本。 |
86
+ | `lib/allow-route.js` | 40 | 界面上的「授权」路由。 |
87
+ | `lib/timers.js` | 40 | 脱离 HMR 事务的定时器。 |
88
+ | `lib/allow-version.js` | 38 | 放行一个插件在某个运行时版本上运行。 |
89
+ | `lib/skip-log.js` | 32 | 本次会话里没救回来的失败。 |
90
+ | `lib/refused-list.js` | 27 | 读一次插件管理器的拒装记录。 |
91
+ | `lib/panel-briefs.js` | 26 | 给界面用的审计摘要。 |
92
+ | `lib/restart-notice.js` | 21 | 「需要重启」的判定。 |
93
+ | `lib/status-restore.js` | 21 | 从上次的快照里恢复 skip 汇总。 |
94
+ | `lib/give-up-advice.js` | 19 | 不重试的失败怎么向用户交代。 |
95
+ | `lib/panel-blocked.js` | 19 | 审计兼容但管理器拒装的插件。 |
96
+ | `lib/sleep.js` | 19 | 可中断的等待。 |
97
+ | `lib/scan-bridge.js` | 18 | 命令与扫描之间的桥。 |
98
+ | `lib/status-path.js` | 17 | 诊断快照写到哪。 |
99
+ | `lib/env-shape.js` | 14 | 描述一个插件的兼容环境形态:薄垫片几个、真实旧版本几个。 |
100
+ | `lib/text-lines.js` | 10 | 拼多行文本的小工具。 |
77
101
 
78
102
  ---
79
103
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "standard": "GB/T 45717-2025 信息技术 软件测量 软件质量测量 自动化的源代码质量测度",
3
- "generatedAt": "2026-10-29T17:28:02.655Z",
3
+ "generatedAt": "2026-10-29T17:32:43.272Z",
4
4
  "scope": {
5
5
  "files": 41,
6
6
  "totalLines": 5538,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-request-doctor",
3
- "version": "0.16.8",
3
+ "version": "0.16.10",
4
4
  "description": "自动修复客户端引起的请求失败,并让版本不匹配的 DSH 插件能装上、能跑起来。",
5
5
  "keywords": [
6
6
  "dsh-plugin",