docs: align Gate3 with combined submit panel

This commit is contained in:
QiuSW
2026-08-06 11:02:41 +08:00
parent 3abbe1040d
commit 23445d0c4b
23 changed files with 205 additions and 119 deletions
+15 -8
View File
@@ -294,7 +294,7 @@ claim/renew 的格式错误固定为 `400 {"error":"invalid_request"}`,超限
}
```
- 允许规格面板和确认页截图保留页面已显示的地址/手机号;不要求遮罩或裁剪。
- 允许规格面板和合并式最终提交面板截图保留页面已显示的地址/手机号;不要求遮罩或裁剪。
- 不接受 XML、目录、manifest、本机绝对路径、外部支付页截图或支付凭据。
- T-204 只开放 `kind=SKU_PANEL_GATE_1`;后续 kind 必须由对应真机证据任务收紧扩展。
- `privacy_tier` 只能是 `INTERNAL_RAW`;时间必须是以 `Z` 结尾的 UTC RFC 3339。
@@ -328,19 +328,26 @@ claim/renew 的格式错误固定为 `400 {"error":"invalid_request"}`,超限
"gate1_unit_price": "12.88",
"gate2_panel_total_price": "32.76",
"quantity_read": 2,
"confirm_page_amount": "32.76",
"submit_control_match_count": 1
"gate3_submit_amount": "32.76",
"submit_control_text": "提交订单 ¥32.76",
"submit_control_match_count": 1,
"nearest_clickable_ancestor_unique": true
}
```
`gate3_submit_amount` 是目标数量下合并式最终提交面板红色控件显示的金额;旧
`confirm_page_amount` / `confirm_amount` 语义已被 T-106 真机事实否定。当前仓库历史 migration 仍含旧列,
T-210/T-208 消费前必须用受保护 migration 改为 `gate3_submit_amount`;迁移未完成不得开放 submission fence。
服务端在一个事务中校验:任务/版本/claim/attempt 一致;授权有效未消费且字段等于任务快照;
规格与授权相等;数量相等;闸门一单价预检通过;闸门二目标数量面板总额不超过 `total_price_cap`;
确认页金额严格等于闸门二面板总额且再次不超过上限;提交控件计数为一;此前不存在该授权或 attempt
Gate3 最终控件金额严格等于闸门二面板总额且再次不超过上限;完整结构化文本必须唯一、启用且最近
可点击祖先唯一;此前不存在该授权或 attempt
的 submission。随后创建唯一 `order_submission`,授权转 `FENCED`,任务保持不可重领。
`gate2_panel_total_price` 是目标数量下规格面板顶部证据角色的总额,不是单价。拼多多多件优惠可能
非线性,禁止用 `gate1_unit_price × quantity_read` 推导它,也禁止继续用旧字段名
`gate2_unit_price` 承载总额。底部“提交订单 ¥...”文字不属于价格来源。
`gate2_unit_price` 承载总额。最终红色控件金额只能作为 Gate3,绝不能用于 Gate1/Gate2 或为顶部金额兜底。
首次明确成功响应:
@@ -349,7 +356,7 @@ claim/renew 的格式错误固定为 `400 {"error":"invalid_request"}`,超限
"submission_id": "f3c9f507-7473-4fa6-8d71-8786c34c6301",
"status": "FENCED",
"click_permitted": true,
"submit_text": "提交订单"
"submit_control_text": "提交订单 ¥32.76"
}
```
@@ -448,10 +455,10 @@ events/fail/fence/result 或完整 `ResultSink`。T-304/T-306 必须通过 `Dura
| `read_sku_unit_price()` | 已确认规格面板 | 十进制单价 | 排除原价、按钮价和歧义候选 |
| `set_quantity_and_readback()` | 授权数量 | 实际数量 | 精确读回,否则停 |
| `read_sku_panel_total_price()` | 已读回目标数量 | 十进制面板总额 | 只读证据绑定的顶部当前金额;排除底部提交按钮金额和歧义候选 |
| `go_to_order_confirm()` | 已通过闸门二 | 确认页摘要 | 后续真机任务取证后才实现 |
| `observe_final_submit_panel()` | 已通过闸门二且仍在同一面板 | Gate3 摘要 | 复核规格/数量;只读最终控件结构化金额;零页面点击 |
| `submit_order_once()` | 不可伪造的首次 `SubmissionPermit` | 观察结果 | 许可、闸门、唯一控件全校验;点前持久化;绝不重试 |
T-103 只实现隔离的 `SkuSelectionFlow`:前四项加安全退出。它的模块和静态依赖不得引用数量、确认页、
T-103 只实现隔离的 `SkuSelectionFlow`:前四项加安全退出。它的模块和静态依赖不得引用数量、最终提交面板、
围栏、提交或支付能力。后续任务按取证顺序组合成生产 `SinglePassPurchaseFlow`。
## 四、实现前仍需定值