From 0f5d38b08f6bec2e7415a9de854988325a6f5c2f Mon Sep 17 00:00:00 2001 From: chengma Date: Mon, 10 Aug 2026 19:46:29 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#122?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/122-只读核单多视口证据合并.md | 64 +++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docs/task/122-只读核单多视口证据合并.md diff --git a/docs/task/122-只读核单多视口证据合并.md b/docs/task/122-只读核单多视口证据合并.md new file mode 100644 index 0000000..7e859c3 --- /dev/null +++ b/docs/task/122-只读核单多视口证据合并.md @@ -0,0 +1,64 @@ +# 122 修复只读核单前台误判并合并订单详情多视口字段 + +- 类型:缺陷 +- 父级大工单:#1 +- 所属 MVP / 版本:MVP 后续真实采购核单 +- 状态:已完成,待用户验收 +- 日期:2026-08-10 +- Gitea 工单: + +## 背景与目标 + +真实采购进入待付款订单详情后,部分设备会让 `app_current()` 错误返回 +系统设置包名。同时,商品、规格、数量和金额位于订单详情上半屏,订单号和 +下单时间位于下半屏。旧代码因此会中断核单,或只得到字段不完整的候选。 + +本任务让核单优先使用可靠控件树判断 PDD 前台,并在确认页面只有一个订单 +上下文时合并相邻视口证据。最终候选仍必须通过原有严格匹配。 + +## 最终方案 + +- 控件树内至少有 3 个 PDD 包节点时,直接认定 PDD 在前台;证据不足时才调用 + `app_current()` 兜底。 +- 页面只有一组“去支付”操作且至多一个订单号时,才允许累积订单详情字段。 +- 每次向下滚动后合并商品编号、规格、数量、金额、订单号、下单时间和付款状态。 +- 订单号或其他关键字段冲突时立即放弃跨视口合并,保留原有人工核对结果。 +- 不改变最终严格匹配,不点击支付或取消订单,也不提供重新下单入口。 + +原工单给出的定向测试命令把 `client/test` 当作 Python 包,但该目录没有 +`__init__.py`。实际验证改用 `unittest discover`,测试范围不变。 + +## 改了哪些 + +- `client/src/pdd_u2_purchase_reconcile_adapter.py`:增加控件树前台判断、单订单 + 详情识别、部分证据解析和无冲突合并。 +- `client/test/test_pdd_u2_purchase_reconcile_adapter.py`:增加多视口合并、错误 + 前台结果和多订单防误合并测试。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 可靠 PDD 控件树不受错误 `app_current()` 影响 | 通过 | +| 同一订单上下屏字段能合并为完整候选 | 通过 | +| 合并结果继续执行现有严格匹配 | 通过 | +| 多订单或关键字段冲突时不跨订单合并 | 通过 | +| 不包含支付、取消订单或再次下单操作 | 通过 | +| Client 自动化测试通过 | 通过,349 项 | + +## 测试 + +- 执行的命令: + - `C:/Python310/python.exe -m unittest discover -s test -p test_pdd_u2_purchase_reconcile_adapter.py -v` + - `C:/Python310/python.exe -m unittest discover -s test -p test_purchase_recovery.py -v` + - `C:/Python310/python.exe -m unittest discover -s test -v` + - `git diff --check` +- 结果:定向测试分别通过 6 项和 8 项;完整 Client 测试 349 项全部通过; + 差异检查通过。 +- **没验证到的部分**:没有用真实 Android 设备重新执行自动核单。当前旧任务已经 + 进入 `reconcile_manual_review`,按安全状态机不会因本次升级自动重试;未修改其 + 数据库状态,也未点击支付、取消订单或再次下单。 + +## 相关提交 + +- `a8f8e73` fix: 合并只读核单多视口证据 (#122)