feat: 接齐 SimpCore 开放 API 全量接口并新增 API 数据浏览弹层
以前只用了「邦国领土」这一类接口,控制台也只能看到一行「已启用/未启用」, 大量服务端公开信息拿得到却看不到。现在按官方文档 https://open.bgjq.top/api-docs.html 补齐。 新增 - SimpApiClient 从 7 个接口补到 16 个:/info/players、/info/unions/{key}/members、 /tech、/contributions、/info/buffs、/info/diplomacy、/info/bans、/info/logs、 /info/announcements - SimpApiV2Client(新):/players、/players/{name}/equipment、/time、/dragon。 文档明确 API 与 API-V2 是两套独立、互不通用的密钥体系,因此单独实例与配置 (apiV2Enabled / apiV2Key,或环境变量 SIMP_API_V2_KEY);V2 配额很小 (末影龙 1 次/分钟),一律按需查询、不做轮询 - 控制台「查看 API 数据」弹层,五个页签: 概览(两套密钥状态/请求数/缓存/健康检查)· 邦国(27 个,点开看成员/科技/捐献/领土统计) · 玩家(1600+ 可搜索,点开看详情与所属邦国)· 全服(加成/外交/封禁/日志/公告) · 实时 V2(在线玩家/游戏时间/末影龙/装备) - /api/simp/* 一整套只读代理接口,统一处理「未配 Key / 上游错误」并给出可读提示 修复(解析字段名以实测响应为准) - 捐献:响应只有 player_uuid 没有玩家名 -> 先用成员表补全、查不到再退到全服玩家表; 时间字段是 contributed_at;补充 reason(用途)列;amount 可为负(邦国支出) - 公告:message 是 Minecraft 聊天组件 JSON 字符串 -> 新增 componentToText() 压平为纯文本 - 封禁:实际字段 banned_player_name / banned_by_player_name / banned_at / unbanned - 日志:实际字段 username / action / timestamp - 玩家表:上下线时间是 last_join_time / last_quit_time - 王城坐标:服务端可能返回 null,原来 Number(null) 会算成 0, 伪装成「王城在世界原点 (0,0)」;现在显式判空返回 null 变更 - 快捷发送去掉 /spawn 与 /list,只留 /u return、/u claimmode、/u restore confirm 测试 326 -> 336,全部通过。
这个提交包含在:
+34
@@ -2,6 +2,40 @@
|
||||
|
||||
本项目遵循 [约定式提交](https://www.conventionalcommits.org/zh-hans/) 与 [语义化版本](https://semver.org/lang/zh-CN/)。
|
||||
|
||||
## [1.5.0] - 2026-09-28
|
||||
|
||||
### 新增
|
||||
|
||||
- **SimpCore 开放 API 数据浏览**:以前只用了「邦国领土」这一类接口,控制台也只能看到一行
|
||||
「已启用 / 未启用」。现在把官方文档里的公开接口都接进来,并做成「查看 API 数据」弹层:
|
||||
- **概览**:两套密钥的配置状态、请求数、缓存命中、最近 HTTP 状态与错误、健康检查按钮
|
||||
- **邦国**:27 个邦国的君主 / 成员数 / 区块数 / 领土面积 / 特产 / 王城区块;
|
||||
点开看成员(职位、职业)、已激活科技、捐献收支、领土统计(忠诚度、最早/最近占领)
|
||||
- **玩家**:1600+ 名玩家可搜索(邦国 / 职位 / 职业 / 称号),点开看详情与所属邦国
|
||||
- **全服**:生效加成 / 外交关系 / 封禁记录 / 上下线日志 / 公告历史
|
||||
- **实时 V2**:在线玩家、游戏时间、末影龙、指定玩家的装备与手持物品
|
||||
- **`SimpApiClient` 补齐到官方文档的全量接口**(原来只有 7 个,现在 16 个):
|
||||
`/info/players`、`/info/unions/{key}/members`、`/tech`、`/contributions`、
|
||||
`/info/buffs`、`/info/diplomacy`、`/info/bans`、`/info/logs`、`/info/announcements`
|
||||
- **`SimpApiV2Client`**(新):`/players`、`/players/{name}/equipment`、`/time`、`/dragon`。
|
||||
文档明确 **API 与 API-V2 是两套独立、互不通用的密钥体系**,因此单独一个实例与配置;
|
||||
V2 配额很小(末影龙仅 1 次/分钟),一律按需查询、不做轮询
|
||||
|
||||
### 变更
|
||||
|
||||
- 快捷发送去掉 `/spawn` 与 `/list`,只留 `/u return` `/u claimmode` `/u restore confirm`
|
||||
|
||||
### 修复(解析字段名以实测响应为准)
|
||||
|
||||
- 捐献记录:响应里**只有 `player_uuid` 没有玩家名**,现在先用邦国成员表、查不到再退到全服
|
||||
玩家表补全;时间字段是 `contributed_at` 不是 `created_at`;补充 `reason`(用途)列
|
||||
- 公告:`message` 是 **Minecraft 聊天组件的 JSON 字符串**,新增 `componentToText()` 压平成纯文本
|
||||
- 封禁:实际字段是 `banned_player_name` / `banned_by_player_name` / `banned_at` / `unbanned`
|
||||
- 日志:实际字段是 `username` / `action` / `timestamp`
|
||||
- 玩家表:上下线时间是 `last_join_time` / `last_quit_time`
|
||||
- 王城坐标:服务端可能返回 `null`,原来会被 `Number(null)` 算成 0,
|
||||
伪装成「王城在世界原点 (0,0)」;现在显式判空返回 null
|
||||
|
||||
## [1.4.1] - 2026-09-27
|
||||
|
||||
### 变更
|
||||
|
||||
在新工单中引用
屏蔽一个用户