feat(t218): reconcile single order submissions
This commit is contained in:
+18
-15
@@ -5,7 +5,7 @@
|
||||
## 当前快照
|
||||
|
||||
- 日期:2026-07-28
|
||||
- 阶段:T-218 单次订单提交与订单回读已领取,合约冻结中
|
||||
- 阶段:T-218 单次订单提交与订单回读已完成;下一项 T-219
|
||||
- Git:当前分支为 `main`;T-001 至 T-004、T-101 至 T-104、T-201 至 T-217
|
||||
均按文档提交、实现提交的顺序纳入历史
|
||||
- 生产代码:`android-buyer/` 已接入 Roubao Android 源码
|
||||
@@ -17,10 +17,10 @@
|
||||
- 本机 Android 工具:JDK 17.0.13、Command-line Tools 22.0、SDK 34、
|
||||
Build Tools 34.0.0、Platform Tools/ADB 37.0.0;用户级 SDK 环境变量已设置
|
||||
- Android Studio:未安装;`winget` 静默安装卡住后已终止,不阻塞命令行构建
|
||||
- 测试:T-217 Android Debug/Release 单元测试与构建和根 `init.ps1` 通过;
|
||||
Debug APK `1.4.14 (19)` 已覆盖安装到 PKG110
|
||||
- 后端测试:T-217 运行 `go test ./...`、`go test -race ./...`、`go vet ./...`;
|
||||
v10 migration 往返、带 dry-run 数据的降级保护及 start/ready HTTP 集成测试通过
|
||||
- 测试:T-218 Android Debug/Release 单元测试与构建和根 `init.ps1` 通过;
|
||||
Debug APK `1.4.15 (20)` 已覆盖安装到 PKG110
|
||||
- 后端测试:T-218 运行 `go test ./...`、`go test -race ./...`、`go vet ./...`;
|
||||
v11 migration 降级保护及 fence/replay/manual-review/reconcile HTTP 集成测试通过
|
||||
- 原型:4 个管理 Web 页面和 7 个 Android 页面均可离线独立打开;Playwright
|
||||
以 1440×900、390×844、360×800 验证 36 个页面/视口组合,无页面横向溢出、
|
||||
脚本错误或外部请求,Android 可见交互控件均不小于 44px
|
||||
@@ -76,9 +76,10 @@
|
||||
唯一颜色/尺码、数量和预算重新核验 Admin 选择;确认页 WebView 折叠时使用端上
|
||||
中文 OCR 做只读 fail-closed 证据提取。后端保存 v10 READY、截图、SKU、数量、
|
||||
单价/总额和事件;无障碍动作集中不含订单提交或支付。
|
||||
- T-218 目标:后端先创建一次性 submission fence,App 点击前持久化
|
||||
`CLICK_ASSUMED`,最多点击一次精确“提交订单”;进程/网络不确定后只回读待付款
|
||||
订单或转人工,绝不重复提交或点击支付。
|
||||
- T-218 单次提交:后端先创建唯一 submission fence,App 点击前持久化
|
||||
`CLICK_ASSUMED`,最多点击一次精确“提交订单”;进程/网络不确定和租约到期后只
|
||||
回读待付款订单或转人工,绝不重复提交或点击支付。v11 保存围栏、幂等操作、订单号/
|
||||
时间、证据和审计事件,唯一对账后才写 `order_submitted=true`。
|
||||
- Workflow:纯 Kotlin runner 已支持步骤 timeout、最多 3 次 retry、安全阻塞、
|
||||
用户停止和单 runner 并发拒绝;T-102 已接入搜索加有界候选采集五步
|
||||
- TaskSource:严格 CLI 已生成并验证真实私有 ProbeTask;默认 APK 不含私有 fixture
|
||||
@@ -92,11 +93,11 @@
|
||||
- 离线执行:默认 30 分钟有限授权和 30 秒 best-effort heartbeat 已实现;PKG110
|
||||
真机断开临时后端 95 秒后保持同一 execution,重连后滑动续期;到期持久安全停止,
|
||||
RUNNING 不自动重新分配
|
||||
- 测试设备:OnePlus PKG110,Android 16/API 36;已安装肉包 `1.4.14 (19)`;拼多多
|
||||
- 测试设备:OnePlus PKG110,Android 16/API 36;已安装肉包 `1.4.15 (20)`;拼多多
|
||||
`8.17.0 (81700)`
|
||||
- 设备就绪:拼多多首页、文字/图片搜索、双列候选卡、详情截图和返回均已通过 8.17.0
|
||||
真机验证;采购员已在 ColorOS 设置中手动启用肉包采购无障碍,APK 覆盖安装后授权
|
||||
保持且服务已连接
|
||||
真机验证;ColorOS 本次覆盖安装后移除了肉包采购无障碍,重新启用后服务已连接,
|
||||
因此每次覆盖安装后都必须复核该系统授权
|
||||
- 拼多多 8.17 兼容:结果页可识别新版显示查询词的文本搜索栏和“推荐、手机、女装”等
|
||||
分类栏,也保留旧版“综合、销量、价格、筛选”识别;长任务搜索词的拼多多省略显示须
|
||||
至少两个按序片段对应原词才通过。每次候选探针会重写本次搜索词,不复用已有结果页。
|
||||
@@ -107,8 +108,9 @@
|
||||
已用 CLI 真实导入并逐字段/图片哈希验证,生成物位于被忽略的 `.local/`
|
||||
- 标准启动路径:`$env:RUN_START_COMMAND="1"; .\init.ps1`
|
||||
- 标准验证路径:`.\init.ps1`
|
||||
- 当前 blocker:T-218 实现无代码阻塞;当前真机确认页缺少已配置收货地址,因此
|
||||
真实提交 smoke 必须按合约阻塞,不能为测试自动添加地址。真实 VLM 服务地址、模型、
|
||||
- 当前 blocker:T-219 无代码阻塞;当前真机确认页缺少已配置收货地址且显示
|
||||
“立即支付/先用后付”,T-218 已按合约证明不创建围栏、不点击。不能为测试自动添加
|
||||
地址或跨过付款边界。真实 VLM 服务地址、模型、
|
||||
设备级测试凭证、成本上限和数据留存尚未确认;当前只支持单 SKU/JPEG;候选探针
|
||||
截图要求 Android 11/API 30+
|
||||
|
||||
@@ -143,6 +145,7 @@
|
||||
| `docs/tasks/T-215.md` | DONE | Admin 按 candidate key 选择并创建不可变待投递授权 |
|
||||
| `docs/tasks/T-216.md` | DONE | App 主动拉取并先加密落盘再确认同一条下单命令 |
|
||||
| `docs/tasks/T-217.md` | DONE | 重新核对已授权商品并选择 SKU/数量,停在最终提交前 |
|
||||
| `docs/tasks/T-218.md` | DONE | 单次提交围栏、最多一次提交动作和待付款订单唯一对账 |
|
||||
| `docs/design/` | 已确认 | T-202 原型索引、4 个管理页和 7 个 Android 页面 |
|
||||
| `deepseek总结.txt` | 已有 | 历史讨论摘要,不是正式需求权威 |
|
||||
| `android-buyer/` | 已有 | Roubao `main` 固定 commit 的 Android 基线 |
|
||||
@@ -153,8 +156,8 @@
|
||||
|
||||
## 任务摘要
|
||||
|
||||
- 已完成:T-001 至 T-004、T-101 至 T-104、T-201 至 T-217。
|
||||
- 进行中:T-218 单次订单提交与订单回读。
|
||||
- 已完成:T-001 至 T-004、T-101 至 T-104、T-201 至 T-218。
|
||||
- 进行中:无。
|
||||
- 下一步:T-219 Admin 待付款提醒与端到端验收。
|
||||
|
||||
## 当前可运行内容
|
||||
|
||||
Reference in New Issue
Block a user