docs: 归档任务 #75

This commit is contained in:
chengma
2026-08-10 01:09:16 +08:00
parent 7e90af0dc9
commit 93bbca88a8
@@ -0,0 +1,68 @@
# 75 接入采购演练真机适配器
- 类型:需求
- 父级大工单:#1
- 所属 MVP / 版本:#2 Client 可运行任务闭环(MVP)
- 状态:已完成,待用户验收
- 日期:2026-08-10
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/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` 接入采购演练真机适配器