feat: 增加规格匹配建议与决策审计 (#90)
This commit is contained in:
@@ -219,6 +219,8 @@ PDD 商品之所以单独一个模块,是因为它在数据上就是**独立
|
||||
下次遇到同商品、同规格和同 PDD 商品时自动带出。
|
||||
- `[必须]` 该商品尚未采集(`skus_json` 为空)时,弹窗直接展示关联和创建采集任务入口,
|
||||
而不是显示一个空列表让人困惑。
|
||||
- 规则引擎只对可购买候选做 A/B/C/冲突分层和稳定排序;只有唯一、无额外维度歧义的 A 级才预选。
|
||||
- 预选不会自动保存或创建采购任务。页面必须显示推荐理由,采购员点击保存后才写映射和只追加的决策审计。
|
||||
|
||||
**创建采购任务:** 只有映射仍有效且没有进行中采购任务的行可勾选。确认弹窗要求
|
||||
选择当前账号可见的客户端,并逐行确认人民币价格上限;服务端仍按 §5 全量复核。
|
||||
|
||||
@@ -599,6 +599,38 @@ OptionKey(map[string]string{"size": "M", "color": "黑色"})
|
||||
只要有一点点不同(空格、转义、键序),映射就会静默对不上。
|
||||
**Client 只上报 `options` 对象,key 一律由 Admin 这一个函数算。**
|
||||
|
||||
### 6.3 `spec_mapping_decisions` 决策审计
|
||||
|
||||
本表只追加、不参与业务判断。每次成功保存映射时,与 `spec_mappings` 在同一事务写入;
|
||||
没有建议时 `suggested_option_key` 为 NULL 且 `accepted=0`。`accepted=0` 表示未采纳建议或当时无建议。
|
||||
|
||||
```sql
|
||||
CREATE TABLE spec_mapping_decisions (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
shopee_goods_id VARCHAR(191) COLLATE utf8mb4_bin NOT NULL,
|
||||
spec_key VARCHAR(191) COLLATE utf8mb4_bin NOT NULL,
|
||||
pdd_goods_id VARCHAR(191) COLLATE utf8mb4_bin NOT NULL,
|
||||
rules_version VARCHAR(32) NOT NULL,
|
||||
suggested_option_key VARCHAR(191) COLLATE utf8mb4_bin,
|
||||
chosen_option_key VARCHAR(191) COLLATE utf8mb4_bin NOT NULL,
|
||||
accepted TINYINT NOT NULL CHECK (accepted IN (0, 1)),
|
||||
decided_by VARCHAR(191),
|
||||
decided_at VARCHAR(35) NOT NULL,
|
||||
KEY idx_decisions_mapping (shopee_goods_id, spec_key, pdd_goods_id)
|
||||
);
|
||||
```
|
||||
|
||||
下面的指标只能称为“成功保存决策中的建议采纳率”,不是准确率:
|
||||
|
||||
```sql
|
||||
SELECT rules_version, COUNT(*) AS 有建议的决策数, SUM(accepted) AS 采纳数,
|
||||
ROUND(SUM(accepted) / COUNT(*) * 100, 1) AS 采纳率
|
||||
FROM spec_mapping_decisions WHERE suggested_option_key IS NOT NULL GROUP BY rules_version;
|
||||
|
||||
SELECT rules_version, COUNT(*) AS 无建议决策数
|
||||
FROM spec_mapping_decisions WHERE suggested_option_key IS NULL GROUP BY rules_version;
|
||||
```
|
||||
|
||||
## 7. `tasks` 任务
|
||||
|
||||
采集任务和采购任务共用一张表,用 `task_type` 区分。
|
||||
|
||||
@@ -519,6 +519,9 @@ HTML 片段,只替换弹窗内部的表格、总数和分页。主货运单表
|
||||
- 查询必须同时带当前 `pdd_goods_id`,并核对选项仍存在且可购买;换品或选项消失时回到待匹配。
|
||||
- 该商品**还没采集**(`skus_json` 为空)时,不要显示空下拉,直接展示关联和创建采集任务入口。
|
||||
- 保存写的是 `spec_mappings`(可复用),**不是这一张订单的临时数据**。
|
||||
- 候选按确定性 A/B/C/冲突规则稳定排序,界面不显示数字分数。只有唯一 A 级且无额外维度歧义时预选,但仍必须人工点“保存”。
|
||||
- `★ 建议` 同时显示码位、体重覆盖和主色等文字理由;保存按钮旁固定提示“请核对颜色、尺码和体重范围”。
|
||||
- 弹窗携带完整匹配上下文版本;顺运宝明细、PDD 关联/采集结果或规则版本改变后拒绝陈旧保存。
|
||||
|
||||
### 6.4 创建采购任务
|
||||
|
||||
|
||||
Reference in New Issue
Block a user