feat: add client release force update flag

This commit is contained in:
QiuSW
2026-07-08 15:38:59 +08:00
parent 30d9df34eb
commit 6646c64a76
14 changed files with 130 additions and 29 deletions
+24
View File
@@ -1518,3 +1518,27 @@
- `docs/00-ai-start-here.md`、`docs/current-state.md`:记录 T-609 为下一个可领取任务。
- 验证:纯文档修改;后续执行 T-609 时需补迁移、目标测试、`check` 和 `git diff --check` 证据。
- 下一步:领取 T-609,先补 `DownloadRelease.force_update` 与迁移,再更新接口响应、admin、测试和文档。
## 2026-07-08 T-609 桌面端版本检查接口增加强制更新标记落地
- 状态:DONE。
- 代码变更:
- `apps/portal/models.py`:`DownloadRelease` 新增 `force_update` 布尔字段,默认 `false`,迁移为 `portal.0002_downloadrelease_force_update`。
- `apps/portal/admin.py`:客户端发布版本 admin 列表、筛选和编辑表单加入「强制更新」。
- `apps/api/views.py`:`GET /api/v1/client/releases/latest` 的 `release` 对象新增 `force_update`,保持既有 `version`、`download_url`、`sha256`、`release_notes`、`published_at` 不变;无发布版本或无下载地址仍返回 `release:null`。
- `apps/api/tests.py`:覆盖默认 `force_update=false`、`force_update=true`、未发布响应不返回顶层 `force_update`、响应字段白名单和 admin 字段可见性。
- 文档变更:
- `docs/06-tasks.md`:T-609 状态改为 DONE。
- `docs/api.md`、`docs/routes.md`、`docs/04-architecture.md`:同步版本检查接口响应结构、字段说明与 `DownloadRelease.force_update` schema。
- `README.md`、`docs/00-ai-start-here.md`、`docs/current-state.md`、`docs/project-brief.md`:同步 Phase 6 当前状态和下一步口径。
- 验证:
- `py -3.12 -m py_compile apps\portal\models.py apps\portal\admin.py apps\api\views.py apps\api\tests.py`:通过。
- `py -3.12 manage.py check`:通过,0 issues。
- `py -3.12 manage.py makemigrations --check --dry-run`:通过,No changes detected。
- `py -3.12 manage.py migrate portal --noinput`:已应用 `portal.0002_downloadrelease_force_update`。
- `py -3.12 manage.py test apps.api.tests.ClientLatestReleaseApiTests --keepdb --noinput --verbosity 2`:重跑通过,11 tests OK。
- `py -3.12 manage.py test apps.portal.tests.PortalAccountFlowTests.test_homepage_shows_current_download_release apps.portal.tests.PortalAccountFlowTests.test_download_release_only_keeps_one_current_per_platform --keepdb --noinput --verbosity 2`:通过,2 tests OK。
- `.\init.ps1`:收尾验证通过(Python 3.12.3,依赖已满足,`manage.py check` 0 issues,打印启动命令)。
- `git diff --check`:通过,仅 Windows CRLF 提示。
- 已知测试环境现象:一次 API 目标测试与 portal 目标测试并行启动时,API 测试在连接远程 MySQL `43.128.3.240` 建测试库阶段超时;随后 `Test-NetConnection 43.128.3.240 -Port 3306` 显示 `TcpTestSucceeded=True`,单独重跑 API 目标测试通过。测试期仍保留 allauth `account.EmailAddress` 条件唯一约束在 MySQL 上不可创建的既有 `models.W036` 警告。
- 下一步:当前看板无编号 TODO;建议按业务优先级拆真实支付回调到账闭环、配置并发布客户端下载包、真实图片耗时验证,或从 Backlog 创建新任务。