Files
cmautobuy/docs/task/130-设置页紧凑布局与管理端地址切换.md
T

4.0 KiB

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 全量 360 项测试通过;最小窗口下设备号/设备名输入框约 260/259 像素,更新账号/密码约 244/299 像素,符合预期布局;密码保持隐藏。
  • 没验证到的部分:没有在真实 100%、150%、200% Windows 显示缩放下人工查看;没有切换真实 Admin 后执行任务领取和提交;没有连接或操作 Android 设备,也没有执行采集、采购、下单或付款。

相关提交

  • cd2889d 优化设置布局并支持管理端地址切换