fix: 按实测响应修正 SimpCore API-V2 的字段名

接入 V2 密钥后实跑发现字段名与文档描述对不上,全部按真实响应修正:

- /players 返回的是对象 {online,max,players:[...]} 而不是裸数组,
  原解析会拿到空列表;且里面没有坐标与延迟,只有所在世界
- /dragon 的字段是 dragonAlive,不是 alive,也没有 health / phase
- /time 直接给算好的时刻 {world,tick,phase,time12,time24},
  原实现还在用 world_time/day_time/is_day 自己换算,全部取不到
- /players/{name}/equipment 的物品是 {type,key,amount,damage,maxDurability,unbreakable}
  且挂在 equipment 子对象下;damage 是已损耗值,原来会把「损耗 157」当成
  「剩余 157」显示,现在换算成 remainingDurability 并显示「剩余/上限」+ 百分比
- 429 限流时服务端带 retryAfterSeconds,现在提示里直接写出还要等多少秒
  (末影龙 1 次/分钟,实测提示「还需等待 16 秒」)

另外给 SimpApiV2Client 加了可注入的 fetchImpl,便于测试替换网络层。

实测(DiLiDaLaDaLa):在线 8 人、游戏时间 19:45 NIGHT、
下界合金剑 剩余 1992/2031、头盔 剩余 198/407。

测试 336 -> 343,全部通过。
这个提交包含在:
lyizai
2026-09-28 13:56:41 +08:00
父节点 b9cae1aac2
当前提交 71e78f06dc
共修改 6 个文件,包含 304 行新增和 97 行删除
+22
查看文件
@@ -2,6 +2,28 @@
本项目遵循 [约定式提交](https://www.conventionalcommits.org/zh-hans/) 与 [语义化版本](https://semver.org/lang/zh-CN/)。
## [1.5.1] - 2026-09-28
接入 API-V2 密钥后按实测响应修正字段名(之前是按文档猜的,跑起来全不对)。
### 修复
- **API-V2 `/players` 返回的是对象不是数组**:`{"online":8,"max":5000,"players":[...]}`,
原解析按裸数组处理会拿到空列表;且里面**没有坐标与延迟**,只有所在世界
- **API-V2 `/dragon` 的字段是 `dragonAlive`**,不是 `alive`;也没有 health / phase
- **API-V2 `/time` 直接给算好的时刻**:`{world, tick, phase, time12, time24}`,
原实现还在用 `world_time` / `day_time` / `is_day` 自己换算,全部取不到
- **API-V2 `/players/{name}/equipment` 的物品结构**:
`{type, key, amount, damage, maxDurability, unbreakable}`,装备在 `equipment` 子对象里。
`damage` 是**已损耗值**,原来会把「损耗 157」当成「剩余 157」显示;
现在换算成 `remainingDurability` 并在界面显示「剩余 / 上限」+ 百分比
- **限流提示**:V2 触发 429 时服务端带 `retryAfterSeconds`,现在直接告诉用户还要等多少秒
(末影龙接口只有 1 次/分钟,实测超限时提示「还需等待 16 秒」)
### 新增
- `SimpApiV2Client` 支持注入 `fetchImpl`,便于测试替换网络层
## [1.5.0] - 2026-09-28
### 新增