fix: 简化真实采购创建并恢复客户端选择 (#112)

This commit is contained in:
chengma
2026-08-10 18:15:28 +08:00
parent 40cd8afefd
commit a26219091a
14 changed files with 96 additions and 129 deletions
+9 -9
View File
@@ -234,9 +234,10 @@ PDD 商品之所以单独一个模块,是因为它在数据上就是**独立
- 规则引擎只对可购买候选做 A/B/C/冲突分层和稳定排序;只有唯一、无额外维度歧义的 A 级才预选。
- 预选不会自动保存或创建采购任务。页面必须显示推荐理由,采购员点击保存后才写映射和只追加的决策审计。
**创建采购任务:** 只有映射仍有效且没有进行中采购任务的行可勾选。确认弹窗只列出
当前账号可见、在线且声明 live 能力的客户端,并逐行确认人民币价格上限。新任务固定
为真实下单(不支付),弹窗始终要求风险复选和确认短语;服务端仍按 §5 全量复核。
**创建采购任务:** 只有映射仍有效且没有进行中采购任务的行可勾选。确认弹窗列出
当前账号可见的客户端:声明 live 的客户端可选择,暂时离线也可提前指派;非 live
客户端显示但禁用。新任务固定为真实下单(不支付),提交表单即表示创建真实采购任务,
不再额外要求风险复选框或确认短语;服务端仍按 §5 全量复核。
**底部状态条:** 最近同步时间、待匹配条数。
@@ -352,15 +353,14 @@ PDD 商品之所以单独一个模块,是因为它在数据上就是**独立
4. 数量大于 0;
5. **价格上限已填且大于 0** —— 默认从当前映射的 PDD 规格价格带出,操作员可改,但不允许为空;
6. 已选择分配的客户端;
7. 所选客户端存在、在线、在当前账号可见范围内,且声明 `purchase_mode=live`;
8. 已勾选真实下单风险确认并输入“创建未付款订单”;
9. 同一顺运宝明细没有 `pending` / `assigned` / `claimed` 的采购任务。
7. 所选客户端存在、在当前账号可见范围内,且声明 `purchase_mode=live`;暂时离线只影响领取时间,不阻止提前指派;
8. 同一顺运宝明细没有 `pending` / `assigned` / `claimed` 的采购任务。
Admin 新建采购任务固定使用不可变的 `execution_mode=live`,不向采购员提供模式选择:
- `live` 会创建真实未付款订单,管理员和其他正常状态用户均可创建,但必须勾选风险确认并输入“创建未付款订单”;
- 必须显式指定当前账号可见、在线且最后登记能力为 `purchase_mode=live` 的 Client;
- 创建时记录确认用户和确认时间。取消、重派和结果回传均不得修改执行模式。
- `live` 会创建真实未付款订单,管理员和其他正常状态用户均可创建;点击明确标注的创建按钮并提交表单即表示创建,不再要求额外复选框或确认短语;
- 必须显式指定当前账号可见且最后登记能力为 `purchase_mode=live` 的 Client;离线 live Client 可提前指派并在上线后领取;
- 创建时记录操作用户和操作时间。取消、重派和结果回传均不得修改执行模式。
- 数据库和 API 继续保留 `dry_run/live`,历史任务和缺省兼容值仍按 `dry_run`,不得批量升级历史任务。
第 5 条是硬要求:Client 契约规定采购任务必须带明确的价格保护
+4 -3
View File
@@ -686,11 +686,12 @@ CREATE INDEX idx_tasks_order ON tasks(order_no);
| 字段 | 含义 |
|---|---|
| `execution_mode` | `dry_run` / `live`,非空且默认 `dry_run`;创建后不可修改 |
| `live_confirmed_by` | 创建真实任务的正常状态 Admin 用户;演练任务必须为空 |
| `live_confirmed_at` | 真实任务阻断确认时间;演练任务必须为空 |
| `live_confirmed_by` | 提交创建真实任务的正常状态 Admin 用户;演练任务必须为空 |
| `live_confirmed_at` | 真实任务创建操作时间;演练任务必须为空 |
`chk_tasks_execution_mode` 和 `chk_tasks_live_confirmation` 在数据库层阻止非法模式及
缺少审计信息的真实任务;`idx_tasks_claim_mode` 支持按客户端能力领取。
缺少创建审计信息的真实任务;`idx_tasks_claim_mode` 支持按客户端能力领取。字段名保留
历史命名以兼容已发布的 v5 migration。
`[必须]` 两条硬约束,来自 [Client 契约](../client/04-admin-api-contract.md) §4:
+8 -7
View File
@@ -555,9 +555,10 @@ HTML 片段,只替换弹窗内部的表格、总数和分页。主货运单表
### 6.4 创建采购任务
只有“可创建采购任务”的行可勾选。勾选后打开服务端渲染的确认弹窗:选择当前账号
可见、在线且声明 live 能力的客户端,并逐行确认人民币价格上限。默认值来自映射规格
可见且声明 live 能力的客户端,并逐行确认人民币价格上限。离线 live Client 也可提前
指派,待其上线后领取;非 live Client 显示为禁用项并说明原因。默认价格来自映射规格
的 PDD 采集价;没有价格时留空强制填写。新任务固定为真实下单(不支付),不显示执行
模式选择;风险说明、复选确认和“创建未付款订单”确认短语始终显示。
模式选择,也不再要求额外风险复选框、确认短语或浏览器二次确认。
每条确认行同时显示顺运宝规格原文和当前映射的唯一 PDD 规格组合。价格输入只对应该
组合中的选定颜色,不显示同一 PDD 商品的其他颜色或价格。批量创建时每条顺运宝明细
@@ -576,15 +577,15 @@ HTML 片段,只替换弹窗内部的表格、总数和分页。主货运单表
· SO-...-009 规格未匹配
```
`[必须]` 创建前弹出确认框,让操作员选**分配给哪个 live 在线客户端**,并确认价格上限。
`[必须]` 创建前弹出确认框,让操作员选**分配给哪个 live Client**,并确认价格上限。
价格上限默认从当前映射的 PDD 规格采集价带出,可改,**不允许为空**。
可采购行的“下一步”显示“创建采购任务”。点击后复用同一个确认弹窗并只带入当前明细,
不改变表格复选框状态;顶部批量入口仍按已勾选明细打开。每次打开确认弹窗都清空
上一次未提交的风险复选和确认短语。客户端选项只显示名称和 Client ID,不显示“在线、
仅演练/支持真实下单”等模式文字;没有符合条件的 Client 时禁用提交并说明原因。已有未
不改变表格复选框状态;顶部批量入口仍按已勾选明细打开。客户端选项显示名称和 Client
ID;live Client 可选择且只有一个时自动选中,非 live Client 显示“未启用真实采购”并
禁用。没有符合条件的 Client 时禁用提交并说明如何在 Client 设置页启用。已有未
结束任务的行显示“查看采购任务”并进入“采集采购”页,不得再次创建。服务端仍必须重新
校验映射、数量、人民币价格上限、客户端权限、固定 live 模式、确认信息和重复任务,不能
校验映射、数量、人民币价格上限、客户端权限、固定 live 模式、创建审计和重复任务,不能
信任列表页的旧状态。