feat(version): 桌面端更新面板支持指定版本安装

- 新增公开接口 GET /api/version/list(最近 50 条,字段口径同管理端列表),
  桌面端下拉不再拼 OSS 地址(版本包被删后拼地址会 404)
- 更新面板(登录页 + 首页)加「指定版本更新」选择器:默认选中最新版,
  可选全部已发布版本(含回退),回退/同版给出明确文案与二次确认
- 客户端无需发版:do_update_app(file_url) 本就接受任意版本包直链
This commit is contained in:
2026-09-14 11:05:30 +08:00
parent 375b89154b
commit 8803e22f39
7 changed files with 515 additions and 20 deletions
+18 -3
View File
@@ -43,15 +43,30 @@
目标逻辑:Java `SoftwareVersionService.latestSoftwareVersion` 使用同一张表和同一次序规则。
### GET `/api/version/list`2026-09-14 新增,非旧接口)
桌面端更新面板「指定版本更新」下拉的数据源:该功能允许用户显式安装某个历史版本(含回退),
列表由服务端给全,前端不拼 OSS 地址(拼地址在版本被删除后会 404)。
- 匿名可达(与 `/latest` 同族,未登录也能用;登录页更新面板即匿名态)。
-`created_at DESC, id DESC` 返回最近 `PublicVersionLookup.DEFAULT_LIST_LIMIT`50)条,
上限 `MAX_LIST_LIMIT`200);不作为则沿用旧 `version/file_url` 字段名。
- 响应 `{"items":[{"id","version","file_url","created_at"}]}`,字段口径与管理端
`/api/admin/versions` 一致(同一套前端解析);空表返回 `{"items":[]}`
- 同一版本的重复上传记录由前端按版本号去重(保留最新一条),后端不做折叠。
## 内部结构
```text
PublicVersionController
├── currentVersion()
│ └── 应用版本配置
── latestVersion()
└── SoftwareVersionService.latestSoftwareVersion()
└── SoftwareVersionMapper → web_config
── latestVersion()
└── SoftwareVersionService.latestSoftwareVersion()
└── SoftwareVersionMapper → web_config
└── listVersions()
└── SoftwareVersionService.listPublicSoftwareVersions()
└── SoftwareVersionMapper → web_configLIMIT,字段口径同管理端列表)
```
## 类型映射