feat: add startup forced update check
This commit is contained in:
+17
@@ -1413,3 +1413,20 @@
|
||||
- 第一版方案:只做“启动检查 + 强制弹窗 + 下载新版/退出程序”。命中强制升级时显示当前版本、线上版本、升级说明,点击「下载新版」用系统浏览器打开 `download_url`;不允许继续进入主界面。
|
||||
- 策略:只有服务端明确返回强制升级才阻断;网络失败、接口超时、JSON 非法或字段缺失时允许进入软件,避免服务器故障导致用户全部不可用。
|
||||
- 边界:第一版不自动下载并覆盖 `cmshopee.exe` 或 `_internal/`,不删除/覆盖 `data/`,不做 Launcher、后台替换、增量补丁、签名校验或回滚;本轮只更新文档,未改代码。
|
||||
|
||||
## 【2026-07-07】T-544 完成 · 启动时检查强制升级
|
||||
|
||||
- 状态:DONE
|
||||
- 代码:新增 `app/update_check.py`,实现版本号数字段比较、服务端版本响应解析、强制升级判定、短超时 HTTP 请求和失败放行结果;`app/version.py` 新增 `APP_UPDATE_CHECK_URL` 构建常量,默认空值跳过检查,正式发布前填线上版本接口。
|
||||
- 启动流程:`app/gui/__init__.py` 在 `appconfig.prepare_data_dir()` 成功后、创建 `MainWindow` 前执行版本检查。服务端明确要求强制升级时弹中文阻断框,显示当前版本、线上版本、最低支持版本和升级说明,按钮只保留「下载新版」和「退出程序」;点击下载用系统浏览器打开 `download_url` 并退出启动流程。
|
||||
- 失败策略:网络失败、超时、非法 JSON、缺少版本字段或诊断日志写入失败都不会阻断启动;可记录到本地 `data/logs/cmshopee.log`,避免服务器故障导致所有用户不可用。
|
||||
- 文档:`docs/06-tasks.md` 标记 T-544 为 DONE;`docs/packaging.md` 补充 `APP_UPDATE_CHECK_URL` 配置口径;`docs/current-state.md` 更新当前快照、测试覆盖和看板状态。
|
||||
- 验证:`python -m unittest discover -s tests -p "test_update_check.py"` 通过(7 tests);`python -m unittest discover -s tests -p "test_gui.py"` 通过(101 tests);`python -m ruff check app tests main.py` 通过;`python -m compileall app main.py` 通过;`python -m unittest discover -s tests` 通过(232 tests)。
|
||||
- 边界:未改 DB schema、AI、Excel、Shopee/CDP 或业务更新流程;不自动下载、覆盖或删除 `cmshopee.exe`、`_internal/`、`data/`。
|
||||
|
||||
## 【2026-07-07】T-544 补充 · 配置线上版本接口并实测
|
||||
|
||||
- 代码:`APP_UPDATE_CHECK_URL` 已更新为 `https://cm.833729.com/api/v1/client/releases/latest?platform=windows`;`app/update_check.py` 兼容当前线上返回的 `release.version/download_url/sha256/release_notes` 嵌套结构。
|
||||
- 实测:接口 HTTP 200,返回 `platform=windows`、`release.version=0.1.0`、`download_url=https://43.128.3.240:33717/down/tip8cOrTbZJT.zip`、发布说明等字段。
|
||||
- 结果:当前程序 `APP_VERSION=0.1.0`,线上版本也是 `0.1.0`,且接口未返回 `min_supported_version` 或 `force_update=true`,所以客户端判定 `forced=False`、`can_enter=True`。
|
||||
- 验证:`py -3.10 -m unittest discover -s tests -p "test_update_check.py"` 通过(8 tests);`py -3.10 -m compileall app main.py` 通过。
|
||||
|
||||
Reference in New Issue
Block a user