docs(task): replan Gate3 for combined submit panel
This commit is contained in:
+37
-37
@@ -1,6 +1,6 @@
|
||||
---
|
||||
id: T-107
|
||||
title: 固化确认页、闸门三与提交控件只读判据
|
||||
title: 固化合并式最终提交面板闸门三与提交控件只读判据
|
||||
phase: 1
|
||||
deps: [T-106]
|
||||
status: TODO
|
||||
@@ -12,22 +12,20 @@ needs_device: true
|
||||
needs_human_review: true
|
||||
write_paths:
|
||||
- docs/tasks/T-107.md
|
||||
- client/src/cmbuyer_client/pdd/order_confirm.py
|
||||
- client/src/cmbuyer_client/pdd/order_confirm_runner.py
|
||||
- client/tests/pdd/test_order_confirm.py
|
||||
- client/tests/pdd/fixtures/order_confirm_source_8_17_0.xml
|
||||
- client/tests/pdd/fixtures/order_confirm_gate3_8_17_0.xml
|
||||
- client/tests/pdd/fixtures/order_submit_control_8_17_0.xml
|
||||
- client/tests/pdd/fixtures/order_confirm_exit_8_17_0.xml
|
||||
- client/scripts/run_t107_order_confirm_dry_run.py
|
||||
- client/src/cmbuyer_client/pdd/final_submit_panel.py
|
||||
- client/src/cmbuyer_client/pdd/final_submit_panel_runner.py
|
||||
- client/tests/pdd/test_final_submit_panel.py
|
||||
- client/tests/pdd/fixtures/final_submit_panel_8_17_0.xml
|
||||
- client/tests/pdd/fixtures/final_submit_panel_exit_8_17_0.xml
|
||||
- client/scripts/run_t107_final_submit_panel_dry_run.py
|
||||
- docs/api.md
|
||||
- docs/current-state.md
|
||||
---
|
||||
|
||||
<!-- BEGIN VIKUNJA EXPORT id=42 synced=2026-08-04T14:05:17Z sha256=56bb3d2575e60ac2ede9ba9c86178f5eefc4470d06b973d9f701fbc8c91635da -->
|
||||
<!-- BEGIN VIKUNJA EXPORT id=42 synced=2026-08-06T02:52:05Z sha256=fa2a65bb48ad33c6179d848e4265fb1db8584d73b3cf986b71cc38cec05a00d6 -->
|
||||
## 问题 / 背景
|
||||
|
||||
T-106 将形成确认页导航前、闸门三、最终提交控件可见态和一次返回后的四组真机证据。T-107 只从这些已由人确认的本项目事实固化一次性确认页导航、闸门三读取、最终控件纯观察与一次安全返回;绝不点击最终提交。
|
||||
T-106 真机证据证明当前拼多多 8.17.0 使用合并式最终提交面板:没有独立确认页导航;面板顶部是 Gate2 总额,红色“提交订单 ¥金额”会直接创建待付款订单。T-107 只固化该稳定面板的 Gate3 只读金额、最终控件观察与一次安全返回;绝不点击最终提交。
|
||||
|
||||
## 关联需求与交互
|
||||
|
||||
@@ -39,22 +37,22 @@ T-106 将形成确认页导航前、闸门三、最终提交控件可见态和
|
||||
|
||||
## 方案
|
||||
|
||||
1. 从 T-106 四态证据提取只含必要节点且去隐私的最小 fixture;页面版本、前台包、来源页面、导航控件或目标页面任一漂移都零点击。
|
||||
2. go_to_order_confirm 只允许点击 T-106 人工证明的导航前状态中精确唯一的已批准控件一次;点击后等待确认页精确后置条件。超时或结果不明不重试,不使用相似文案、OCR、裸坐标或其他购买按钮兜底。
|
||||
3. observe_gate3 只从确认页读取颜色、尺码、数量和应付总额;必须等于目标规格/数量且金额为规范十进制、不超最高总价。不得从详情页、规格面板或其他数字补值。
|
||||
4. 最终“提交订单”控件由纯 XML observer 只读:记录精确文本、匹配数、启用态和是否存在唯一可点击祖先,但不返回 selector、坐标、节点、祖先句柄或任何可点击对象;observer 不持有 device。
|
||||
5. Gate3Observation 包含规格、数量、确认页金额、最高总价、submit_control_text/match_count/enabled、确认页原始 screenshot_path 和 UTC captured_at。
|
||||
6. 观察完成后 exit_order_confirm_safely 只发送一次 Android Back,并稳定验证 T-106 post-back 正判据;超时/结果不明不重试,SystemUI/锁屏/其他 PDD 页/外部页都不是成功。
|
||||
7. runner 是永久围栏前 dry-run capability,不接受 allow_submit/dry_run=False 开关;composition/import 静态不可达 fence、SubmissionPermit、submit_order_once、payment。
|
||||
8. T-107 不上传证据、不定义 T-205 事件码、不申请围栏、不创建待付款订单。任何失败只停止并等待人工,不自动回 DRAFT/释放/转领。
|
||||
1. 从 T-106 合并式面板和人工一次返回证据提取不含个人信息的最小 fixture;页面版本、前台包、规格、数量、两个金额角色或结构任一漂移都零提交动作。
|
||||
2. 删除 go_to_order_confirm 导航能力。观察入口只接受已通过 Gate2 且仍停留在证据绑定合并式面板的实时状态;T-107 成功路径不点击任何页面控件。
|
||||
3. observe_gate3 分别复核目标颜色、尺码、数量、Gate2 顶部总额,并从唯一结构化文本“提交订单 ¥{金额}”读取 gate3_submit_amount;两金额必须规范、严格相等且不超最高总价。
|
||||
4. 最终控件纯 XML observer 记录完整文本、匹配数、启用态以及最近可点击祖先是否唯一;不返回 selector、坐标、节点、祖先句柄或可点击对象,observer 不持有 device。
|
||||
5. Gate3Observation 包含规格、数量、gate2_panel_total_price、gate3_submit_amount、最高总价、submit_control_text/match_count/enabled/nearest_clickable_ancestor_unique、原始 screenshot_path 和 UTC captured_at。
|
||||
6. 观察完成后 exit_final_submit_panel_safely 只发送一次 Android Back,并稳定验证 T-106 返回后正判据;超时或结果不明不重试。
|
||||
7. runner 是永久围栏前 dry-run capability,不接受 allow_submit/dry_run=False;composition/import 静态不可达 fence、SubmissionPermit、submit_order_once、payment。
|
||||
8. T-107 不上传证据、不申请围栏、不创建待付款订单。任何失败只停止并等待人工。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- fixture 正反例覆盖来源页、唯一导航控件、确认页、规格/数量/金额、最终控件 0/1/2 个、一次返回后置条件与版本漂移。
|
||||
- 动作轨迹证明成功路径仅一个已批准导航点击和一次 Back;导航结果不明与 Back 结果不明均不重试。
|
||||
- Gate3 金额用 Decimal,规格/数量/上限严格;最终控件观察 DTO 不含 selector/坐标/节点/可点击对象。
|
||||
- AST/import closure 证明没有 fence/result/SubmissionPermit/click_permitted/submit_order_once/payment,最终控件 observer 无 device/click。
|
||||
- 真机人工确认闸门三、submit match count=1、一次安全返回、未点击最终提交、未创建订单/进入支付。
|
||||
- fixture 正反例覆盖合并式面板、规格/数量、Gate2 顶部金额、Gate3 最终控件金额、0/1/2 个文本、最近可点击祖先、一次返回和版本漂移。
|
||||
- 成功轨迹证明页面控件点击数为 0,仅一次 Back;Back 结果不明不重试。
|
||||
- 金额使用 Decimal,Gate3 严格等于 Gate2且不超上限;按钮金额绝不用于 Gate1/Gate2。
|
||||
- Gate3 DTO 不含 selector/坐标/节点/可点击对象;AST/import closure 不含 fence/result/permit/submit/payment。
|
||||
- 真机人工确认两金额一致、submit match count=1、最近可点击祖先唯一、一次安全返回,未点击最终提交、未创建订单/进入付款。
|
||||
- client 全量 unittest、compileall、完整 init、上下文校验、Vikunja 导出与 diff-check 通过;agent 保持 DOING 等人工验收。
|
||||
|
||||
## 执行记录
|
||||
@@ -66,22 +64,24 @@ T-106 将形成确认页导航前、闸门三、最终提交控件可见态和
|
||||
|
||||
## 边界
|
||||
|
||||
- 任何确认页来源判据、导航控件、目标页结构、闸门三节点、最终提交控件和返回后置条件都只能来自
|
||||
T-106 已由人确认的四态真机证据,并与拼多多 8.17.0/goods_id 绑定。不得从前序项目、旧 XML、
|
||||
Activity 名、相似文案、OCR、裸坐标或推理补判据。
|
||||
- `go_to_order_confirm()` 只允许在精确来源页点击 T-106 已证明的唯一导航控件一次;超时或结果不明
|
||||
不重试,不尝试其他购买按钮,不把规格面板中任意“提交订单 ¥...”文本直接当成已批准入口。
|
||||
- 闸门三只从确认页读取颜色、尺码、数量和应付总额;必须严格等于目标规格/数量且金额为规范十进制、
|
||||
不超最高总价。不得用详情页、规格面板或其他位置数字凑齐,不得使用浮点数。
|
||||
- 最终“提交订单”控件只能由不持有 device/click 能力的纯 XML observer 只读。结果可含精确文本、
|
||||
匹配数、启用态和“唯一可点击祖先是否存在”的布尔值,但不得返回 selector、坐标、节点、祖先句柄
|
||||
或任何可点击对象;runner 不得对该控件或祖先调用 click。
|
||||
- 合并式最终提交面板、Gate2 顶部金额、Gate3 最终控件金额、控件结构和返回后置条件只能来自 T-106
|
||||
已由人确认的真机证据,并与拼多多 8.17.0/goods_id 绑定。不得从前序项目、旧 XML、Activity 名、
|
||||
相似文案、OCR、裸坐标或推理补判据。
|
||||
- 不存在也不得重新引入 `go_to_order_confirm()` 或任何确认页导航点击。T-107 成功路径对页面控件的
|
||||
点击数必须为 0;只有观察完成后的一次 Android Back。
|
||||
- Gate2 仍只从面板顶部已批准角色读取目标数量总额;Gate3 只从最终控件的结构化精确文本
|
||||
`提交订单 ¥{规范十进制金额}` 读取。两个候选必须分别唯一、严格相等且不超最高总价;最终控件金额
|
||||
绝不能充当 Gate1/Gate2,详情页和其他数字仍全部禁止。
|
||||
- 最终控件只能由不持有 device/click 能力的纯 XML observer 只读。结果可含完整文本、匹配数、启用态
|
||||
和“最近可点击祖先是否唯一”的布尔值,但不得返回 selector、坐标、节点、祖先句柄或任何可点击对象;
|
||||
runner 不得对该控件或祖先调用 click。
|
||||
- 观察完成后只允许一次 Android Back,并必须命中 T-106 固化的稳定 post-back 正判据;超时或结果
|
||||
不明不重试。SystemUI/锁屏、其他 PDD 页面、外部支付/安全验证页或仅“确认页消失”都不是退出成功。
|
||||
不明不重试。SystemUI/锁屏、其他 PDD 页面、付款/安全验证页或仅“面板消失”都不是退出成功。
|
||||
- Runner 是永久围栏前 dry-run capability,不接受 `allow_submit`、`dry_run=False` 等开关;构造和
|
||||
import 闭包不得引用 submission fence、SubmissionPermit、`click_permitted`、`submit_order_once()`、
|
||||
结果调和、支付、免密支付、先用后付或任何扣款能力。
|
||||
- T-107 不上传证据、不定义 T-205 事件、不申请围栏、不创建待付款订单。任何失败只停止并等待人工,
|
||||
不自动释放 claim/授权、不回 DRAFT、不转领或重试页面动作。
|
||||
- `needs_device: true`:agent 不得自行标 DONE。只有人确认闸门三、最终控件 match count=1、一次安全
|
||||
返回,且未点击最终提交、未创建订单、未进入支付相关页面,任务才可完成。
|
||||
- `needs_device: true`:agent 不得自行标 DONE。只有人确认 Gate2/Gate3 两位置金额严格相等、最终控件
|
||||
match count=1、最近可点击祖先唯一、一次安全返回,且未点击最终提交、未创建订单、未进入付款页面,
|
||||
任务才可完成。
|
||||
|
||||
Reference in New Issue
Block a user