feat: 固定创建真实采购任务 (#112)
This commit is contained in:
@@ -275,7 +275,6 @@ CMAutoBuy/ 整个文件夹拷到任何机器都能用
|
||||
| # | 待确认什么 | 临时默认值(先这么做) | 定下来之前会卡住什么 |
|
||||
|---|---|---|---|
|
||||
| 1 | Admin 的认证方式和 Client 注册方式 | Mock Gateway 不做认证;HTTP 实现预留 `Authorization: Bearer` 请求头,token 从设置读 | 只卡真实 HTTP 联调,不卡 MVP |
|
||||
| 2 | 真实采购启用条件和人工确认策略 | 真实下单开关**保持关闭**,一律走演练模式 | 卡真实下单,不卡 MVP |
|
||||
| 3 | 价格允许偏差 | 默认 0 分(即实际价格必须等于预期价格才继续),可在设置页改 | 不卡。先按最严的来 |
|
||||
| 4 | 是否存在颜色、尺码之外的第三个规格维度 | **按"可能有任意多个维度"实现**,用 `dimensions` 数组,不要写死两个 | 不卡。写死才会返工 |
|
||||
|
||||
@@ -283,6 +282,7 @@ CMAutoBuy/ 整个文件夹拷到任何机器都能用
|
||||
|
||||
**已定案(不再是待确认项):**
|
||||
|
||||
- Admin 新建采购任务固定为 `execution_mode=live`,不再提供演练选择;Client 本地授权仍默认关闭,只有绑定 Client ID、Android 设备且通过安全门禁后才声明 live 能力和领取任务。
|
||||
- Admin 只分配任务给指定 Client,Client 不读全局任务池。见 [04](04-admin-api-contract.md) §5.1。
|
||||
- **没有租约、没有心跳、没有状态回查。** 任务流程只有领取、提交结果、提交失败三个调用;设置页另有无任务副作用的幂等 Client 登记调用。见 [04](04-admin-api-contract.md) §1、§4.1。
|
||||
- 本地只存已领取任务,已完成任务**永久保留**。诊断产物(截图、XML、日志)仍按 `diagnostics.retention_days` 清理,两者不是一回事。见 [03](03-data-model.md) §3.1。
|
||||
|
||||
@@ -356,9 +356,9 @@ Client 与 Admin 的任务交互只有三种调用:领一个任务、提交结
|
||||
|
||||
`TaskDispatcher` 是能力声明的唯一入口。没有可用采购 Adapter、没有已保存
|
||||
Android 设备或本地持久化未准备好时,只声明 `collect`;条件满足时才声明
|
||||
`collect,purchase`。真实下单授权默认关闭;只有本地授权同时匹配当前 Client ID、
|
||||
已保存 Android 设备且 live Adapter 就绪时才声明 `purchase_mode=live`,否则声明
|
||||
`dry_run`。领取响应必须先完整校验并
|
||||
`collect,purchase`。Admin 新建采购任务固定为 live,但 Client 本地授权仍默认关闭;
|
||||
只有本地授权同时匹配当前 Client ID、已保存 Android 设备且 live Adapter 就绪时才声明
|
||||
`purchase_mode=live`,否则声明 `dry_run` 且不能领取新建的 live 采购任务。领取响应必须先完整校验并
|
||||
写入 SQLite,Repository 提交成功后才能分派,避免任务已在 Admin 领取却在本地丢失。
|
||||
|
||||
中途 Admin 是否取消了这个任务、是否重派给了别人,Client 不查也不管,做完照样提交——
|
||||
@@ -437,7 +437,7 @@ PDD 页面可能出现登录失效、验证码、控件树不完整、A/B 页面
|
||||
4. 使用 Outbox 保证结果最终提交,并隔离“提交重试”与“业务重做”。
|
||||
5. MVP 单设备串行执行,不并行控制多个设备。
|
||||
6. 采集规格采用通用维度和 SKU 组合结构,不把模型锁死为颜色与尺码两个数组。
|
||||
7. MVP 采购默认演练模式,真实下单必须通过独立安全验收。
|
||||
7. Admin 新建采购任务固定为真实下单(不支付);Client 只有通过独立安全验收和本地设备绑定后才声明 live 能力。
|
||||
|
||||
## 11. 相关文档
|
||||
|
||||
|
||||
@@ -233,7 +233,7 @@ Client 的 `HttpAdminGateway.claim_next` 已实现本接口,并原样序列化
|
||||
|
||||
- `[必须]` 领取必须在 Admin 内部原子完成,一次调用最多返回一个任务。
|
||||
- `[必须]` Admin 不得向只声明 `dry_run` 的 Client 分配要求真实下单的任务。
|
||||
- `[必须]` `execution_mode` 只允许 `dry_run`、`live`。历史任务和缺省值都是 `dry_run`;Client 不得自行把模式从演练提升为真实。
|
||||
- `[必须]` `execution_mode` 只允许 `dry_run`、`live`。Admin Web 新建采购任务固定为 `live`;历史任务和接口缺省兼容值仍是 `dry_run`,Client 不得自行把模式从演练提升为真实。
|
||||
- `[必须]` 声明 `dry_run` 的 Client 只能领取 `dry_run`;声明 `live` 的 Client 可以领取两种模式。能力只缩小可领取范围,不修改任务模式。
|
||||
- `[必须]` 响应**不包含**租约。Client 拿到任务就开始做,做完再来领下一个。
|
||||
|
||||
|
||||
@@ -293,12 +293,12 @@ class TaskTableModel(QAbstractTableModel):
|
||||
- 最大重试次数;
|
||||
- 演练模式开关。
|
||||
|
||||
### 真实下单(不支付)
|
||||
### 真实采购授权(不支付)
|
||||
|
||||
- 默认关闭,并明确显示当前状态、绑定 Client、绑定 Android 设备和确认时间;
|
||||
- Admin 新建采购任务固定为 live;Client 本地授权默认关闭,并明确显示当前状态、绑定 Client、绑定 Android 设备和确认时间;
|
||||
- 只有输入完整确认文字“创建未付款订单”后才能启用,不能通过环境变量或调试参数开启;
|
||||
- 启用和关闭在后台线程保存,执行期间禁用重复操作,失败时保留原状态并说明恢复办法;
|
||||
- 启用仅代表允许创建一笔未付款订单,不允许自动付款;设备或 Client 绑定变化后自动降级为演练;
|
||||
- 启用仅代表允许创建一笔未付款订单,不允许自动付款;设备或 Client 绑定变化后撤销 live 能力并停止领取新采购任务;
|
||||
- 关闭操作始终可见,状态不能只用颜色表达。
|
||||
|
||||
### 安全与诊断
|
||||
|
||||
@@ -70,7 +70,7 @@ PDD 解析测试优先使用脱敏的 XML 固件,不要求每次连接真实
|
||||
|
||||
## 3. 采购安全门禁
|
||||
|
||||
真实下单开关默认关闭。全部满足后才能通过独立工单启用:
|
||||
Admin 新建采购任务固定为真实下单(不支付);Client 本地 live 授权仍默认关闭。全部满足后才能声明 live 能力并领取真实采购任务:
|
||||
|
||||
1. Admin 原子领取和结果幂等已经通过联合测试。
|
||||
2. Outbox 断网和重启恢复测试通过。
|
||||
@@ -81,7 +81,7 @@ PDD 解析测试优先使用脱敏的 XML 固件,不要求每次连接真实
|
||||
7. 演练模式在代表性商品和设备上通过验收。
|
||||
8. 操作人员明确确认真实下单范围和安全设置。
|
||||
|
||||
真实下单不得通过调试参数、默认配置或界面误操作意外开启。当前版本仅在设置页
|
||||
Client 本地 live 授权不得通过调试参数、默认配置或界面误操作意外开启。当前版本仅在设置页
|
||||
精确输入确认文字后保存授权,并绑定 Client ID 和已保存 Android 设备;任一绑定
|
||||
不一致都降级为 `purchase_mode=dry_run`。演练 Adapter 不提供提交方法,live Adapter
|
||||
只提供一次性提交方法,两者都不提供付款或取消订单方法。开发者不能把自动化测试
|
||||
|
||||
Reference in New Issue
Block a user