Files
cmautobuy/docs/task/75-接入采购演练真机适配器.md
T

3.1 KiB
Raw Blame History

75 接入采购演练真机适配器

  • 类型:需求
  • 父级大工单:#1
  • 所属 MVP / 版本:#2 Client 可运行任务闭环(MVP)
  • 状态:已完成,用户验收通过
  • 日期:2026-08-10
  • Gitea 工单:#75

背景与目标

Client 已能领取采购任务,但主窗口没有注入正式采购 Adapter, 因此客户端不会声明采购能力,Admin 也不会把待领取的采购任务 派给它。本任务接入 uiautomator2 真机 Adapter,仅实现采购演练, 严格停在提交订单之前。

最终方案

  • 新增 U2PddPurchaseAdapter,复用现有 PddDeviceService 的连接与会话管理。
  • 打开并校验 PDD 商品链接,进入规格面板后精确选择颜色、尺码和数量。
  • 从最新无障碍控件树反读商品号、已选规格、数量和单价, 交给现有 PurchaseTaskService 执行一致性与限价校验。
  • 只支持已确认的 color 和 size 规格维度;出现未支持维度时 在点击规格前立即停止。
  • 验证码、登录、风控和支付页统一视为安全阻断。
  • enter_confirmation() 和 stop_before_submit() 只读取页面状态, 没有下单、提交或付款点击实现。
  • 主窗口注入生产工厂,使已选 Android 设备的 Client 可声明 dry_run 采购能力。

改了哪些文件

  • client/src/pdd_u2_purchase_adapter.py:uiautomator2 采购演练真机 Adapter。
  • client/src/ui_main.py:将生产 Adapter 工厂注入 PDD 任务事件层。
  • client/test/test_pdd_u2_purchase_adapter.py:覆盖演练正常路径和安全阻断。
  • client/test/test_pdd_ui_event.py:验证主窗口已接入生产工厂。
  • docs/client/02-architecture.md、docs/client/06-quality-security.md: 同步真机 Adapter 边界与采购安全约束。

本任务没有修改数据库表结构或 Admin 接口。

验收结果

验收标准 结果
MainWindow 注入正式采购 Adapter 工厂 通过
有已选设备时可声明 dry_run 采购能力 通过
精确选择颜色、尺码、数量并反读校验 通过
价格以分为单位交给现有限价校验 通过
验证码、登录、风控、支付页安全停止 通过
Adapter 不点击提交订单或付款 通过
Client 全量回归测试 通过

测试

  • 执行的命令:
    • C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"
    • C:/Python310/python.exe -m py_compile src/pdd_u2_purchase_adapter.py src/ui_main.py
    • 使用项目现有三份规格面板 XML 执行页面、数量和单价解析检查。
  • 结果:Client 全量 211 项测试通过;语法检查通过;三份 XML 均识别为确认面板,数量均为 1,单价分别为 1180、470 和 1288 分。
  • 未验证到的部分:未连接真实 Admin 和 Android 设备执行完整采购演练; 未对真实 PDD 页面的版本差异、库存变化和网络中断做实机验证。 按安全约束,没有也不应该执行真实提交订单或付款测试。

相关提交

  • 7e90af0 接入采购演练真机适配器