From bff9d7542d9fc316ad37f513a6d56b84e8b2b3d4 Mon Sep 17 00:00:00 2001 From: chengma Date: Mon, 10 Aug 2026 18:39:49 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#115?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/115-修复PDD页面和规格面板误超时.md | 67 ++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 docs/task/115-修复PDD页面和规格面板误超时.md diff --git a/docs/task/115-修复PDD页面和规格面板误超时.md b/docs/task/115-修复PDD页面和规格面板误超时.md new file mode 100644 index 0000000..ca97822 --- /dev/null +++ b/docs/task/115-修复PDD页面和规格面板误超时.md @@ -0,0 +1,67 @@ +# 115 修复慢速前台查询导致 PDD 页面和规格面板误超时 + +- 工单号:#115 +- 类型:缺陷 +- 父级大工单:#1 +- 所属 MVP / 版本:MVP 后续 / PDD 页面识别与采购安全 +- 状态:已完成,待用户验收 +- 日期:2026-08-10 +- Gitea 工单: + +## 背景与目标 + +真机的 `app_current()` 一次耗时约 10.688 秒,并把已经显示 PDD 的页面错误报告为 +系统设置。采购规格面板等待上限为 10 秒,旧实现每轮读取控件树后再查询前台包名, +导致规格面板已经打开仍报 `PURCHASE_PANEL_TIMEOUT`。采集和采购的商品页等待也有 +相同的慢调用风险。本任务改为优先使用最新控件树,保留安全超时和错误分类。 + +## 最终方案 + +- 采集和采购只在设备连接时读取一次前台状态,商品页轮询不再每轮调用 + `app_current()`;连接时确认的 PDD 包名只作为提示,控件树中的 PDD 节点仍是 + 焦点误报设备的主要依据。 +- 采购规格面板轮询完全使用最新控件树,必须同时识别提交前页面和“增加数量”控件 + 才允许继续选择规格。 +- 单次控件树读取跨过截止时间时,仍先分析刚返回的结果;真正未打开面板才安全超时。 +- 采购 Adapter 记住当前任务最后一次控件树。面板超时诊断记录页面类型、总读取次数、 + 面板阶段读取次数,并把脱敏 XML 保存到 `data/artifacts/purchase//`。 +- XML 中商品、账号、收货等文字统一替换为“[已脱敏]”,只保留页面判断所需标志。 +- 未修改 Admin API、SQLite、`pdd_data`、任务状态、规格价格规则和不可逆安全门禁。 + +## 改了哪些 + +- `client/src/pdd_collect_service.py`:商品页轮询移除重复前台查询。 +- `client/src/pdd_u2_purchase_adapter.py`:修复商品页和规格面板等待,增加脱敏诊断。 +- `client/test/test_pdd_collect_service.py`:覆盖慢速错误焦点和首页受控重开。 +- `client/test/test_pdd_u2_purchase_adapter.py`:覆盖慢查询、面板成功、真实超时及脱敏文件。 +- `docs/client/06-quality-security.md`:明确商品页和规格面板轮询规则。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 11 秒慢速前台查询不再耗尽规格面板超时 | 通过 | +| 焦点误报设置页时仍按 PDD 控件树识别 | 通过 | +| 采购规格面板轮询不再调用 `app_current()` | 通过 | +| 采集和采购商品页受控重开不被慢查询耗尽 | 通过 | +| 真正未打开面板仍安全失败且不选择规格 | 通过 | +| 超时包含页面类型、读取次数和脱敏 XML | 通过 | +| 登录、验证码、风控、网络和外部应用分类保持 | 通过(全量回归) | +| 真实下单安全边界未扩大 | 通过 | + +## 测试 + +- 执行的命令: + - `C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_collect_service.py"` + - `C:/Python310/python.exe -m unittest discover -s test -p "test_pdd_u2_purchase_adapter.py"` + - `C:/Python310/python.exe -m unittest discover -s test -p "test_purchase_task_service.py"` + - `C:/Python310/python.exe -m unittest discover -s test -p "test_*.py"` + - 设置 `QT_QPA_PLATFORM=offscreen` 后实例化 `src.ui_main.MainWindow` +- 结果:专项测试通过;Client 全量 330 个测试通过;离屏启动输出 `OK`。 +- **没验证到的部分**:没有重新执行失败采购任务。真机只读取当前控件树,约 860 ms + 正确分类为 `order_confirmation`;未点击规格、未点击最终提交、未下单、未付款。 + +## 相关提交 + +- `24f4ad1` fix: 记录规格面板误超时诊断 (#115) +- `8942385` fix: 采集商品页轮询避开慢速前台查询 (#115)