feat(t215): add admin order authorization
This commit is contained in:
@@ -57,8 +57,9 @@
|
||||
T-205 原子领取/租约状态机、T-206 Android 登录/有限离线、T-207 本地 VLM/候选/
|
||||
证据回传、T-211 参考图召回和 SKU 硬匹配、T-212 候选身份映射,以及 T-213 受控
|
||||
规格组合/价格核验均已完成。T-208 的原始候选观测、模型评估、确定性推荐、逐候选
|
||||
结构化人工理由和修订历史也已完成。T-214 商品持久身份和重新定位指纹也已完成;
|
||||
当前正在实现 T-215 Admin 下单授权,不得直接把候选链接或列表 ordinal 当成授权。
|
||||
结构化人工理由和修订历史也已完成。T-214 商品持久身份和重新定位指纹、T-215
|
||||
Admin 候选确认与不可变待投递授权也已完成;下一步实现 T-216 设备命令投递与确认。
|
||||
不得直接把候选链接或列表 ordinal 当成授权。
|
||||
手机从管理后端领取任务并回传结果,VLM、拼多多自动化和人工确认在 App 本地完成。
|
||||
T-206 增加有限离线执行;T-207 已复用 Roubao 端上 OpenAI 兼容适配器并加密本地 Key。
|
||||
管理后端不保存/代理 VLM,后台任务不能覆盖手机 provider 配置。
|
||||
|
||||
+12
-8
@@ -5,7 +5,7 @@
|
||||
## 当前快照
|
||||
|
||||
- 日期:2026-07-28
|
||||
- 阶段:T-215 Admin 候选确认与一次性下单授权进行中
|
||||
- 阶段:T-215 Admin 候选确认与一次性下单授权已完成,准备 T-216
|
||||
- Git:当前分支为 `main`;T-001 至 T-004、T-101 至 T-104、T-201 至 T-207、T-209、
|
||||
T-208、T-210、T-211、T-212、T-213、T-214 均已纳入 Git 历史
|
||||
- 生产代码:`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-214 Android 单元测试、Debug/Release 构建和根 `init.ps1` 通过;
|
||||
- 测试:T-215 Android 单元测试、Debug/Release 构建和根 `init.ps1` 通过;
|
||||
Debug APK `1.4.12 (17)` 已安装并启动于 PKG110
|
||||
- 后端测试:T-214 运行 `go test ./...`、`go test -race ./...`、`go vet ./...`、
|
||||
migration `up/down/up` 和带 identity 数据的降级保护均通过
|
||||
- 后端测试:T-215 运行 `go test ./...`、`go test -race ./...`、`go vet ./...`;
|
||||
v8 migration 往返、带授权数据的降级保护和 Admin 授权接口集成测试均通过
|
||||
- 原型:4 个管理 Web 页面和 7 个 Android 页面均可离线独立打开;Playwright
|
||||
以 1440×900、390×844、360×800 验证 36 个页面/视口组合,无页面横向溢出、
|
||||
脚本错误或外部请求,Android 可见交互控件均不小于 44px
|
||||
@@ -64,6 +64,10 @@
|
||||
已上传 asset 后,在 v7 表中生成 execution-scoped `candidate_key`。Admin API/Web
|
||||
展示 key、指纹、原始 observation、模型/人工结论和截图;缺少真实平台 URL 时保持
|
||||
空值,后端不请求第三方 URL。
|
||||
- T-215 下单授权:非空候选回传原子进入 `WAITING_CONFIRMATION`;Admin 按
|
||||
candidate key 选择并为全部候选填写结构化理由,服务端在同一事务追加人工 review、
|
||||
不可变授权快照、事件和幂等记录。领取前可按版本改选,已投递后禁改;页面明确仅
|
||||
授权创建设备端待付款订单,不授权付款。
|
||||
- Workflow:纯 Kotlin runner 已支持步骤 timeout、最多 3 次 retry、安全阻塞、
|
||||
用户停止和单 runner 并发拒绝;T-102 已接入搜索加有界候选采集五步
|
||||
- TaskSource:严格 CLI 已生成并验证真实私有 ProbeTask;默认 APK 不含私有 fixture
|
||||
@@ -92,7 +96,7 @@
|
||||
已用 CLI 真实导入并逐字段/图片哈希验证,生成物位于被忽略的 `.local/`
|
||||
- 标准启动路径:`$env:RUN_START_COMMAND="1"; .\init.ps1`
|
||||
- 标准验证路径:`.\init.ps1`
|
||||
- 当前 blocker:T-214 无阻塞。真实 VLM 服务地址、模型、设备级测试凭证、成本上限
|
||||
- 当前 blocker:T-215 无阻塞。真实 VLM 服务地址、模型、设备级测试凭证、成本上限
|
||||
和数据留存尚未确认;当前只支持单 SKU/JPEG;候选探针截图要求 Android 11/API 30+
|
||||
|
||||
## 当前目录
|
||||
@@ -123,7 +127,7 @@
|
||||
| `docs/tasks/T-213.md` | DONE | 真机选择目标 SKU、读取组合价并安全返回 |
|
||||
| `docs/tasks/T-208.md` | DONE | 归一化候选决策数据并增加结构化人工 review |
|
||||
| `docs/tasks/T-214.md` | DONE | 建立 execution-scoped candidate key 与设备采集指纹 |
|
||||
| `docs/tasks/T-215.md` | DOING | Admin 按 candidate key 选择并创建不可变待投递授权 |
|
||||
| `docs/tasks/T-215.md` | DONE | Admin 按 candidate key 选择并创建不可变待投递授权 |
|
||||
| `docs/design/` | 已确认 | T-202 原型索引、4 个管理页和 7 个 Android 页面 |
|
||||
| `deepseek总结.txt` | 已有 | 历史讨论摘要,不是正式需求权威 |
|
||||
| `android-buyer/` | 已有 | Roubao `main` 固定 commit 的 Android 基线 |
|
||||
@@ -134,8 +138,8 @@
|
||||
|
||||
## 任务摘要
|
||||
|
||||
- 已完成:T-001 至 T-004、T-101 至 T-104、T-201 至 T-214。
|
||||
- 正在进行:T-215 Admin 候选确认与一次性下单授权。
|
||||
- 已完成:T-001 至 T-004、T-101 至 T-104、T-201 至 T-215。
|
||||
- 正在进行:准备 T-216 设备命令投递与确认。
|
||||
- 下一步:依次实现设备命令、订单 dry-run、单次提交对账和
|
||||
付款提醒。
|
||||
|
||||
|
||||
+13
-8
@@ -4,7 +4,7 @@ title: Admin 候选确认与一次性下单授权
|
||||
phase: 2
|
||||
deps:
|
||||
- T-214
|
||||
status: DOING
|
||||
status: DONE
|
||||
created: 2026-07-28
|
||||
context_ref: 56e7a2b
|
||||
work_branch: null
|
||||
@@ -124,13 +124,13 @@ REVOKED/SUPERSEDED`;T-215 只产生 `PENDING_DELIVERY` 和 `SUPERSEDED`。存
|
||||
|
||||
## 验收要点
|
||||
|
||||
- [ ] 非空候选批次原子进入 `WAITING_CONFIRMATION`,重复回传不重复增加事件/version。
|
||||
- [ ] Admin 请求只用 candidate key,完整覆盖候选且每项接受/拒绝都有合法理由。
|
||||
- [ ] review、授权、旧授权 supersede、任务事件和幂等记录原子提交。
|
||||
- [ ] 跨任务/execution、旧 hash/version、伪造 key、缺 identity 和并发双授权被拒绝。
|
||||
- [ ] 授权数量/SKU/价格/指纹均由服务端快照,Admin 不能篡改。
|
||||
- [ ] Admin API/Web 可选候选、查看证据和理由,明确只创建待付款订单且不授权付款。
|
||||
- [ ] v8 migration、Go test/race/vet、根验证和管理页面桌面/移动视口通过。
|
||||
- [x] 非空候选批次原子进入 `WAITING_CONFIRMATION`,重复回传不重复增加事件/version。
|
||||
- [x] Admin 请求只用 candidate key,完整覆盖候选且每项接受/拒绝都有合法理由。
|
||||
- [x] review、授权、旧授权 supersede、任务事件和幂等记录原子提交。
|
||||
- [x] 跨任务/execution、旧 hash/version、伪造 key、缺 identity 和并发双授权被拒绝。
|
||||
- [x] 授权数量/SKU/价格/指纹均由服务端快照,Admin 不能篡改。
|
||||
- [x] Admin API/Web 可选候选、查看证据和理由,明确只创建待付款订单且不授权付款。
|
||||
- [x] v8 migration、Go test/race/vet、根验证和管理页面桌面/移动视口通过。
|
||||
|
||||
## 边界
|
||||
|
||||
@@ -144,3 +144,8 @@ REVOKED/SUPERSEDED`;T-215 只产生 `PENDING_DELIVERY` 和 `SUPERSEDED`。存
|
||||
- 2026-07-28:T-214 实现提交 `56e7a2b` 后领取。决定复用
|
||||
`WAITING_CONFIRMATION`,并把 Admin review 与一次性授权放在同一事务;设备投递和
|
||||
页面动作继续保持为后续独立权限层。
|
||||
- 2026-07-28:完成 v8 migration、候选就绪原子状态迁移、Admin API/SSR 表单、
|
||||
不可变授权快照、修订/幂等/并发保护和审计历史。`go test ./...`、
|
||||
`go test -race ./...`、`go vet ./...` 与根 `init.ps1` 通过。
|
||||
- 2026-07-28:真实 Gin handler、嵌入模板和 CSS 在 Playwright `1440x900`、
|
||||
`390x844` 通过;均无横向溢出,主要控件高度至少 44px,控制台无错误。
|
||||
|
||||
Reference in New Issue
Block a user