docs: 归档任务 #130

This commit is contained in:
chengma
2026-08-11 09:24:47 +08:00
parent cd2889d76c
commit a31c367b4a
@@ -0,0 +1,65 @@
# 130 设置页紧凑布局与管理端地址切换
- 工单号:#130
- 标题:Client:紧凑排列设置字段并支持管理端地址统一切换
- 类型:需求
- 父级:#1
- 所属版本:MVP 后续 / 设置页与在线更新
- 状态:已完成
- 日期:2026-08-11
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/130>
## 背景与目标
设置页多个短字段分别占行,纵向空间利用率较低;同时 Client 已支持读取 `admin.base_url`,但没有界面配置入口。本任务压缩当前设备和软件更新表单,并保证管理端地址保存后,设备登记、任务领取和结果提交统一使用新地址。
## 最终方案
- 当前设备第一行并排显示设备号和设备名,第二行显示管理端地址。
- 软件更新清单地址独占一行,账号和密码在下一行按约 45:55 伸缩。
- 保存前验证管理端地址,只接受不含账号、密码、查询参数和片段的 HTTP/HTTPS 地址。
- 设备号、设备名和管理端地址通过一次 `set_many` 原子写入现有 `app_settings`,不增加数据库迁移。
- 保存后使用新 Gateway 登记 Client,并通知 PDD 任务事件层切换 Gateway;正在执行的请求不强制中断,持久 Worker 从下一次请求开始使用新地址。
- 测试注入的 Mock Gateway 保持不变,避免自动测试访问真实 Admin。
与建单方案一致。根据凭据保护红线,实施时补充了 URL 不能携带账号、密码、查询参数或片段的校验。
## 改了哪些
- `client/src/settings_ui.py`:重排当前设备和软件更新表单,增加管理端地址输入框。
- `client/src/settings_ui_event.py`:加载、验证、保存管理端地址,并通知任务模块切换地址。
- `client/src/current_client_service.py`:将 Client 身份和管理端地址原子保存。
- `client/src/http_admin_gateway.py`:拒绝可能携带凭据的管理端 URL。
- `client/src/pdd_ui_event.py`:为后续领取、执行和上报切换 Gateway。
- `client/src/ui_main.py`:连接设置页与 PDD 任务事件层的地址变更信号。
- `client/test/test_settings_ui_event.py`、`client/test/test_pdd_ui_event.py`:增加布局、校验、保存和持久 Worker 切换测试。
- `docs/client/05-ui-specification.md`:同步设置页最终交互规范。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 设备号和设备名同一行,管理端地址位于下一行 | 通过 |
| 管理端地址加载、验证和原子保存 | 通过 |
| 无效或携带凭据的地址不保存、不登记 | 通过 |
| 登记以及后续领取、结果提交统一切换地址 | 通过 |
| 软件更新账号和密码同一行并按约 45:55 伸缩 | 通过 |
| 密码保持隐藏且不改变凭据存储规则 | 通过 |
| 标签、buddy、AccessibleName 和焦点恢复正确 | 通过 |
| Client 自动测试和最小窗口离屏检查通过 | 通过 |
## 测试
- 执行的命令:
- `C:/Python310/python.exe -m py_compile src/settings_ui.py src/settings_ui_event.py src/pdd_ui_event.py src/ui_main.py src/current_client_service.py`
- `C:/Python310/python.exe -m unittest discover -s test -p "test_settings_ui_event.py" -v`
- `C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_ui_event.py" -v`
- `C:/Python310/python.exe -m unittest discover -s test -p "test_update_ui_event.py" -v`
- `C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"`
- 820×560 离屏窗口布局和密码回显检查。
- 结果:语法检查通过;专项测试通过;Client 全量 359 项测试通过;最小窗口下设备号/设备名输入框约 260/259 像素,更新账号/密码约 244/299 像素,符合预期布局;密码保持隐藏。
- **没验证到的部分**:没有在真实 100%、150%、200% Windows 显示缩放下人工查看;没有切换真实 Admin 后执行任务领取和提交;没有连接或操作 Android 设备,也没有执行采集、采购、下单或付款。
## 相关提交
- `cd2889d` 优化设置布局并支持管理端地址切换