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
+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` 区分。