feat: 增加规格匹配建议与决策审计 (#90)

This commit is contained in:
chengma
2026-08-10 12:41:17 +08:00
parent 5abe81e128
commit 5a77bde534
15 changed files with 680 additions and 46 deletions
+2
View File
@@ -219,6 +219,8 @@ PDD 商品之所以单独一个模块,是因为它在数据上就是**独立
下次遇到同商品、同规格和同 PDD 商品时自动带出。
- `[必须]` 该商品尚未采集(`skus_json` 为空)时,弹窗直接展示关联和创建采集任务入口,
而不是显示一个空列表让人困惑。
- 规则引擎只对可购买候选做 A/B/C/冲突分层和稳定排序;只有唯一、无额外维度歧义的 A 级才预选。
- 预选不会自动保存或创建采购任务。页面必须显示推荐理由,采购员点击保存后才写映射和只追加的决策审计。
**创建采购任务:** 只有映射仍有效且没有进行中采购任务的行可勾选。确认弹窗要求
选择当前账号可见的客户端,并逐行确认人民币价格上限;服务端仍按 §5 全量复核。
+32
View File
@@ -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` 区分。
+3
View File
@@ -519,6 +519,9 @@ HTML 片段,只替换弹窗内部的表格、总数和分页。主货运单表
- 查询必须同时带当前 `pdd_goods_id`,并核对选项仍存在且可购买;换品或选项消失时回到待匹配。
- 该商品**还没采集**(`skus_json` 为空)时,不要显示空下拉,直接展示关联和创建采集任务入口。
- 保存写的是 `spec_mappings`(可复用),**不是这一张订单的临时数据**。
- 候选按确定性 A/B/C/冲突规则稳定排序,界面不显示数字分数。只有唯一 A 级且无额外维度歧义时预选,但仍必须人工点“保存”。
- `★ 建议` 同时显示码位、体重覆盖和主色等文字理由;保存按钮旁固定提示“请核对颜色、尺码和体重范围”。
- 弹窗携带完整匹配上下文版本;顺运宝明细、PDD 关联/采集结果或规则版本改变后拒绝陈旧保存。
### 6.4 创建采购任务